Compare commits

...
42 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
OM 96bf729c54 (reverted to previous version number) 2023-05-22 02:20:33 +02:00
OM edcf521506 Patch number incremented 2023-05-22 02:16:56 +02:00
OM 9e7991f4b1 Load JPEG before TGA 2023-05-22 02:16:21 +02:00
OM 86e7a24b38 Fixed a nasty bug that can freeze/crash the game 2023-05-22 01:59:06 +02:00
OM ff587a8444 Health draw fix 2023-05-22 01:58:51 +02:00
OM c3e98ed681 Fixed **CG_DrawSpectatorView** for Spearhead and Breakthrough 2023-05-22 01:50:53 +02:00
OM cc2d698fe2 Scoreboard fix for Spearhead and Breakthrough 2023-05-22 01:45:09 +02:00
OM 420161095f Parse **CS_PLAYERS** 2023-05-22 01:44:59 +02:00
OM 58b0d335e7 Implemented **CG_PlayerTeamUpdate** 2023-05-22 01:44:35 +02:00
OM ce336e8962 Userinfo was never updating 2023-05-22 01:44:19 +02:00
OM 5b72eb189a pm_flags fix on SH/BT 2023-05-22 01:44:01 +02:00
OM 7600d3ca02 Fixed localization returning the same buffer 2023-05-22 01:43:52 +02:00
OM 8c3be9d549 Changed version number to reflect the fix 2023-05-21 22:55:38 +02:00
OM 2ddb534321 Updated LAYOUT.md 2023-05-21 22:55:13 +02:00
OM 21a1f61b04 small fix 2023-05-21 22:39:26 +02:00
OM 7219848655 Increased **MAX_GAMESTATE_CHARS** (41952 on Breakthrough) 2023-05-21 22:31:19 +02:00
OM 4695449fc7 Added a documentation on compiling for Spearhead or Breakthrough 2023-05-21 22:30:51 +02:00
OM af3dd2602b Compilation warnings fixes 2023-05-21 22:30:35 +02:00
54 changed files with 1890 additions and 585 deletions

No files matched your search

