2019-09-01 02:18:15 +00:00
|
|
|
/*
|
2022-03-11 19:40:43 +00:00
|
|
|
* Copyright (c) 2016-2020 Marco Cawthorne <marco@icculus.org>
|
2019-09-01 02:18:15 +00:00
|
|
|
*
|
|
|
|
* Permission to use, copy, modify, and distribute this software for any
|
|
|
|
* purpose with or without fee is hereby granted, provided that the above
|
|
|
|
* copyright notice and this permission notice appear in all copies.
|
|
|
|
*
|
|
|
|
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
|
|
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
|
|
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
|
|
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
|
|
* WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
|
|
|
|
* IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
|
|
|
|
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
|
|
*/
|
2019-01-21 02:00:14 +00:00
|
|
|
|
2020-05-02 21:57:25 +00:00
|
|
|
#include "textmenu.h"
|
2021-04-22 09:33:48 +00:00
|
|
|
#include "efx.h"
|
2021-11-04 21:48:19 +00:00
|
|
|
#include "font.h"
|
2022-01-03 05:21:06 +00:00
|
|
|
#include "fade.h"
|
2022-03-03 22:16:02 +00:00
|
|
|
#include "cmd.h"
|
2020-05-02 21:57:25 +00:00
|
|
|
|
2019-09-01 02:18:15 +00:00
|
|
|
/* flags for 2d drawing */
|
|
|
|
#define DRAWFLAG_NORMAL 0
|
|
|
|
#define DRAWFLAG_ADDITIVE 1
|
|
|
|
#define DRAWFLAG_MODULATE 2
|
|
|
|
#define DRAWFLAG_2XMODULATE 3
|
2019-01-21 02:00:14 +00:00
|
|
|
|
2019-09-01 02:18:15 +00:00
|
|
|
/* undocumented printcall types */
|
2020-03-24 06:47:41 +00:00
|
|
|
#define PRINT_LOW 0
|
2019-01-29 02:40:14 +00:00
|
|
|
#define PRINT_MEDIUM 1
|
2020-03-24 06:47:41 +00:00
|
|
|
#define PRINT_HIGH 2
|
|
|
|
#define PRINT_CHAT 3
|
2019-01-21 02:00:14 +00:00
|
|
|
|
2019-09-01 02:18:15 +00:00
|
|
|
/* fonts */
|
2021-11-04 21:48:19 +00:00
|
|
|
font_s FONT_16;
|
|
|
|
font_s FONT_20;
|
|
|
|
font_s FONT_CON;
|
2019-01-21 02:00:14 +00:00
|
|
|
|
2022-03-15 07:01:20 +00:00
|
|
|
var string g_shellchrome;
|
|
|
|
var float g_shellchromeshader;
|
|
|
|
|
2019-09-01 02:18:15 +00:00
|
|
|
/* clientside cvars */
|
|
|
|
var float autocvar_zoom_sensitivity = 1.0f;
|
2019-01-21 02:00:14 +00:00
|
|
|
var int autocvar_cl_smoothstairs = TRUE;
|
2019-09-01 02:18:15 +00:00
|
|
|
var int autocvar_cl_thirdperson = FALSE;
|
2019-01-21 02:00:14 +00:00
|
|
|
var int autocvar_v_lefthanded = FALSE;
|
|
|
|
var string autocvar_cl_logofile = "lambda";
|
2019-09-01 02:18:15 +00:00
|
|
|
var vector autocvar_cl_logocolor = [255,0,0];
|
|
|
|
var vector autocvar_con_color = [255,150,0];
|
|
|
|
var vector autocvar_vgui_color = [255,170,0];
|
|
|
|
var vector autocvar_v_gunofs = [0,0,0];
|
2020-03-30 12:47:17 +00:00
|
|
|
var int autocvar_r_viewmodelpass = 0;
|
|
|
|
var float autocvar_r_viewmodelfov = 90.0f;
|
2020-03-30 16:04:45 +00:00
|
|
|
var float autocvar_r_viewmodelscale = 1.0f;
|
2020-04-01 16:43:09 +00:00
|
|
|
var float autocvar_cl_hudaspect = 0.0f;
|
2019-01-21 02:00:14 +00:00
|
|
|
|
2019-09-01 02:18:15 +00:00
|
|
|
/* particle descriptors */
|
2020-03-24 06:26:49 +00:00
|
|
|
var float PART_DUSTMOTE;
|
2022-01-21 00:23:29 +00:00
|
|
|
var float PART_BURNING;
|
2019-01-21 02:00:14 +00:00
|
|
|
|
2019-09-04 01:56:36 +00:00
|
|
|
/* muzzleflash indices */
|
|
|
|
var int MUZZLE_SMALL;
|
|
|
|
var int MUZZLE_RIFLE;
|
|
|
|
var int MUZZLE_WEIRD;
|
|
|
|
|
2019-09-01 02:18:15 +00:00
|
|
|
/* misc globals */
|
2019-01-21 02:00:14 +00:00
|
|
|
vector video_mins;
|
|
|
|
vector video_res;
|
|
|
|
vector mouse_pos;
|
2020-04-26 11:17:19 +00:00
|
|
|
int g_iIntermission;
|
2019-01-21 02:00:14 +00:00
|
|
|
|
2019-09-01 02:18:15 +00:00
|
|
|
/* this actually belongs in builtins.h since its an undocumented global */
|
2019-01-21 02:00:14 +00:00
|
|
|
float clframetime;
|
|
|
|
|
2020-05-31 10:54:04 +00:00
|
|
|
string(string modelname, int frame, float frametime) spriteframe = #0;
|
|
|
|
|
2021-12-18 02:20:30 +00:00
|
|
|
void CSQC_UpdateSeat(void);
|
|
|
|
|
2020-05-02 21:57:25 +00:00
|
|
|
void
|
|
|
|
drawstring_r(vector p, string t, vector s, vector c, float a, float f)
|
|
|
|
{
|
|
|
|
p[0] -= stringwidth(t, TRUE, s);
|
|
|
|
drawstring(p, t, s, c, a, f);
|
|
|
|
}
|
|
|
|
|
2021-01-02 20:22:56 +00:00
|
|
|
void GameMessage_Setup(string, int);
|
2019-09-04 01:56:36 +00:00
|
|
|
void View_SetMuzzleflash(int);
|
2021-03-17 13:34:26 +00:00
|
|
|
|
2021-03-29 19:52:53 +00:00
|
|
|
void Event_Callback(float mtime, __inout float btime);
|
|
|
|
void View_AddEvent(void(void) pCallback, float flTime);
|
2019-09-04 01:56:36 +00:00
|
|
|
void View_PlayAnimation(int);
|
2020-05-02 21:57:25 +00:00
|
|
|
void View_PlayAnimation(int);
|
2021-01-05 14:51:49 +00:00
|
|
|
void Event_ProcessModel(float, int, string);
|
2021-02-16 23:44:40 +00:00
|
|
|
void ClientGame_ModelEvent(float, int, string);
|
2020-08-14 21:18:47 +00:00
|
|
|
|
2021-10-08 19:50:04 +00:00
|
|
|
void View_EnableViewmodel(void);
|
|
|
|
void View_DisableViewmodel(void);
|
|
|
|
|
2020-08-14 21:18:47 +00:00
|
|
|
/* this really should be done in-engine */
|
|
|
|
|
2021-03-27 06:49:13 +00:00
|
|
|
void drawrect(vector pos, vector sz, float thickness, vector rgb, float al, optional float dfl)
|
|
|
|
{
|
|
|
|
/* top */
|
|
|
|
drawfill(pos, [sz[0], thickness], rgb, al, dfl);
|
|
|
|
/* bottom */
|
|
|
|
drawfill(pos + [0, sz[1] - thickness], [sz[0], thickness], rgb, al, dfl);
|
|
|
|
/* left */
|
|
|
|
drawfill(pos + [0, thickness], [thickness, sz[1] - (thickness * 2)], rgb, al, dfl);
|
|
|
|
/* right */
|
|
|
|
drawfill(pos + [sz[0] - thickness, thickness], [thickness, sz[1] - (thickness * 2)], rgb, al, dfl);
|
|
|
|
}
|
2021-03-31 11:40:27 +00:00
|
|
|
|
2021-09-02 19:11:54 +00:00
|
|
|
void
|
|
|
|
precache_cubemap(string path)
|
|
|
|
{
|
|
|
|
precache_pic(strcat(path, "_bk"));
|
|
|
|
precache_pic(strcat(path, "_dn"));
|
|
|
|
precache_pic(strcat(path, "_ft"));
|
|
|
|
precache_pic(strcat(path, "_lf"));
|
|
|
|
precache_pic(strcat(path, "_rt"));
|
|
|
|
precache_pic(strcat(path, "_up"));
|
|
|
|
}
|
|
|
|
|
2021-03-31 11:40:27 +00:00
|
|
|
struct
|
|
|
|
{
|
|
|
|
/* viewmodel stuff */
|
|
|
|
entity m_eViewModel;
|
|
|
|
entity m_eMuzzleflash;
|
|
|
|
int m_iVMBones;
|
2022-02-04 23:24:43 +00:00
|
|
|
entity m_eViewModelL;
|
|
|
|
entity m_eMuzzleflashL;
|
|
|
|
int m_iVMBonesL;
|
2021-03-31 11:40:27 +00:00
|
|
|
|
|
|
|
void(void) m_pEventCall;
|
|
|
|
float m_flEventTime;
|
|
|
|
float m_flEventFrame;
|
2021-04-06 07:18:17 +00:00
|
|
|
float m_flEventMdl;
|
2021-03-31 11:40:27 +00:00
|
|
|
|
|
|
|
int m_iLastWeapon;
|
|
|
|
int m_iOldWeapon;
|
|
|
|
|
|
|
|
/* damage overlay */
|
|
|
|
float m_flDamageAlpha;
|
|
|
|
vector m_vecDamagePos;
|
2021-12-18 02:20:30 +00:00
|
|
|
int m_iDamageFlags;
|
2021-03-31 11:40:27 +00:00
|
|
|
|
|
|
|
/* +zoomin cmd */
|
|
|
|
int m_iZoomed;
|
|
|
|
float m_flZoomTime;
|
|
|
|
|
|
|
|
/* player fields */
|
|
|
|
entity m_ePlayer;
|
|
|
|
vector m_vecPredictedOrigin;
|
|
|
|
vector m_vecPredictedOriginOld;
|
|
|
|
vector m_vecPredictedVelocity;
|
|
|
|
float m_flPredictedFlags;
|
|
|
|
|
|
|
|
/* camera fields */
|
|
|
|
vector m_vecCameraOrigin;
|
|
|
|
vector m_vecCameraAngle;
|
|
|
|
float m_flCameraTime;
|
|
|
|
|
|
|
|
int m_iHUDWeaponSelected;
|
|
|
|
float m_flHUDWeaponSelectTime;
|
|
|
|
|
|
|
|
int m_iScoresVisible;
|
|
|
|
|
|
|
|
/* saturn controller */
|
|
|
|
int m_iSaturnMenu;
|
|
|
|
|
|
|
|
/* centerprint related */
|
|
|
|
float m_flCenterprintAlpha;
|
|
|
|
float m_flCenterprintTime;
|
|
|
|
float m_iCenterprintLines;
|
|
|
|
string m_strCenterprintBuffer[18];
|
|
|
|
|
|
|
|
/* chat related */
|
|
|
|
float m_flPrintTime;
|
|
|
|
string m_strPrintBuffer[5];
|
|
|
|
int m_iPrintLines;
|
|
|
|
|
|
|
|
int m_iInputAttack2;
|
|
|
|
int m_iInputReload;
|
|
|
|
int m_iInputUse;
|
|
|
|
int m_iInputDuck;
|
|
|
|
float m_flInputBlockTime;
|
|
|
|
|
|
|
|
/* fading */
|
|
|
|
float m_flFadeDuration;
|
|
|
|
float m_flFadeHold;
|
|
|
|
float m_flFadeMaxAlpha;
|
|
|
|
float m_flFadeStyle;
|
|
|
|
float m_flFadeAlpha;
|
|
|
|
float m_flFadeTime;
|
|
|
|
vector m_vecFadeColor;
|
|
|
|
int m_iFadeActive;
|
|
|
|
|
|
|
|
/* shake */
|
|
|
|
float m_flShakeFreq;
|
|
|
|
float m_flShakeDuration;
|
|
|
|
float m_flShakeTime;
|
|
|
|
float m_flShakeAmp;
|
|
|
|
|
2021-10-29 22:59:31 +00:00
|
|
|
vector m_vecLag;
|
2022-02-12 01:09:08 +00:00
|
|
|
|
|
|
|
/* vehicles */
|
|
|
|
float m_flVehTransition;
|
|
|
|
vector m_vecVehEntry;
|
2021-03-31 11:40:27 +00:00
|
|
|
} g_seats[4], *pSeat;
|