+2
View File
@@ -1,4 +1,6 @@
build
mohaa-re
out
Makefile.local
*.swp
*tags
+4 -3
View File
@@ -2,22 +2,23 @@
| Path | Description |
| ---------------------|-------------------------------------------------------------------
| build/ | Output files |
| code/ | OpenMoHAA source code |
| code/cgame | Client game code |
| code/client | Client (network stuff, snapshots, etc) |
| code/game | Server game code (game logic stuff, etc) |
| code/gamespy | Gamespy SDK |
| code/mohui | MoHAA User Interface |
| code/null | Null redirector (used by the OpenMoHAA Dedicated Server) |
| code/parser | Flex/Bison parser |
| code/qcommon | Global shared stuff such as maths |
| code/renderer | OpenMoHAA renderer |
| code/sdl(12) | SDL code |
| code/script | Script engine |
| code/server | Server code (networkn snapshots, handling clients etc) |
| code/server | Server code (network, snapshots, handling clients etc) |
| code/skeletor | Skeleton model engine |
| code/sys | Main application system |
| code/tiki | Complete TIKI engine |
| code/uilib | UI library (Ubertools stuff) |
| code/{win32,unix} | Platform-specific code |
| docker | Docker files, for compiling on various linux versions |
| docs | Documentation stuff |
| misc/ | Project stuff, definition files and various resources stuff. |
+8 -4
View File
@@ -41,7 +41,7 @@ Here is the current working state for each part of the engine:
| Server module (fgame) | | x | | | | | Actor, vehicle, and few gameplay bugs |
| UI | | | | x | | | Has core features only (menu, widgets, console, hud, urc loading) |
NOTE: Both client and server version can be compiled to target **Medal of Honor: Spearhead* and **Medal of Honor: Breakthrough**.
NOTE: Both client and server version can be compiled to target **Medal of Honor: Spearhead** and **Medal of Honor: Breakthrough**.
## Running
@@ -74,6 +74,8 @@ The installation directory can be set to MOHAA directory.
The client build can be built by adding `-DWITH_CLIENT=1` to the CMake command line. This will compile the cgame module and the full app with rendering, ui and sound suppport, alongside the dedicated server version.
To compile for either Spearhead or Breakthrough, append `-DTARGET_GAME_TYPE=x` where x can be 1 for Team Assault (Spearhead), and 2 for Team Tactics (Breakthrough). 2 is recommended because Team Tactics can connect to both Spearhead and Breakthrough servers.
### Linux
These are the tools required on Unix :
@@ -89,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;
}
+142 -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;
}
@@ -1023,6 +1041,118 @@ void CG_DrawInstantMessageMenu()
cgi.R_DrawStretchPic(x, y, w, h, 0.0, 0.0, 1.0, 1.0, handle);
}
#if TARGET_GAME_PROTOCOL >= 15
void CG_DrawSpectatorView()
{
const char* pszString;
int iKey1, iKey2;
int iKey1b, iKey2b;
float fX, fY;
qboolean bOnTeam;
if (!(cg.predicted_player_state.pm_flags & PMF_SPECTATING)) {
return;
}
bOnTeam = qfalse;
if (cg.snap->ps.stats[STAT_TEAM] == TEAM_ALLIES || cg.snap->ps.stats[STAT_TEAM] == TEAM_AXIS) {
bOnTeam = 1;
}
if (!bOnTeam)
{
cgi.Key_GetKeysForCommand("+attackprimary", &iKey1, &iKey2);
pszString = cgi.LV_ConvertString(va("Press Fire(%s) to join the battle!", cgi.Key_KeynumToBindString(iKey1)));
fX = (float)(cgs.glconfig.vidWidth - cgi.UI_FontStringWidth(cgs.media.attackerFont, pszString, -1)) * 0.5;
fY = cgs.glconfig.vidHeight - 64.0;
cgi.R_SetColor(NULL);
cgi.R_DrawString(cgs.media.attackerFont, pszString, fX, fY, -1, qfalse);
}
if (cg.predicted_player_state.pm_flags & PMF_CAMERA_VIEW)
{
cgi.Key_GetKeysForCommand("+moveup", &iKey1, &iKey2);
cgi.Key_GetKeysForCommand("+movedown", &iKey1b, &iKey2b);
pszString = cgi.LV_ConvertString(
va(
"Press Jump(%s) or Duck(%s) to follow a different player.",
cgi.Key_KeynumToBindString(iKey1),
cgi.Key_KeynumToBindString(iKey1b)
)
);
fX = (float)(cgs.glconfig.vidWidth - cgi.UI_FontStringWidth(cgs.media.attackerFont, pszString, -1)) * 0.5;
fY = (float)cgs.glconfig.vidHeight - 40.0;
cgi.R_SetColor(0);
cgi.R_DrawString(cgs.media.attackerFont, pszString, fX, fY, -1, 0);
}
if (!bOnTeam && (cg.predicted_player_state.pm_flags & PMF_CAMERA_VIEW))
{
cgi.Key_GetKeysForCommand("+use", &iKey1, &iKey2);
pszString = cgi.LV_ConvertString(va("Press Use(%s) to enter free spectate mode.", cgi.Key_KeynumToBindString(iKey1)));
fX = (float)(cgs.glconfig.vidWidth - cgi.UI_FontStringWidth(cgs.media.attackerFont, pszString, -1)) * 0.5;
fY = (float)cgs.glconfig.vidHeight - 24.0;
cgi.R_SetColor(0);
cgi.R_DrawString(cgs.media.attackerFont, pszString, fX, fY, -1, 0);
}
if (!(cg.predicted_player_state.pm_flags & PMF_CAMERA_VIEW)) {
cgi.Key_GetKeysForCommand("+use", &iKey1, &iKey2);
pszString = cgi.LV_ConvertString(
va(
"Press Use(%s) to enter player following spectate mode.",
cgi.Key_KeynumToBindString(iKey1)
)
);
fX = (float)(cgs.glconfig.vidWidth - cgi.UI_FontStringWidth(cgs.media.attackerFont, pszString, -1)) * 0.5;
fY = (float)cgs.glconfig.vidHeight - 24.0;
cgi.R_SetColor(0);
cgi.R_DrawString(cgs.media.attackerFont, pszString, fX, fY, -1, 0);
}
if ((cg.predicted_player_state.pm_flags & 0x80) != 0 && cg.snap && cg.snap->ps.stats[STAT_INFOCLIENT] != -1)
{
int iClientNum;
qhandle_t hShader;
vec4_t color;
char buf[128];
iClientNum = cg.snap->ps.stats[STAT_INFOCLIENT];
sprintf(buf, "%s : %i", cg.clientinfo[iClientNum].name, cg.snap->ps.stats[STAT_INFOCLIENT_HEALTH]);
color[0] = 0.5;
color[1] = 1.0;
color[2] = 0.5;
color[3] = 1.0;
fX = (float)(cgs.glconfig.vidWidth - cgi.UI_FontStringWidth(cgs.media.attackerFont, pszString, -1) - 16) * 0.5;
fY = (float)cgs.glconfig.vidHeight - 80.0;
cgi.R_SetColor(color);
cgi.R_DrawString(cgs.media.attackerFont, buf, fX, fY, -1, 0);
if (cg.clientinfo[iClientNum].team == TEAM_ALLIES) {
hShader = cgi.R_RegisterShader("textures/hud/allies");
} else if (cg.clientinfo[iClientNum].team == TEAM_AXIS) {
hShader = cgi.R_RegisterShader("textures/hud/axis");
}
if (hShader)
{
fX -= 20.0;
cgi.R_SetColor(NULL);
cgi.R_DrawStretchPic(fX, fY, 16.0, 16.0, 0.0, 0.0, 1.0, 1.0, hShader);
}
}
}
#else
void CG_DrawSpectatorView()
{
const char* pszString;
@@ -1083,6 +1213,8 @@ void CG_DrawSpectatorView()
}
}
#endif
/*
==============
CG_Draw2D
+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;
+5 -4
View File
@@ -160,6 +160,7 @@ typedef struct markPoly_s
#define MAX_CUSTOM_SOUNDS 32
typedef struct {
int team;
char name[64];
} clientInfo_t;
typedef struct cobjective_s {
@@ -301,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;
@@ -311,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];
@@ -809,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 );
+19
View File
@@ -373,6 +373,25 @@ void CG_ProcessConfigString(int num)
{
CG_SetLightStyle(num - CS_LIGHTSTYLES, str);
}
else if (num >= CS_PLAYERS && num < CS_PLAYERS + MAX_CLIENTS)
{
const char* value;
value = Info_ValueForKey(str, "name");
if (value) {
strncpy(cg.clientinfo[num - CS_PLAYERS].name, value, sizeof(cg.clientinfo[num - CS_PLAYERS].name));
}
else {
strncpy(cg.clientinfo[num - CS_PLAYERS].name, "UnnamedSoldier", sizeof(cg.clientinfo[num - CS_PLAYERS].name));
}
value = Info_ValueForKey(str, "team");
if (value) {
cg.clientinfo[num - CS_PLAYERS].team = atoi(value);
} else {
cg.clientinfo[num - CS_PLAYERS].team = TEAM_NONE;
}
}
}
//===================================================================================
+177
View File
@@ -28,6 +28,183 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
void CG_PlayerTeamUpdate(refEntity_t* pModel, entityState_t* pPlayerState)
{
qboolean bInArtillery, bInTeam, bSpecialIcon;
#if TARGET_GAME_PROTOCOL < 15
if (pPlayerState->eFlags & EF_ALLIES)
{
cg.clientinfo[pPlayerState->number].team = TEAM_ALLIES;
} else if (pPlayerState->eFlags & EF_AXIS) {
cg.clientinfo[pPlayerState->number].team = TEAM_AXIS;
} else {
cg.clientinfo[pPlayerState->number].team = TEAM_NONE;
}
#endif
if (pPlayerState->number == cg.snap->ps.clientNum) {
return;
}
bInTeam = qfalse;
bSpecialIcon = qfalse;
if (cgs.gametype > GT_FFA
&& (cg.snap->ps.stats[STAT_TEAM] == TEAM_ALLIES && (pPlayerState->eFlags & EF_ALLIES)
|| cg.snap->ps.stats[STAT_TEAM] == TEAM_AXIS && (pPlayerState->eFlags & EF_AXIS)
|| cg.snap->ps.stats[STAT_TEAM] != TEAM_AXIS && cg.snap->ps.stats[STAT_TEAM] != TEAM_ALLIES && (pPlayerState->eFlags & EF_ANY_TEAM) != 0))
{
bInTeam = qtrue;
}
if (cgs.gametype <= GT_FFA) {
return;
}
bInArtillery = qfalse;
if (pPlayerState->eFlags & EF_PLAYER_ARTILLERY) {
bInArtillery = qtrue;
}
if (bInTeam || (pPlayerState->eFlags & (EF_PLAYER_IN_MENU | EF_PLAYER_TALKING)) || bInArtillery)
{
int i;
int iTag;
float fAlpha;
float fDist;
vec3_t vTmp;
refEntity_t iconEnt;
memset(&iconEnt, 0, sizeof(iconEnt));
if ((pPlayerState->eFlags & EF_PLAYER_TALKING) != 0 && ((cg.time >> 8) & 1) != 0)
{
iconEnt.hModel = cgi.R_RegisterModel("textures/hud/talking_headicon.spr");
bSpecialIcon = 1;
}
else if ((pPlayerState->eFlags & EF_PLAYER_IN_MENU) != 0)
{
iconEnt.hModel = cgi.R_RegisterModel("textures/hud/inmenu_headicon.spr");
bSpecialIcon = 1;
}
else
{
if (!bInTeam) {
return;
}
if (bInArtillery)
{
iconEnt.hModel = cgi.R_RegisterModel("textures/hud/inmenu_artilleryicon.spr");
bSpecialIcon = qtrue;
}
else if ((pPlayerState->eFlags & 0x80) != 0)
{
iconEnt.hModel = cgi.R_RegisterModel("textures/hud/allies_headicon.spr");
}
else
{
iconEnt.hModel = cgi.R_RegisterModel("textures/hud/axis_headicon.spr");
}
}
memset(vTmp, 0, sizeof(vTmp));
AnglesToAxis(vTmp, iconEnt.axis);
iconEnt.scale = 0.5;
iconEnt.renderfx = 0;
iconEnt.reType = RT_SPRITE;
iconEnt.shaderTime = 0.0;
iconEnt.frameInfo[0].index = 0;
iconEnt.shaderRGBA[0] = -1;
iconEnt.shaderRGBA[1] = -1;
iconEnt.shaderRGBA[2] = -1;
VectorCopy(pModel->origin, iconEnt.origin);
iTag = cgi.Tag_NumForName(pModel->tiki, "eyes bone");
if (iTag == -1)
{
iconEnt.origin[2] = iconEnt.origin[2] + 96.0;
}
else
{
orientation_t oEyes = cgi.TIKI_Orientation(pModel, iTag);
for (i = 0; i < 3; ++i) {
VectorMA(iconEnt.origin, oEyes.origin[i], pModel->axis[i], iconEnt.origin);
}
iconEnt.origin[2] = iconEnt.origin[2] + 20.0;
}
VectorSubtract(iconEnt.origin, cg.refdef.vieworg, vTmp);
fDist = VectorLength(vTmp);
if (fDist >= 256)
{
if (fDist > 512.0) {
iconEnt.scale = (fDist - 512.0) / 2560.0 + 0.5;
}
}
else
{
iconEnt.scale = fDist / 853.0 + 0.2;
}
if (iconEnt.scale > 1.0) {
iconEnt.scale = 1.0;
}
if (fDist > 256.0) {
fAlpha = 1.0;
}
else if (fDist >= 72.0) {
fAlpha = (fDist - 72.0) / 184.0;
}
else {
fAlpha = 0.0;
}
if (cg.snap->ps.stats[STAT_TEAM] == 4 || cg.snap->ps.stats[STAT_TEAM] == 3) {
fAlpha = fAlpha * 0.65;
}
else {
fAlpha = fAlpha * 0.4;
}
if (bSpecialIcon)
{
int value = (int)((fAlpha + 0.60000002) * 255.0);
if (value > 255) value = 255;
iconEnt.shaderRGBA[3] = value;
}
else
{
iconEnt.shaderRGBA[3] = (int)(fAlpha * 255.0);
}
if (fAlpha > 0.0 || bSpecialIcon)
{
if (bSpecialIcon)
{
VectorMA(iconEnt.origin, -2.0, cg.refdef.viewaxis[0], iconEnt.origin);
iconEnt.scale = iconEnt.scale + 0.05;
}
cgi.R_AddRefSpriteToScene(&iconEnt);
if (bSpecialIcon && bInTeam && fAlpha > 0.0)
{
if (pPlayerState->eFlags & EF_ALLIES) {
iconEnt.hModel = cgi.R_RegisterModel("textures/hud/allies_headicon.spr");
}
else {
iconEnt.hModel = cgi.R_RegisterModel("textures/hud/axis_headicon.spr");
}
VectorMA(iconEnt.origin, 4.0, cg.refdef.viewaxis[0], iconEnt.origin);
iconEnt.scale = iconEnt.scale - 0.1;
iconEnt.shaderRGBA[3] = (int)(fAlpha * 255.0);
cgi.R_AddRefSpriteToScene(&iconEnt);
}
}
}
// FIXME: unimplemented
}
+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 {
+1 -1
View File
@@ -404,7 +404,7 @@ typedef struct {
// FIXME
//prof_cgame_t* profStruct;
qboolean (*CG_Command_ProcessFile)(char* name, qboolean quiet, dtiki_t* curTiki);
qboolean (*CG_Command_ProcessFile)(const char* name, qboolean quiet, dtiki_t* curTiki);
} clientGameExport_t;
+428 -72
View File
@@ -54,63 +54,419 @@ int CG_GetScoreBoardDrawHeader()
return 0;
}
const char* CG_GetColumnName(int iColumnNum, int* iColumnWidth)
{
int iReturnWidth;
const char* pszReturnString;
switch (iColumnNum) {
case 0:
iReturnWidth = 128;
pszReturnString = "Name";
break;
case 1:
iReturnWidth = 64;
pszReturnString = "Kills";
break;
case 2:
iReturnWidth = 64;
pszReturnString = "Deaths";
if (cgs.gametype > GT_TEAM) {
pszReturnString = "Total";
}
break;
case 3:
iReturnWidth = 64;
pszReturnString = "Time";
break;
case 4:
iReturnWidth = 64;
pszReturnString = "Ping";
break;
default:
iReturnWidth = 0;
pszReturnString = 0;
break;
}
if (iColumnWidth) {
*iColumnWidth = iReturnWidth;
}
return pszReturnString;
}
void CG_PrepScoreBoardInfo()
{
switch (cgs.gametype) {
switch (cgs.gametype) {
case GT_TEAM_ROUNDS:
strcpy(cg.scoresMenuName, "DM_Round_Scoreboard");
break;
case GT_OBJECTIVE:
strcpy(cg.scoresMenuName, "Obj_Scoreboard");
break;
case GT_TEAM_ROUNDS:
strcpy(cg.scoresMenuName, "DM_Round_Scoreboard");
break;
break;
case GT_TOW:
strcpy(cg.scoresMenuName, "Tow_Scoreboard");
break;
case GT_LIBERATION:
strcpy(cg.scoresMenuName, "Lib_Scoreboard");
break;
default:
strcpy(cg.scoresMenuName, "DM_Scoreboard");
break;
}
}
#if TARGET_GAME_PROTOCOL >= 15
const char* CG_GetColumnName(int iColumnNum, int* iColumnWidth)
{
int iReturnWidth;
const char* pszReturnString;
switch (iColumnNum) {
case 0:
iReturnWidth = 24;
pszReturnString = "#";
break;
case 1:
iReturnWidth = 128;
pszReturnString = "Name";
break;
case 2:
iReturnWidth = 64;
pszReturnString = "Kills";
break;
case 3:
iReturnWidth = 64;
pszReturnString = "Deaths";
if (cgs.gametype > GT_TEAM) {
pszReturnString = "Total";
}
break;
case 4:
iReturnWidth = 64;
pszReturnString = "Time";
break;
case 5:
iReturnWidth = 64;
pszReturnString = "Ping";
break;
default:
iReturnWidth = 0;
pszReturnString = 0;
break;
}
if (iColumnWidth) {
*iColumnWidth = iReturnWidth;
}
return pszReturnString;
}
void CG_ParseScores()
{
int i;
int iEntryCount;
int iClientTeam, iClientNum;
int iDatumCount;
int iMatchTeam;
int iCurrentEntry;
qboolean bIsDead, bIsHeader;
char szString2[MAX_STRING_TOKENS];
char szString3[MAX_STRING_TOKENS];
char szString4[MAX_STRING_TOKENS];
char szString5[MAX_STRING_TOKENS];
char szString6[MAX_STRING_TOKENS];
char szString7[MAX_STRING_TOKENS];
float vSameTeamTextColor[4];
float vSameTeamBackColor[4];
float vOtherTeamTextColor[4];
float vOtherTeamBackColor[4];
float vNoTeamTextColor[4];
float vNoTeamBackColor[4];
float vThisClientTextColor[4];
float vThisClientBackColor[4];
float vDeadTextColorDead[4];
float* pItemTextColor;
float* pItemBackColor;
iMatchTeam = -1;
vSameTeamTextColor[0] = 1.0f;
vSameTeamTextColor[1] = 1.0f;
vSameTeamTextColor[2] = 1.0f;
vSameTeamTextColor[3] = 1.0f;
vSameTeamBackColor[0] = 0.1f;
vSameTeamBackColor[1] = 0.5f;
vSameTeamBackColor[2] = 0.1f;
vSameTeamBackColor[3] = 0.4f;
vOtherTeamTextColor[0] = 1.0f;
vOtherTeamTextColor[1] = 1.0f;
vOtherTeamTextColor[2] = 1.0f;
vOtherTeamTextColor[3] = 1.0f;
vOtherTeamBackColor[0] = 0.5f;
vOtherTeamBackColor[1] = 0.1f;
vOtherTeamBackColor[2] = 0.1f;
vOtherTeamBackColor[3] = 0.4f;
vNoTeamTextColor[0] = 1.0f;
vNoTeamTextColor[1] = 1.0f;
vNoTeamTextColor[2] = 1.0f;
vNoTeamTextColor[3] = 1.0f;
vNoTeamBackColor[0] = 0.1f;
vNoTeamBackColor[1] = 0.1f;
vNoTeamBackColor[2] = 0.1f;
vNoTeamBackColor[3] = 0.4f;
vDeadTextColorDead[0] = 1.0f;
vDeadTextColorDead[1] = 0.1f;
vDeadTextColorDead[2] = 0.1f;
vDeadTextColorDead[3] = 1.0f;
vThisClientTextColor[0] = 0.0f;
vThisClientTextColor[1] = 0.0f;
vThisClientTextColor[2] = 0.0f;
vThisClientTextColor[3] = 1.0f;
if (cgs.gametype > GT_FFA)
{
vThisClientBackColor[0] = 0.5f;
vThisClientBackColor[1] = 0.75f;
vThisClientBackColor[2] = 0.5f;
}
else
{
vThisClientBackColor[0] = 0.75f;
vThisClientBackColor[1] = 0.75f;
vThisClientBackColor[2] = 0.75f;
}
vThisClientBackColor[3] = 0.8f;
iCurrentEntry = 1;
if (cgs.gametype > GT_FFA)
{
iDatumCount = 6;
iMatchTeam = cg.snap->ps.stats[STAT_TEAM];
if (iMatchTeam != TEAM_ALLIES && iMatchTeam != TEAM_AXIS)
{
iMatchTeam = TEAM_ALLIES;
vThisClientTextColor[0] = 0.0f;
vThisClientTextColor[1] = 0.0f;
vThisClientTextColor[2] = 0.0f;
vThisClientBackColor[0] = 0.75f;
vThisClientBackColor[1] = 0.75f;
vThisClientBackColor[2] = 0.75f;
}
}
else
{
// free-for-all
iDatumCount = 5;
}
iEntryCount = atoi(cgi.Argv(iCurrentEntry++));
if (iEntryCount > MAX_CLIENTS) {
iEntryCount = MAX_CLIENTS;
}
if (cgs.gametype == GT_TOW)
{
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", (int)atof(cgi.Argv(iCurrentEntry++))));
cgi.Cvar_Set("scoreboard_toggle2", va("%i", (int)atof(cgi.Argv(iCurrentEntry++))));
}
for (i = 0; i < iEntryCount; ++i)
{
bIsHeader = qfalse;
if (cgs.gametype > GT_FFA)
{
iClientNum = atoi(cgi.Argv(iCurrentEntry + iDatumCount * i));
iClientTeam = atoi(cgi.Argv(1 + iCurrentEntry + iDatumCount * i));
if (iClientTeam >= 0) {
bIsDead = qfalse;
}
else {
bIsDead = qtrue;
iClientTeam = -iClientTeam;
}
if (iClientNum == -1)
{
szString2[0] = 0;
bIsHeader = qtrue;
switch (iClientTeam)
{
case 1:
strcpy(szString3, cgi.LV_ConvertString("Spectators"));
break;
case 2:
strcpy(szString3, cgi.LV_ConvertString("Free-For-Allers"));
break;
case 3:
sprintf(
szString3,
"%s - %d %s",
cgi.LV_ConvertString("Allies"),
atoi(cgi.Argv(2 + iCurrentEntry + iDatumCount * i)),
cgi.LV_ConvertString("Players")
);
iCurrentEntry++;
break;
case 4:
sprintf(
szString3,
"%s - %d %s",
cgi.LV_ConvertString("Axis"),
atoi(cgi.Argv(2 + iCurrentEntry + iDatumCount * i)),
cgi.LV_ConvertString("Players")
);
iCurrentEntry++;
break;
default:
strcpy(szString3, cgi.LV_ConvertString("No Team"));
break;
}
}
else if (iClientNum == -2)
{
// spectating
szString2[0] = 0;
szString3[0] = 0;
}
else
{
strcpy(szString2, va("%i", iClientNum));
strcpy(szString3, cg.clientinfo[iClientNum].name);
}
strcpy(szString4, cgi.Argv(2 + iCurrentEntry + iDatumCount * i));
strcpy(szString5, cgi.Argv(3 + iCurrentEntry + iDatumCount * i));
strcpy(szString6, cgi.Argv(4 + iCurrentEntry + iDatumCount * i));
strcpy(szString7, cgi.Argv(5 + iCurrentEntry + iDatumCount * i));
if (cgs.gametype >= GT_TEAM_ROUNDS && iClientNum == -1 && iClientTeam == TEAM_ALLIES || iClientTeam == TEAM_AXIS)
{
strcat(szString4, va(" %s", cgi.LV_ConvertString("Wins")));
szString5[0] = 0;
}
if (iClientNum == cg.snap->ps.clientNum)
{
pItemTextColor = vThisClientTextColor;
pItemBackColor = vThisClientBackColor;
}
else if (iClientNum == -2)
{
pItemTextColor = vNoTeamTextColor;
pItemBackColor = vNoTeamBackColor;
}
else if (iClientTeam == TEAM_ALLIES || iClientTeam == TEAM_AXIS)
{
if (iClientTeam == iMatchTeam)
{
pItemTextColor = vSameTeamTextColor;
pItemBackColor = vSameTeamBackColor;
}
else
{
pItemTextColor = vOtherTeamTextColor;
pItemBackColor = vOtherTeamBackColor;
}
}
else
{
pItemTextColor = vNoTeamTextColor;
pItemBackColor = vNoTeamBackColor;
}
if (bIsDead) {
pItemTextColor = vDeadTextColorDead;
}
}
else
{
iClientNum = atoi(cgi.Argv(iDatumCount * i));
if (iClientNum >= 0)
{
strcpy(szString2, va("%i", iClientNum));
strcpy(szString3, cg.clientinfo[iClientNum].name);
strcpy(szString4, cgi.Argv(1 + iCurrentEntry + iDatumCount * i));
strcpy(szString5, cgi.Argv(2 + iCurrentEntry + iDatumCount * i));
strcpy(szString6, cgi.Argv(3 + iCurrentEntry + iDatumCount * i));
strcpy(szString7, cgi.Argv(4 + iCurrentEntry + iDatumCount * i));
}
else
{
szString2[0] = 0;
if (iClientNum == -3)
{
strcpy(szString2, cgi.LV_ConvertString("Players"));
bIsHeader = qtrue;
}
else if (iClientNum == -2)
{
strcpy(szString2, cgi.LV_ConvertString("Spectators"));
bIsHeader = qtrue;
}
else
{
// unknown
szString3[0] = 0;
}
szString4[0] = 0;
szString5[0] = 0;
szString6[0] = 0;
szString7[0] = 0;
}
if (iClientNum == cg.snap->ps.clientNum)
{
pItemTextColor = vThisClientTextColor;
pItemBackColor = vThisClientBackColor;
}
else
{
pItemTextColor = vNoTeamTextColor;
pItemBackColor = vNoTeamBackColor;
}
}
cgi.UI_SetScoreBoardItem(
i,
szString2,
szString3,
szString4,
szString5,
szString6,
szString7,
NULL,
NULL,
pItemTextColor,
pItemBackColor,
bIsHeader
);
}
cgi.UI_DeleteScoreBoardItems(iEntryCount);
}
#else
const char* CG_GetColumnName(int iColumnNum, int* iColumnWidth)
{
int iReturnWidth;
const char* pszReturnString;
switch (iColumnNum) {
case 0:
iReturnWidth = 128;
pszReturnString = "Name";
break;
case 1:
iReturnWidth = 64;
pszReturnString = "Kills";
break;
case 2:
iReturnWidth = 64;
pszReturnString = "Deaths";
if (cgs.gametype > GT_TEAM) {
pszReturnString = "Total";
}
break;
case 3:
iReturnWidth = 64;
pszReturnString = "Time";
break;
case 4:
iReturnWidth = 64;
pszReturnString = "Ping";
break;
default:
iReturnWidth = 0;
pszReturnString = 0;
break;
}
if (iColumnWidth) {
*iColumnWidth = iReturnWidth;
}
return pszReturnString;
}
void CG_ParseScores()
{
int i;
@@ -118,13 +474,13 @@ void CG_ParseScores()
int iClientTeam, iClientNum;
int iDatumCount;
int iMatchTeam;
int iCurrentEntry;
qboolean bIsDead, bIsHeader;
char szString2[MAX_STRING_TOKENS];
char szString3[MAX_STRING_TOKENS];
char szString4[MAX_STRING_TOKENS];
char szString5[MAX_STRING_TOKENS];
char szString6[MAX_STRING_TOKENS];
const char* pszClientInfo;
float vSameTeamTextColor[4];
float vSameTeamBackColor[4];
float vOtherTeamTextColor[4];
@@ -187,6 +543,7 @@ void CG_ParseScores()
vThisClientBackColor[3] = 0.8f;
iCurrentEntry = 1;
if (cgs.gametype > GT_FFA)
{
iDatumCount = 6;
@@ -208,7 +565,7 @@ void CG_ParseScores()
iDatumCount = 5;
}
iEntryCount = atoi(cgi.Argv(1));
iEntryCount = atoi(cgi.Argv(iCurrentEntry++));
if (iEntryCount > MAX_CLIENTS) {
iEntryCount = MAX_CLIENTS;
}
@@ -218,8 +575,8 @@ void CG_ParseScores()
bIsHeader = qfalse;
if (cgs.gametype > GT_FFA)
{
iClientNum = atoi(cgi.Argv(2 + iDatumCount * i));
iClientTeam = atoi(cgi.Argv(3 + iDatumCount * i));
iClientNum = atoi(cgi.Argv(iCurrentEntry + iDatumCount * i));
iClientTeam = atoi(cgi.Argv(1 + iCurrentEntry + iDatumCount * i));
if (iClientTeam >= 0) {
bIsDead = qfalse;
}
@@ -235,19 +592,19 @@ void CG_ParseScores()
switch (iClientTeam)
{
case 1:
strcpy(szString2, "Spectators");
strcpy(szString2, cgi.LV_ConvertString("Spectators"));
break;
case 2:
strcpy(szString2, "Free-For-Allers");
strcpy(szString2, cgi.LV_ConvertString("Free-For-Allers"));
break;
case 3:
strcpy(szString2, "Allies");
strcpy(szString2, cgi.LV_ConvertString("Allies"));
break;
case 4:
strcpy(szString2, "Axis");
strcpy(szString2, cgi.LV_ConvertString("Axis"));
break;
default:
strcpy(szString2, "No Team");
strcpy(szString2, cgi.LV_ConvertString("No Team"));
break;
}
}
@@ -257,15 +614,14 @@ void CG_ParseScores()
szString2[0] = 0;
}
else
{
pszClientInfo = CG_ConfigString(CS_PLAYERS + iClientNum);
strcpy(szString2, Info_ValueForKey(pszClientInfo, "name"));
{
strcpy(szString2, cg.clientinfo[iClientNum].name);
}
strcpy(szString3, cgi.Argv(4 + iDatumCount * i));
strcpy(szString4, cgi.Argv(5 + iDatumCount * i));
strcpy(szString5, cgi.Argv(6 + iDatumCount * i));
strcpy(szString6, cgi.Argv(7 + iDatumCount * i));
strcpy(szString3, cgi.Argv(2 + iCurrentEntry + iDatumCount * i));
strcpy(szString4, cgi.Argv(3 + iCurrentEntry + iDatumCount * i));
strcpy(szString5, cgi.Argv(4 + iCurrentEntry + iDatumCount * i));
strcpy(szString6, cgi.Argv(5 + iCurrentEntry + iDatumCount * i));
if (iClientNum == cg.snap->ps.clientNum)
{
@@ -302,26 +658,25 @@ void CG_ParseScores()
}
else
{
iClientNum = atoi(cgi.Argv(2 + iDatumCount * i));
iClientNum = atoi(cgi.Argv(iCurrentEntry + iDatumCount * i));
if (iClientNum >= 0)
{
pszClientInfo = CG_ConfigString(CS_PLAYERS + iClientNum);
strcpy(szString2, Info_ValueForKey(pszClientInfo, "name"));
strcpy(szString3, cgi.Argv(3 + iDatumCount * i));
strcpy(szString4, cgi.Argv(4 + iDatumCount * i));
strcpy(szString5, cgi.Argv(5 + iDatumCount * i));
strcpy(szString6, cgi.Argv(6 + iDatumCount * i));
strcpy(szString2, cg.clientinfo[iClientNum].name);
strcpy(szString3, cgi.Argv(1 + iCurrentEntry + iDatumCount * i));
strcpy(szString4, cgi.Argv(2 + iCurrentEntry + iDatumCount * i));
strcpy(szString5, cgi.Argv(3 + iCurrentEntry + iDatumCount * i));
strcpy(szString6, cgi.Argv(4 + iCurrentEntry + iDatumCount * i));
}
else
{
if (iClientNum == -3)
{
strcpy(szString2, "Players");
strcpy(szString2, cgi.LV_ConvertString("Players"));
bIsHeader = qtrue;
}
else if (iClientNum == -2)
{
strcpy(szString2, "Spectators");
strcpy(szString2, cgi.LV_ConvertString("Spectators"));
bIsHeader = qtrue;
}
else
@@ -365,3 +720,4 @@ void CG_ParseScores()
cgi.UI_DeleteScoreBoardItems(iEntryCount);
}
#endif
+66 -6
View File
@@ -120,7 +120,7 @@ void CG_ParseServerinfo(void)
cgi.Cvar_Set("cg_obj_axistext3", Info_ValueForKey(info, "cg_obj_axistext3"));
cgi.Cvar_Set("cg_scoreboardpic", Info_ValueForKey(info, "g_scoreboardpic"));
cgi.Cvar_Set("cg_scoreboardpicover", Info_ValueForKey(info, "g_scoreboardpicover"));
cgs.mapChecksum = Info_ValueForKey(info, "sv_mapChecksum");
cgs.mapChecksum = atoi(Info_ValueForKey(info, "sv_mapChecksum"));
mapname = Info_ValueForKey(info, "mapname");
@@ -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);
+18 -12
View File
@@ -99,6 +99,7 @@ cvar_t *wombat;
cvar_t *cl_r_fullscreen;
cvar_t *cl_consoleKeys;
cvar_t *name;
cvar_t* j_pitch;
cvar_t* j_yaw;
@@ -220,7 +221,7 @@ CL_ChangeReliableCommand
======================
*/
void CL_ChangeReliableCommand( void ) {
int r, index, l;
size_t r, index, l;
r = clc.reliableSequence - (random() * 5);
index = clc.reliableSequence & ( MAX_RELIABLE_COMMANDS - 1 );
@@ -248,7 +249,7 @@ Dumps the current net message, prefixed by the length
====================
*/
void CL_WriteDemoMessage ( msg_t *msg, int headerBytes ) {
int len, swlen;
size_t len, swlen;
// write the packet sequence
len = clc.serverMessageSequence;
@@ -327,7 +328,7 @@ void CL_Record_f( void ) {
byte bufData[MAX_MSGLEN];
msg_t buf;
int i;
int len;
size_t len;
entityState_t *ent;
entityState_t nullstate;
char *s;
@@ -559,7 +560,7 @@ CL_ReadDemoMessage
=================
*/
void CL_ReadDemoMessage( void ) {
int r;
size_t r;
msg_t buf;
byte bufData[ MAX_MSGLEN ];
int s;
@@ -1060,7 +1061,8 @@ in anyway.
*/
void CL_RequestAuthorization( void ) {
char nums[64];
int i, j, l;
int i, j;
size_t l;
cvar_t *fs;
if ( !cls.authorizeServer.port ) {
@@ -1781,7 +1783,6 @@ void CL_CheckForResend( void ) {
int port, i;
char info[MAX_INFO_STRING];
char data[MAX_INFO_STRING];
char buf[1024];
// don't send anything if playing back a demo
if ( clc.demoplaying ) {
@@ -2156,8 +2157,6 @@ void CL_ConnectionlessPacket( netadr_t from, msg_t *msg ) {
// cd check
if ( !Q_stricmp(c, "getKey") ) {
char buf[1024];
cls.state = CA_AUTHORIZING;
gcd_compute_response(cl_cdkey, Cmd_Argv(1), cls.gcdResponse, CDResponseMethod_NEWAUTH);
NET_OutOfBandPrint(NS_CLIENT, from, "authorizeThis %s", cls.gcdResponse);
@@ -2292,7 +2291,7 @@ qboolean CL_CheckPaused(void)
// if paused->modified is set, the cvar has only been changed in
// this frame. Keep paused in this frame to ensure the server doesn't
// lag behind.
if(paused->integer || paused->modified)
if(paused->integer)
return qtrue;
return qfalse;
@@ -2307,6 +2306,8 @@ CL_CheckUserinfo
==================
*/
void CL_CheckUserinfo( void ) {
char szSanitizedName[MAX_NAME_LENGTH];
// don't add reliable commands when not yet connected
if(cls.state < CA_CHALLENGING)
return;
@@ -2318,6 +2319,10 @@ void CL_CheckUserinfo( void ) {
// send a reliable userinfo update if needed
if(cvar_modifiedFlags & CVAR_USERINFO)
{
if (Com_SanitizeName(name->string, szSanitizedName)) {
Cvar_Set("name", szSanitizedName);
}
cvar_modifiedFlags &= ~CVAR_USERINFO;
CL_AddReliableCommand( va("userinfo \"%s\"", Cvar_InfoString( CVAR_USERINFO ) ) );
}
@@ -3119,7 +3124,7 @@ void CL_Init( void ) {
cl_consoleKeys = Cvar_Get( "cl_consoleKeys", "~ ` 0x7e 0x60", CVAR_ARCHIVE );
// userinfo
Cvar_Get ("name", "UnnamedSoldier", CVAR_USERINFO | CVAR_ARCHIVE );
name = Cvar_Get ("name", "UnnamedSoldier", CVAR_USERINFO | CVAR_ARCHIVE );
Cvar_Get ("rate", "5000", CVAR_USERINFO | CVAR_ARCHIVE );
Cvar_Get ("snaps", "20", CVAR_USERINFO | CVAR_ARCHIVE );
Cvar_Get ("password", "", CVAR_USERINFO);
@@ -3511,7 +3516,7 @@ void CL_ServerStatusResponse( netadr_t from, msg_t *msg ) {
const char *s;
char info[MAX_INFO_STRING];
int i, l, score, ping;
int len;
size_t len;
serverStatus_t *serverStatus;
serverStatus = NULL;
@@ -4270,7 +4275,8 @@ qboolean CL_CDKeyValidate( const char *key, const char *checksum ) {
char ch;
byte sum;
char chs[3];
int i, len;
int i;
size_t len;
len = strlen(key);
if( len != CDKEY_LEN ) {
+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;
+18 -8
View File
@@ -189,11 +189,13 @@ void UIDMBox::RemoveTopItem( void )
{
int i;
for (i = 0; i < m_numitems - 1; i++) {
m_items[i] = m_items[i + 1];
}
if (m_numitems > 0) {
for (i = 0; i < m_numitems - 1; i++) {
m_items[i] = m_items[i + 1];
}
m_numitems--;
m_numitems--;
}
}
str UIDMBox::CalculateBreaks( UIFont *font, str text, float max_width )
@@ -291,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;
}
+6 -4
View File
@@ -186,11 +186,13 @@ void UIGMBox::RemoveTopItem( void )
{
int i;
for (i = 0; i < m_numitems - 1; i++) {
m_items[i] = m_items[i + 1];
}
if (m_numitems > 0) {
for (i = 0; i < m_numitems - 1; i++) {
m_items[i] = m_items[i + 1];
}
m_numitems--;
m_numitems--;
}
}
str UIGMBox::CalculateBreaks( UIFont *font, str text, float max_width )
+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 ] );
+150
View File
@@ -152,6 +152,10 @@ typedef enum {
GT_TEAM, // team deathmatch
GT_TEAM_ROUNDS,
GT_OBJECTIVE,
// Team Assault game mode
GT_TOW,
// Team Tactics game mode
GT_LIBERATION,
GT_MAX_GAME_TYPE
} gametype_t;
@@ -261,6 +265,28 @@ typedef enum {
#define PMF_LEVELEXIT (1<<20) // use camera view instead of ps view
#endif
#if TARGET_GAME_PROTOCOL >= 15
// moh pm_flags
#define PMF_DUCKED (1<<0)
#define PMF_VIEW_PRONE (1<<1)
#define PMF_SPECTATING (1<<2)
#define PMF_RESPAWNED (1<<3)
#define PMF_NO_PREDICTION (1<<4)
#define PMF_FROZEN (1<<5)
#define PMF_INTERMISSION (1<<6)
#define PMF_SPECTATE_FOLLOW (1<<7)
#define PMF_CAMERA_VIEW (1<<7) // use camera view instead of ps view
#define PMF_NO_MOVE (1<<8)
#define PMF_VIEW_DUCK_RUN (1<<9)
#define PMF_VIEW_JUMP_START (1<<10)
#define PMF_LEVELEXIT (1<<11)
#define PMF_NO_GRAVITY (1<<12)
#define PMF_NO_HUD (1<<13)
#define PMF_UNKNOWN (1<<14)
#else
// moh pm_flags
#define PMF_DUCKED (1<<0)
#define PMF_VIEW_PRONE (1<<1)
@@ -279,6 +305,8 @@ typedef enum {
#define PMF_NO_HUD (1<<15)
#define PMF_UNKNOWN (1<<16)
#endif
// moveposflags
#define MPF_POSITION_STANDING (1<<0)
#define MPF_POSITION_CROUCHING (1<<1)
@@ -425,6 +453,12 @@ typedef enum {
#define EF_AXIS 0x00000100 // su44: this player is in axis team
#define EF_ANY_TEAM (EF_ALLIES | EF_AXIS)
#define EF_DEAD 0x00000200 // don't draw a foe marker over players with EF_DEAD
//
// Team assault flags
//
#define EF_PLAYER_IN_MENU 0x00000400 // Player is in menu
#define EF_PLAYER_TALKING 0x00000800 // Player is talking
#define EF_PLAYER_ARTILLERY 0x00002000 // Player is using an artillery
// su44: q3 remnants
@@ -673,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 {
@@ -693,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
+11 -36
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 0
#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
@@ -1625,7 +1598,7 @@ typedef enum
#define RESERVED_CONFIGSTRINGS 2 // game can't modify below this, only the system can
#define MAX_GAMESTATE_CHARS 32000
#define MAX_GAMESTATE_CHARS 41952
typedef struct {
int stringOffsets[MAX_CONFIGSTRINGS];
char stringData[MAX_GAMESTATE_CHARS];
@@ -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,
+397 -41
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);
}
/*
=========================================================
@@ -2085,8 +2421,10 @@ 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) {
int len;
size_t len;
char tempName[MAX_STRING_TOKENS + 1];
char altname[MAX_QPATH];
*hasAlpha = qfalse;
*glCompressMode = 0;
@@ -2099,30 +2437,48 @@ static void R_LoadImage(const char* name, byte** pic, int* width, int* height, q
return;
}
if (!Q_stricmp(name + len - 4, ".tga")) {
LoadTGA(name, pic, width, height); // try tga first
if (!*pic) { //
char altname[MAX_QPATH]; // try jpg in place of tga
strcpy(altname, name);
len = strlen(altname);
altname[len - 3] = 'j';
altname[len - 2] = 'p';
altname[len - 1] = 'g';
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;
}
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)
@@ -2171,7 +2527,7 @@ image_t* R_FindImageFile(const char* name, qboolean mipmap, qboolean allowPicmip
if (image->allowPicmip != allowPicmip) {
ri.Printf(PRINT_DEVELOPER, "WARNING: reused image %s with mixed allowPicmip parm\n", name);
}
if (image->wrapClampModeX != glWrapClampModeX || image != glWrapClampModeY) {
if (image->wrapClampModeX != glWrapClampModeX || image->wrapClampModeY != glWrapClampModeY) {
ri.Printf(PRINT_ALL, "WARNING: reused image %s with mixed glWrapClampMode parm\n", name);
}
}
+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
+9 -4
View File
@@ -25,9 +25,13 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#include "win_localization.h"
#include <tiki.h>
#define MAX_BUFFERS 3
#define MAX_LOCALIZATION_LENGTH 1024
cLocalization *g_localization;
static char buf[ 1024 ];
static char global_buf[MAX_BUFFERS][MAX_LOCALIZATION_LENGTH];
static char szTemp[ 100 ];
static size_t buf_index = 0;
void Sys_InitLocalization()
{
@@ -342,6 +346,7 @@ const char *cLocalization::ConvertString( const char *var )
n++;
}
char* buf = global_buf[(buf_index++) % MAX_BUFFERS];
for( i = 1; i <= m_entries.NumObjects(); i++ )
{
entry = &m_entries.ObjectAt( i );
@@ -354,12 +359,12 @@ const char *cLocalization::ConvertString( const char *var )
if( !( m + n ) )
{
strncpy( buf, entry->m_locName, sizeof( buf ) );
bjb_rebreak( var, buf, sizeof( buf ) );
strncpy( buf, entry->m_locName, MAX_LOCALIZATION_LENGTH );
bjb_rebreak( var, buf, MAX_LOCALIZATION_LENGTH );
return buf;
}
if( entry->m_l1_rep + m + n < sizeof( buf ) )
if( entry->m_l1_rep + m + n < MAX_LOCALIZATION_LENGTH )
{
memcpy( buf, var, n );
memcpy( &buf[ n ], entry->m_locName.c_str(), entry->m_l1_rep );
-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