pitchsound out of order fix and vgui rename + cleanup minor
This commit is contained in:
parent
42a97f73d3
commit
0af2292d70
27 changed files with 1773 additions and 1990 deletions
|
@ -25,10 +25,10 @@ ClientGame_ConsoleCommand(void)
|
|||
|
||||
//TAGGG - is that ok?
|
||||
case "+speedcustom":
|
||||
pSeatLocal->iInputSpeed = TRUE;
|
||||
pSeatLocal->m_iInputSpeed = TRUE;
|
||||
break;
|
||||
case "-speedcustom":
|
||||
pSeatLocal->iInputSpeed = FALSE;
|
||||
pSeatLocal->m_iInputSpeed = FALSE;
|
||||
break;
|
||||
|
||||
//TAGGG - NEW ONES
|
||||
|
@ -85,12 +85,12 @@ ClientGame_ConsoleCommand(void)
|
|||
*/
|
||||
case "motd":
|
||||
if(getplayerkeyvalue( player_localnum, "*spec" ) != "0"){
|
||||
VGUI_ChangeScreen(VGUI_SCREEN::MOTD);
|
||||
UI_ChangeScreen(UI_SCREEN::MOTD);
|
||||
}
|
||||
break;
|
||||
case "buy":
|
||||
//If we're in spectator mode we can do this
|
||||
// no-screen check, not necessary probably: pSeatLocal->fVGUI_Display == VGUI_SCREEN::NONE &&
|
||||
// no-screen check, not necessary probably: pSeatLocal->m_flUI_Display == UI_SCREEN::NONE &&
|
||||
pl = (player)pSeat->m_ePlayer;
|
||||
|
||||
printfline("CMD: BUY COMMAND RECEIVED! Should I react? %s (1=yes) : %d", getplayerkeyvalue( player_localnum, "*spec" ), pl.iState);
|
||||
|
@ -99,7 +99,7 @@ ClientGame_ConsoleCommand(void)
|
|||
//if(getplayerkeyvalue( player_localnum, "*spec" ) != "0"){
|
||||
if(pl.iState != PLAYER_STATE::SPAWNED){
|
||||
//we can show it!
|
||||
VGUI_ChangeScreen(VGUI_SCREEN::BUYSIDEMENU);
|
||||
UI_ChangeScreen(UI_SCREEN::BUYMENU);
|
||||
}
|
||||
|
||||
break;
|
||||
|
|
|
@ -26,8 +26,8 @@ ClientGame_EventParse(float fHeader)
|
|||
|
||||
// !
|
||||
// Any need for a m_ePlayer classname check here?
|
||||
// I think none apply for being an authentic "spectator", most don't for being a buymenu spectator
|
||||
// (player with that is not PLAYER_STATE::SPAWNED)
|
||||
// I think none apply for being an authentic "spectator", most don't for being a
|
||||
// buymenu spectator (player with that is not PLAYER_STATE::SPAWNED)
|
||||
|
||||
switch(fHeader){
|
||||
case EV_OBITUARY:
|
||||
|
@ -162,7 +162,7 @@ ClientGame_EventParse(float fHeader)
|
|||
deployConfig();
|
||||
|
||||
// Just in case.
|
||||
VGUI_ChangeScreen(VGUI_SCREEN::NONE);
|
||||
UI_ChangeScreen(UI_SCREEN::NONE);
|
||||
|
||||
// so that any choice of weapon, same as before or even nothing, will still
|
||||
// let client/view.qc do the whole viewmodel routine again
|
||||
|
@ -178,9 +178,6 @@ ClientGame_EventParse(float fHeader)
|
|||
case EVENT_TS::PLAYER_DEATH:
|
||||
EV_PlayerDeath();
|
||||
break;
|
||||
//case EVENT_TS::PLAY_INSERT_SHELL_SND:
|
||||
// EV_TS_PlayInsertShellSound(pl);
|
||||
// break;
|
||||
case EVENT_TS::EFFECT_EXPLOSION:
|
||||
vecOrigin[0] = readcoord();
|
||||
vecOrigin[1] = readcoord();
|
||||
|
|
|
@ -83,9 +83,7 @@ HUD_Draw(void)
|
|||
}
|
||||
//////////////////////////////////////////////////////////////
|
||||
|
||||
GameClient_PlayerInputRaw();
|
||||
|
||||
//TAGGG - NEw
|
||||
//TAGGG - new
|
||||
//////////////////////////////////////////////////////////////
|
||||
drawTimer();
|
||||
drawPlayerStats();
|
||||
|
@ -94,8 +92,9 @@ HUD_Draw(void)
|
|||
//////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
// TEST! Just for nuclide, doesn't matter what m_iHUDWeaponSelected is exactly,
|
||||
// just 0 or non-zero has significance in it.
|
||||
// Just for nuclide, doesn't matter what m_iHUDWeaponSelected is exactly,
|
||||
// just 0 or non-zero has significance in it for denying game-related inputs
|
||||
// in Nuclide, which is all we need.
|
||||
pSeat->m_iHUDWeaponSelected = (pl.weaponSelectHighlightID != -1);
|
||||
|
||||
|
||||
|
@ -123,21 +122,11 @@ HUD_Draw(void)
|
|||
|
||||
pSeat->m_iHUDWeaponSelected = 0;
|
||||
|
||||
// is this necessary? With or without the if-then too.
|
||||
/*
|
||||
if(g_vguiWidgetCount > 0){
|
||||
GameClient_SpectatorInputRaw();
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
drawTimer();
|
||||
|
||||
//TAGGG - Moved over! Is it wise for this to go here?
|
||||
// Links to drawing the MoTD and buymenu when appropriate
|
||||
//TAGGG - CRITICAL. "self" is a spectator, not a player!!
|
||||
// Send over the above "spec" instead too!
|
||||
CSQC_VGUI_Draw(pl);
|
||||
UI_Draw(pl);
|
||||
|
||||
}// pl.iState check
|
||||
|
||||
|
|
|
@ -104,7 +104,7 @@ ClientGame_Init(float apilevel, string enginename, float engineversion)
|
|||
// using the new VGUI approach.
|
||||
// That also includes mentions of fonts in ts/src/client/vgui.qc
|
||||
|
||||
// Also see ts/src/client/vgui.qc where CSQC_VGUI_Draw checks to see if the screen
|
||||
// Also see ts/src/client/vgui.qc where UI_Draw checks to see if the screen
|
||||
// size has been changed or this is the first time drawing (some FONTs having ID -1).
|
||||
// In either case, they're loaded and sized per screen height over there.
|
||||
FONT_ARIAL = -1; //specify me at draw startup instead, if this is safe.
|
||||
|
@ -136,7 +136,7 @@ ClientGame_Init(float apilevel, string enginename, float engineversion)
|
|||
drawfont = FONT_CON;
|
||||
//////////////////////////////////////////////////////////////////
|
||||
|
||||
CSQC_VGUI_Init();
|
||||
UI_Init();
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
|
||||
|
||||
void GameClient_SpectatorInputRaw(void)
|
||||
void GameClient_PlayerInputRaw(void);
|
|
@ -1,204 +0,0 @@
|
|||
|
||||
// NEW FILE.
|
||||
|
||||
// RECENT: This file is pending deletion, if the "GamePlayerSpawn" message call in
|
||||
// ts/src/shared/input.qc is good enough.
|
||||
// That would mean GameClient_SpectatorInputRaw, nor any pSeatLocal vars only it uses,
|
||||
// would no longer be necessary.
|
||||
// Just want to be sure first with some more tests, no getting locked out of spawning.
|
||||
// GameClient_PlayerInputRaw is tiny and hud.qc can do what it does instead.
|
||||
|
||||
// The "DISABLED" area further down is worth seeing if supporting right click to close
|
||||
// an open weapon select immediately without applying any selection is a good idea though.
|
||||
|
||||
// -----------------------------
|
||||
|
||||
|
||||
|
||||
// WARNING: Do not get this file mixed up with <game>/src/shared/input.qc, that one is
|
||||
// only called when the player is spawned (collision, seen by others, etc.).
|
||||
// This is for checking to see if the user performed some action that does not need
|
||||
// to be checked by the server, such as INPUT_BUTTON0 (primary fire) while not in any
|
||||
// VGUI choice (blank screen) to send a message to the server to swawn the player.
|
||||
// This is reached through draw-calls (root of the calls is method CSQC_UpdateView).
|
||||
// It works.
|
||||
|
||||
// ALSO, this is called continually to check for user-provided input, it is not only
|
||||
// called when user input is detected. Be aware of that.
|
||||
|
||||
|
||||
// Also, this version is for while in spectator. See further down for the "for-player"
|
||||
// version.
|
||||
void
|
||||
GameClient_SpectatorInputRaw(void)
|
||||
{
|
||||
// If in spectator with nothing open (no MoTD, no buyside menu),
|
||||
// go ahead and spawn ingame.
|
||||
|
||||
if(pSeatLocal->fVGUI_Display == VGUI_SCREEN::NONE && pSeatLocal->m_flPrevVGUI != VGUI_SCREEN::NONE){
|
||||
// Current display is NONE, yet the previous wasn't (Recent change to NONE)?
|
||||
// Set that.
|
||||
pSeatLocal->m_bNeedPrimaryRelease = TRUE;
|
||||
pSeatLocal->m_flReleaseTime = time + 0.15f;
|
||||
}
|
||||
|
||||
pSeatLocal->m_flPrevVGUI = pSeatLocal->fVGUI_Display;
|
||||
|
||||
// OKAY. So little issue.
|
||||
// Modern Nuclide does not offer a way to read "input_buttons" in the usual places
|
||||
// (CSQC_Input_Frame), can they be re-gathered?
|
||||
|
||||
// COPIED FROM src/client/predict.qc, for scraping through
|
||||
// all queued input frames for sending (or not yet verified to have
|
||||
// been received by the server. I think?).
|
||||
// Or use the one at clientcommandframe only. Hmm.
|
||||
|
||||
// quote from fteextensions.qc:
|
||||
// The sequence number range used for prediction should normally be
|
||||
// servercommandframe < sequence <= clientcommandframe.
|
||||
|
||||
//printf("WHAT are the client/server comm frames? %d %d\n", clientcommandframe, servercommandframe);
|
||||
//for (int i = pl.sequence + 1; i <= clientcommandframe; i++) {
|
||||
|
||||
/*
|
||||
bool wasButtonPushedThisFrame = FALSE;
|
||||
for (int i = servercommandframe+1; i <= clientcommandframe; i++) {
|
||||
float flSuccess = getinputstate(i);
|
||||
if (flSuccess == FALSE) {
|
||||
continue;
|
||||
}
|
||||
|
||||
//if (i==clientcommandframe){
|
||||
// CSQC_Input_Frame();
|
||||
//}
|
||||
|
||||
if (input_timelength == 0) {
|
||||
break;
|
||||
}
|
||||
|
||||
if((input_buttons & INPUT_BUTTON0) != 0){
|
||||
//printfline("IM here man %d\n", (input_buttons & INPUT_BUTTON0) != 0);
|
||||
// any frame says I got pushed? Treat it as such.
|
||||
wasButtonPushedThisFrame = TRUE;
|
||||
}
|
||||
|
||||
//input_sequence = i;
|
||||
}
|
||||
*/
|
||||
|
||||
float flSuccess = getinputstate(clientcommandframe);
|
||||
if (flSuccess) {
|
||||
//printf("BUT HOW? %d - %d\n", (pSeatLocal->m_bNeedPrimaryRelease), (( input_buttons & INPUT_BUTTON0)!=0) );
|
||||
|
||||
// IDEA: could we just do this?
|
||||
/*
|
||||
if(pSeatLocal->m_bNeedPrimaryRelease){
|
||||
if(!wasButtonPushedThisFrame)){
|
||||
pSeatLocal->m_bNeedPrimaryRelease = FALSE;
|
||||
}
|
||||
}
|
||||
*/
|
||||
// INSTEAD OF THIS
|
||||
///////////////////////////////////////////////////////
|
||||
if(pSeatLocal->m_bNeedPrimaryRelease){
|
||||
// yay.
|
||||
if(!(input_buttons & INPUT_BUTTON0)){
|
||||
// not pushed? Check it
|
||||
if(time >= pSeatLocal->m_flReleaseTime){
|
||||
// okay! Not touched for enough time.
|
||||
pSeatLocal->m_bNeedPrimaryRelease = FALSE;
|
||||
}
|
||||
}else{
|
||||
// Touched? Oh.
|
||||
pSeatLocal->m_flReleaseTime = time + 0.15f;
|
||||
}
|
||||
}
|
||||
///////////////////////////////////////////////////////
|
||||
|
||||
player pl = (player)pSeat->m_ePlayer;
|
||||
|
||||
// primary fire?
|
||||
if(!pSeatLocal->m_bNeedPrimaryRelease && (input_buttons & INPUT_BUTTON0) ){
|
||||
|
||||
if(
|
||||
pSeatLocal->fVGUI_Display == VGUI_SCREEN::NONE &&
|
||||
//getplayerkeyvalue(player_localnum, "*spec") != "0"
|
||||
pl.iState != PLAYER_STATE::SPAWNED
|
||||
){
|
||||
// && getstati(STAT_RULE_ALLOW_SPAWN))
|
||||
// just send the intention we want to spawn, the server will see if a delay is needed.
|
||||
// And only work if we're not in some other screen AND not spawned. Clicking to spawn while ingame (die) would be irritating.
|
||||
|
||||
// Check is no longer needed, only the spectator would have reached this method to begin with.
|
||||
//if( stof(getplayerkeyvalue(player_localnum, "*team")) == TEAM_SPECTATOR)
|
||||
|
||||
//TAGGG - TODO - should some minimum cooldown before respawning be enforced,
|
||||
// and the countdown shows up if the user clicks too soon since a respawn?
|
||||
// Print this if the client suspects that will be the case, or let spawn-delay
|
||||
// be some serverstat that is known here at all times.
|
||||
//CSQC_Parse_CenterPrint("Spawning soon...\n");
|
||||
|
||||
sendevent( "GamePlayerSpawn", "");
|
||||
|
||||
VGUI_ChangeScreen(VGUI_SCREEN::NONE);
|
||||
|
||||
// probably unnecessary?
|
||||
EV_TS_resetViewModel();
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}//GameClient_SpectatorInputRaw
|
||||
|
||||
|
||||
// While a player.
|
||||
void
|
||||
GameClient_PlayerInputRaw(void)
|
||||
{
|
||||
player pl = (player)pSeat->m_ePlayer;
|
||||
// weapon select extra.
|
||||
if(pl == NULL){
|
||||
return;
|
||||
}
|
||||
|
||||
// This was removed? Legacy VGUI
|
||||
// If we are inside a VGUI, don't let the client do stuff outside
|
||||
if (pl.iState != PLAYER_STATE::SPAWNED && pSeatLocal->fVGUI_Display != VGUI_SCREEN::NONE){
|
||||
pSeat->m_flInputBlockTime = time + 0.2;
|
||||
}
|
||||
|
||||
|
||||
// No need to check for calling TS_HUD_DrawWeaponSelect_CheckClick or
|
||||
// HUD_DrawWeaponSelect_Trigger here, Nuclide calls the latter which works
|
||||
// fine.
|
||||
|
||||
|
||||
// CRITICAL.
|
||||
// DISABLED.
|
||||
// This is trying to close weaponselect on detecting a right-click, but it
|
||||
// has issues.
|
||||
// Idea is, this needs to *absorb* the right-click, and stop it from reaching
|
||||
// the rest of the client and server to work with weapons, like a change-ironsight
|
||||
// order.
|
||||
// This might stop the client weapon logic from seeing the right click, but not
|
||||
// the server.
|
||||
// It appears there is no way to stop that without the FTE built-in event method
|
||||
// CSQC_Input_Frame (defined by Nuclide) letting the gamemod block right-click
|
||||
// inputs per some condition, like weapon-select being up.
|
||||
/*
|
||||
if(pSeat->m_iInputAttack2){ //input_buttons & INPUT_BUTTON3){
|
||||
if(HUD_CloseWeaponSelect(TRUE)){
|
||||
pSeat->m_flInputBlockTime = time + 0.2;
|
||||
input_impulse = 0;
|
||||
input_buttons = 0;
|
||||
pSeat->m_iInputAttack2 = FALSE;
|
||||
}else{
|
||||
//pSeat->m_iInputAttack2 = TRUE;
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
}//GameClient_PlayerInputRaw
|
||||
|
||||
|
|
@ -32,13 +32,12 @@ defs.h
|
|||
|
||||
clientinfo.h
|
||||
seatlocal.h
|
||||
input.h
|
||||
|
||||
//TAGGG - NEW
|
||||
precache.h
|
||||
vgui.h
|
||||
ui.h
|
||||
ui_eventgrabber.h
|
||||
vgui_buysidemenu.h
|
||||
ui_buymenu.h
|
||||
hud_weaponselect.h
|
||||
inventory_logic_draw.h
|
||||
view.h
|
||||
|
@ -59,12 +58,10 @@ hud.h
|
|||
../shared/inventory_logic.qc
|
||||
|
||||
//TAGGG - NEW
|
||||
input.qc
|
||||
vguiobjects.qc
|
||||
vgui_motd.qc
|
||||
vgui_buysidemenu.qc
|
||||
//vgui_spectator.c ????
|
||||
vgui.qc
|
||||
ui_buymenu.qc
|
||||
ui.qc
|
||||
|
||||
hud_crosshair.qc
|
||||
hud_scope.qc
|
||||
|
|
|
@ -23,16 +23,13 @@ struct
|
|||
int m_iHUDWeaponSelected;
|
||||
float m_flHUDWeaponSelectTime;
|
||||
|
||||
float m_flPrevVGUI;
|
||||
BOOL m_bNeedPrimaryRelease;
|
||||
float m_flReleaseTime;
|
||||
|
||||
|
||||
//TAGGG - assuming this is a fine place to put this
|
||||
// It's the slower movement from holding shift down.
|
||||
int iInputSpeed;
|
||||
int m_iInputSpeed;
|
||||
// Keeping for now, remove later
|
||||
float fVGUI_Display;
|
||||
float m_flUI_Display;
|
||||
|
||||
// CRITICAL:
|
||||
// Should these be per pSeat instead? Unsure if that makes sense.
|
||||
|
|
|
@ -5,9 +5,8 @@
|
|||
void
|
||||
pSeatLocal_init(void)
|
||||
{
|
||||
pSeatLocal->m_flPrevVGUI = VGUI_SCREEN::NONE;
|
||||
pSeatLocal->m_bNeedPrimaryRelease = FALSE;
|
||||
pSeatLocal->m_flReleaseTime = 0;
|
||||
pSeatLocal->m_flUI_Display = UI_SCREEN::NONE;
|
||||
|
||||
|
||||
pSeatLocal->m_inputKeyTapped = 0;
|
||||
pSeatLocal->m_inputKeyDown = 0;
|
||||
|
|
|
@ -1,47 +1,47 @@
|
|||
|
||||
|
||||
#define VGUI_WINDOW_BGCOLOR '0.0 0.0 0.0'
|
||||
#define VGUI_WINDOW_FGCOLOR '1.0 0.5 0.0'
|
||||
#define VGUI_WINDOW_BGALPHA 0.76
|
||||
#define VGUI_WINDOW_FGALPHA 1.0
|
||||
|
||||
vector vVGUIWindowPos;
|
||||
vector vVGUIWindowSiz;
|
||||
|
||||
string sMOTDString[25];
|
||||
string sMapString[35];
|
||||
|
||||
var string sMOTD_total;
|
||||
|
||||
class player;
|
||||
|
||||
|
||||
// Keep in synch with the vguiMenus array of vgui.c
|
||||
enum VGUI_SCREEN{
|
||||
NONE = 0,
|
||||
MOTD,
|
||||
BUYSIDEMENU
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
string sTitle;
|
||||
// Whether to do a VGUI_Window call to draw a window.
|
||||
// Not very customizable for now, intended only for the MoTD, but adapts to different screen sizes.
|
||||
// Could have other settings added later, or even be handled per screen's draw call too for completely re-doing
|
||||
BOOLEAN fDrawMainWindowAuto;
|
||||
|
||||
// Custom draw script for a particular screen choice
|
||||
//TAGGG - now accepts how much to change the font size (and adjust other things) by.
|
||||
// Also accepts the player for getting other info from.
|
||||
void(player arg_player, vector vPos, vector vWindowSiz, float fFontSizeMulti ) vDraw;
|
||||
// What to do the moment the screen is changed to this.
|
||||
void(void) vOnInit;
|
||||
} vguiwindow_t;
|
||||
|
||||
|
||||
|
||||
void CSQC_VGUI_Init(void);
|
||||
float CSQC_VGUI_Draw( player arg_player);
|
||||
void VGUI_ChangeScreen(VGUI_SCREEN fNewScreenID);
|
||||
|
||||
|
||||
|
||||
|
||||
#define VGUI_WINDOW_BGCOLOR '0.0 0.0 0.0'
|
||||
#define VGUI_WINDOW_FGCOLOR '1.0 0.5 0.0'
|
||||
#define VGUI_WINDOW_BGALPHA 0.76
|
||||
#define VGUI_WINDOW_FGALPHA 1.0
|
||||
|
||||
vector vVGUIWindowPos;
|
||||
vector vVGUIWindowSiz;
|
||||
|
||||
string sMOTDString[25];
|
||||
string sMapString[35];
|
||||
|
||||
var string sMOTD_total;
|
||||
|
||||
class player;
|
||||
|
||||
|
||||
// Keep in synch with the vguiMenus array of vgui.c
|
||||
enum UI_SCREEN{
|
||||
NONE = 0,
|
||||
MOTD,
|
||||
BUYMENU
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
string sTitle;
|
||||
// Whether to do a VGUI_Window call to draw a window.
|
||||
// Not very customizable for now, intended only for the MoTD, but adapts to different screen sizes.
|
||||
// Could have other settings added later, or even be handled per screen's draw call too for completely re-doing
|
||||
BOOLEAN fDrawMainWindowAuto;
|
||||
|
||||
// Custom draw script for a particular screen choice
|
||||
//TAGGG - now accepts how much to change the font size (and adjust other things) by.
|
||||
// Also accepts the player for getting other info from.
|
||||
void(player arg_player, vector vPos, vector vWindowSiz, float fFontSizeMulti ) vDraw;
|
||||
// What to do the moment the screen is changed to this.
|
||||
void(void) vOnInit;
|
||||
} vguiwindow_t;
|
||||
|
||||
|
||||
|
||||
void UI_Init(void);
|
||||
float UI_Draw( player arg_player);
|
||||
void UI_ChangeScreen(UI_SCREEN fNewScreenID);
|
||||
|
||||
|
|
@ -26,25 +26,25 @@
|
|||
// be set in an init method instead.
|
||||
|
||||
|
||||
// Keep in synch with vgui.h's VGUI_SCREEN enum choices, besides the NONE choice.
|
||||
// Keep in synch with vgui.h's UI_SCREEN enum choices, besides the NONE choice.
|
||||
// That isn't represented, not even by a dummy.
|
||||
var vguiwindow_t vguiMenus[] = {
|
||||
//{ _("VGUI_TITLE_MOTD"), VGUI_MessageOfTheDay },
|
||||
{ "", TRUE, VGUI_MessageOfTheDay, NULL },
|
||||
{ "", FALSE, VGUI_BuySideMenu_Update, VGUI_BuySideMenu_OnInit}
|
||||
{ "", FALSE, UI_BuyMenu_Update, UI_BuyMenu_OnInit}
|
||||
};
|
||||
|
||||
//var float nextPrintoutTime = -1;
|
||||
|
||||
|
||||
void
|
||||
VGUI_ChangeScreen(VGUI_SCREEN arg_NewScreenID)
|
||||
UI_ChangeScreen(UI_SCREEN arg_NewScreenID)
|
||||
{
|
||||
pSeatLocal->fVGUI_Display = (float)arg_NewScreenID;
|
||||
pSeatLocal->m_flUI_Display = (float)arg_NewScreenID;
|
||||
|
||||
printfline("VGUI_ChangeScreen:: arg_NewScreenID? %d", arg_NewScreenID);
|
||||
printfline("UI_ChangeScreen:: arg_NewScreenID? %d", arg_NewScreenID);
|
||||
|
||||
if(arg_NewScreenID <= VGUI_SCREEN::NONE){
|
||||
if(arg_NewScreenID <= UI_SCREEN::NONE){
|
||||
// If at NONE or below, also do nothing. This has no "vOnInit" behavior.
|
||||
// Besides obligatory cleanup if we choose (which may as well be done right here)
|
||||
// And turn the cursor lock off.
|
||||
|
@ -75,16 +75,16 @@ VGUI_ChangeScreen(VGUI_SCREEN arg_NewScreenID)
|
|||
|
||||
/*
|
||||
=================
|
||||
CSQC_VGUI_Draw
|
||||
UI_Draw
|
||||
|
||||
This is the entry point for FreeTS's (cloned from FreeCS) own "VGUI" implementation
|
||||
Run every frame
|
||||
=================
|
||||
*/
|
||||
float
|
||||
CSQC_VGUI_Draw( player arg_player)
|
||||
UI_Draw(player arg_player)
|
||||
{
|
||||
if ( pSeatLocal->fVGUI_Display == VGUI_SCREEN::NONE ) {
|
||||
if ( pSeatLocal->m_flUI_Display == UI_SCREEN::NONE ) {
|
||||
setcursormode( FALSE );
|
||||
return FALSE;
|
||||
}
|
||||
|
@ -160,19 +160,19 @@ CSQC_VGUI_Draw( player arg_player)
|
|||
vVGUIWindowSiz[1] = window_height_y;
|
||||
|
||||
// draw the window only if this screen says to.
|
||||
if(vguiMenus[ pSeatLocal->fVGUI_Display - 1 ].fDrawMainWindowAuto){
|
||||
VGUI_Window( vVGUIWindowPos, vVGUIWindowSiz, vguiMenus[ pSeatLocal->fVGUI_Display - 1 ].sTitle, [fontSizeMulti*32,fontSizeMulti*32] );
|
||||
if(vguiMenus[ pSeatLocal->m_flUI_Display - 1 ].fDrawMainWindowAuto){
|
||||
VGUI_Window( vVGUIWindowPos, vVGUIWindowSiz, vguiMenus[ pSeatLocal->m_flUI_Display - 1 ].sTitle, [fontSizeMulti*32,fontSizeMulti*32] );
|
||||
}
|
||||
|
||||
// Display the contents of whatever we have selected
|
||||
vguiMenus[ pSeatLocal->fVGUI_Display - 1 ].vDraw( arg_player, vVGUIWindowPos, vVGUIWindowSiz, fontSizeMulti );
|
||||
vguiMenus[ pSeatLocal->m_flUI_Display - 1 ].vDraw( arg_player, vVGUIWindowPos, vVGUIWindowSiz, fontSizeMulti );
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/*
|
||||
=================
|
||||
CSQC_VGUI_Init
|
||||
UI_Init
|
||||
|
||||
Initialize all there is
|
||||
=================
|
||||
|
@ -181,7 +181,7 @@ Initialize all there is
|
|||
// ALSO - this means once for the entire client, so handle all pSeat choices
|
||||
// individually as it does.
|
||||
void
|
||||
CSQC_VGUI_Init(void)
|
||||
UI_Init(void)
|
||||
{
|
||||
string sTemp;
|
||||
int iMOTDLength;
|
||||
|
@ -238,14 +238,14 @@ CSQC_VGUI_Init(void)
|
|||
for (s = 0; s < g_seats.length; s++){
|
||||
pSeat = &g_seats[s];
|
||||
pSeatLocal = &g_seatslocal[s];
|
||||
VGUI_ChangeScreen(VGUI_SCREEN::MOTD);
|
||||
UI_ChangeScreen(UI_SCREEN::MOTD);
|
||||
}
|
||||
}else{
|
||||
// make all pSeats start at the NONE screen instead
|
||||
for (s = 0; s < g_seats.length; s++){
|
||||
pSeat = &g_seats[s];
|
||||
pSeatLocal = &g_seatslocal[s];
|
||||
VGUI_ChangeScreen(VGUI_SCREEN::NONE);
|
||||
UI_ChangeScreen(UI_SCREEN::NONE);
|
||||
}
|
||||
}
|
||||
}
|
3
src/client/ui_buymenu.h
Normal file
3
src/client/ui_buymenu.h
Normal file
|
@ -0,0 +1,3 @@
|
|||
|
||||
extern var BOOL UI_BuyMenu_InitDone;
|
||||
void UI_BuyMenu_onInputEvent(void);
|
File diff suppressed because it is too large
Load diff
|
@ -9,12 +9,9 @@
|
|||
|
||||
|
||||
// Simple UIWidget to absorb mouse-click and key-press events while in
|
||||
// the MoTD or the buysidemenu screens.
|
||||
// the MoTD or the buymenu screens.
|
||||
// Do not give me child elements! Behavior for handling children removed.
|
||||
|
||||
// assuming these are provided elsewhere, works for now.
|
||||
extern var BOOL VGUI_BuySideMenu_InitDone;
|
||||
void BuySideMenu_onInputEvent(void);
|
||||
|
||||
|
||||
class CUIEventGrabber:CUIWidget
|
||||
|
@ -52,8 +49,8 @@ CUIEventGrabber::Input(float flEVType, float flKey, float flChar, float flDevID)
|
|||
// TODO TODO TODO! Check for mouse-clicks (K_MOUSE1) and key presses by separate methods?
|
||||
// Checking for keypresses on a mouse-click or for mouse-coords on a keypress on every
|
||||
// single button (even a mouse, yes/no check every time) is unnecessary.
|
||||
if(pSeatLocal->fVGUI_Display == BUYSIDEMENU){
|
||||
BuySideMenu_onInputEvent();
|
||||
if(pSeatLocal->m_flUI_Display == UI_SCREEN::BUYMENU){
|
||||
UI_BuyMenu_onInputEvent();
|
||||
}
|
||||
|
||||
break;
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
|
|
@ -63,8 +63,8 @@ Colors_RGB8_to_HEX(vector color)
|
|||
void VGUI_MessageOfTheDay(player arg_player, vector vPos, vector vWindowSiz, float fFontSizeMulti ) {
|
||||
|
||||
static void MessageOfTheDay_ButtonOK( void ) {
|
||||
printfline("HEY ButtonOK got CLICKED!!!");
|
||||
VGUI_ChangeScreen(VGUI_SCREEN::BUYSIDEMENU);
|
||||
printfline("HEY ButtonOK got CLICKED");
|
||||
UI_ChangeScreen(UI_SCREEN::BUYMENU);
|
||||
}
|
||||
|
||||
//TAGGG - start from this location instead.
|
||||
|
|
|
@ -108,7 +108,7 @@ Draws a button, returns whether or not a mouse is hovering over it (for inherita
|
|||
====================
|
||||
*/
|
||||
|
||||
//*** NOTE! Buysidemenu buttons don't use this! Only the MoTD close button, at least so far.
|
||||
//*** NOTE! BuyMenu buttons don't use this! Only the MoTD close button, at least so far.
|
||||
float VGUI_Button( string sLabel, void() vFunction, vector vPosition, vector vSize) {
|
||||
vector vLabelPos;
|
||||
|
||||
|
@ -125,7 +125,7 @@ float VGUI_Button( string sLabel, void() vFunction, vector vPosition, vector vSi
|
|||
|
||||
|
||||
if ( VGUI_CheckMouse( vPosition, vSize ) ) {
|
||||
//pSeatLocal->fVGUI_Display
|
||||
//pSeatLocal->m_flUI_Display
|
||||
|
||||
if (pSeatLocal->m_inputMouseClicked == TRUE) {
|
||||
vFunction();
|
||||
|
|
|
@ -192,7 +192,7 @@ Game_Worldspawn(void)
|
|||
// The message of the day.
|
||||
// This saves the contents of the MoTD text file (path given by CVar motdfile) to a series of
|
||||
// serverinfo entries named motdline0, 1, 2, ... for reading back in client/vgui.c from the server
|
||||
// at client-connect time (CSQC_VGUI_Init) to go in the MoTD window whenever needed.
|
||||
// at client-connect time (UI_Init) to go in the MoTD window whenever needed.
|
||||
localcmd(sprintf("echo [MOTD] Loading %s.\n", autocvar_motdfile));
|
||||
filestream fmMOTD = fopen(autocvar_motdfile, FILE_READ);
|
||||
if (fmMOTD >= 0) {
|
||||
|
|
|
@ -24,14 +24,6 @@ void CSEv_TS_playerEquippedWeapon_ii(int newWeaponEquipped, BOOL useAkimbo);
|
|||
|
||||
|
||||
|
||||
#ifdef SERVER
|
||||
void TS_PlayInsertShellSound(player pl);
|
||||
#else
|
||||
void TS_PlayInsertShellSound(player pl);
|
||||
void EV_TS_PlayInsertShellSound(player pl);
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef SERVER
|
||||
void TS_resetViewModel(player pl);
|
||||
#else
|
||||
|
|
|
@ -235,35 +235,6 @@ CSEv_TS_playerEquippedWeapon_ii(int newWeaponEquipped, BOOL useAkimbo){
|
|||
|
||||
|
||||
|
||||
#ifdef SERVER
|
||||
// Send a request to change the animation of the viewmodel directly.
|
||||
void
|
||||
TS_PlayInsertShellSound(player pl){
|
||||
/*
|
||||
WriteByte( MSG_MULTICAST, SVC_CGAMEPACKET );
|
||||
WriteByte( MSG_MULTICAST, EVENT_TS::PLAY_INSERT_SHELL_SND );
|
||||
msg_entity = pl;
|
||||
multicast( [0,0,0], MULTICAST_ONE );
|
||||
*/
|
||||
}
|
||||
|
||||
#else
|
||||
void
|
||||
TS_PlayInsertShellSound(player pl){
|
||||
EV_TS_PlayInsertShellSound(pl);
|
||||
}
|
||||
//CLIENTSIDE. now what do I do over here?
|
||||
void
|
||||
EV_TS_PlayInsertShellSound(player pl){
|
||||
//TODO - lower attenuation maybe?
|
||||
// Nevermind, this is a client-only sound for now anyway.
|
||||
localsound("weapons/insert-shell.wav", CHAN_AUTO, 1.0f);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
// The server may want to tell the client to reset its viewmodel.
|
||||
// DUMMIED - nevermind that for now, assuming the logic is called from server/client
|
||||
// individually like a lot of weapon's logic.
|
||||
|
@ -334,19 +305,22 @@ EV_TS_resetPlayer(player pl, BOOL resetInventory){
|
|||
#ifdef CLIENT
|
||||
// Called by the GameRules, PlayerDeath, for the client to do something as soon as
|
||||
// possible.
|
||||
// WHOOPS. All vars since have been dummied or changes here are ineffective,
|
||||
// keeping the event in case it has some use later.
|
||||
void
|
||||
EV_PlayerDeath(void){
|
||||
printfline("EV_PlayerDeath");
|
||||
|
||||
// Require a tiny amount of time and a mouse release before a respawn, so that
|
||||
// dying with the mouse held down isn't enough to trigger a respawn request.
|
||||
pSeatLocal->m_bNeedPrimaryRelease = TRUE;
|
||||
pSeatLocal->m_flReleaseTime = time + 0.15;
|
||||
//pSeatLocal->m_bNeedPrimaryRelease = TRUE;
|
||||
//pSeatLocal->m_flReleaseTime = time + 0.15;
|
||||
|
||||
// Unfortunately not as effective as it may look.
|
||||
// On the player using "kill" in console, a CSQC_Parse_Damage call happens shortly
|
||||
// after this PlayerDeath one, somehow. Stopping damage-drawing on the "*dead" key
|
||||
// being 1 works.
|
||||
pSeat->m_flDamageAlpha = 0;
|
||||
//pSeat->m_flDamageAlpha = 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
|
@ -36,12 +36,11 @@ Game_Input(void)
|
|||
// If not, grab pSeat->m_ePlayer instead!
|
||||
player pl = (player)self;
|
||||
|
||||
|
||||
if(pl.iState != PLAYER_STATE::SPAWNED){
|
||||
// not ingame (fake spectator)? Do another check instead: spawning.
|
||||
#ifdef CLIENT
|
||||
if((input_buttons & INPUT_BUTTON0) && !(pl.gflags & GF_SEMI_TOGGLED) ){
|
||||
if(pSeatLocal->fVGUI_Display == VGUI_SCREEN::NONE && pl.iState != PLAYER_STATE::SPAWNED){
|
||||
if(pSeatLocal->m_flUI_Display == UI_SCREEN::NONE && pl.iState != PLAYER_STATE::SPAWNED){
|
||||
sendevent( "GamePlayerSpawn", "");
|
||||
}
|
||||
}
|
||||
|
@ -52,14 +51,57 @@ Game_Input(void)
|
|||
pl.gflags &= ~GF_SEMI_TOGGLED;
|
||||
}
|
||||
#endif
|
||||
// client or server, don't pay attention to the rest of this file if not spawned
|
||||
return;
|
||||
}
|
||||
#ifdef CLIENT
|
||||
else{
|
||||
// not spawned? Some notes on possible things to involve, all dummied for now
|
||||
|
||||
|
||||
// This was removed? Legacy VGUI
|
||||
// If we are inside a UI, don't let the client do stuff outside
|
||||
// (looks like this is no longer necessary)
|
||||
/*
|
||||
if (pl.iState != PLAYER_STATE::SPAWNED && pSeatLocal->m_flUI_Display != UI_SCREEN::NONE){
|
||||
pSeat->m_flInputBlockTime = time + 0.2;
|
||||
}
|
||||
*/
|
||||
|
||||
// No need to check for calling TS_HUD_DrawWeaponSelect_CheckClick or
|
||||
// HUD_DrawWeaponSelect_Trigger here, Nuclide calls the latter which works
|
||||
// fine.
|
||||
|
||||
// CRITICAL.
|
||||
// DISABLED.
|
||||
// This is trying to close weaponselect on detecting a right-click, but it
|
||||
// has issues.
|
||||
// Idea is, this needs to *absorb* the right-click, and stop it from reaching
|
||||
// the rest of the client and server to work with weapons, like a change-ironsight
|
||||
// order.
|
||||
// This might stop the client weapon logic from seeing the right click, but not
|
||||
// the server.
|
||||
// It appears there is no way to stop that without the FTE built-in event method
|
||||
// CSQC_Input_Frame (defined by Nuclide) letting the gamemod block right-click
|
||||
// inputs per some condition, like weapon-select being up.
|
||||
/*
|
||||
if(pSeat->m_iInputAttack2){ //input_buttons & INPUT_BUTTON3){
|
||||
if(HUD_CloseWeaponSelect(TRUE)){
|
||||
pSeat->m_flInputBlockTime = time + 0.2;
|
||||
input_impulse = 0;
|
||||
input_buttons = 0;
|
||||
pSeat->m_iInputAttack2 = FALSE;
|
||||
}else{
|
||||
//pSeat->m_iInputAttack2 = TRUE;
|
||||
}
|
||||
}
|
||||
*/
|
||||
}// pi.iState checks
|
||||
#endif
|
||||
|
||||
// Must be ingame to reach beyond here
|
||||
|
||||
|
||||
|
||||
|
||||
//TAGGG - good place for this? Cloned from w_attack_next as a separate counter
|
||||
// for akimbo firing to use.
|
||||
// This method, Game_Input, is called by Nuclide's pmove.qc in the same place
|
||||
|
@ -139,8 +181,18 @@ Game_Input(void)
|
|||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
// !!!
|
||||
// An override for this to go in CSQC_Input_Frame would be very nice I think,
|
||||
// unless there is some other way that I'm missing.
|
||||
/*
|
||||
if (pSeatLocal->m_iInputSpeed == TRUE) {
|
||||
//input_buttons |= INPUT_BUTTON9;
|
||||
input_buttons |= INPUT_BUTTON7;
|
||||
//self.flags |= FL_SNEAK;
|
||||
}else{
|
||||
//self.flags &= ~FL_SNEAK;
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
// TS way, weapon thinks happen alongside checking inputs
|
||||
|
|
|
@ -301,9 +301,9 @@ player::Physics_MaxSpeed(void)
|
|||
return targetSpeed;
|
||||
}
|
||||
|
||||
//FL_CROUCHING
|
||||
// Sneak?
|
||||
if (input_buttons & INPUT_BUTTON7) {
|
||||
//sneak forgets slot limits.
|
||||
// sneak forgets slot limits.
|
||||
targetSpeed *= 0.38;
|
||||
}else{
|
||||
// speed factor of 0 means 55% speed.
|
||||
|
|
|
@ -118,43 +118,43 @@ const string sfx_pitched_s[] =
|
|||
"weapons/beretta/fire.wav",
|
||||
"weapons/beretta/fire-sil.wav",
|
||||
"weapons/contender/fire.wav",
|
||||
"weapons/deagle/fire-sil.wav",
|
||||
"weapons/deagle/fire.wav",
|
||||
"weapons/fnh/fnh-fire-sil.wav",
|
||||
"weapons/deagle/fire-sil.wav",
|
||||
"weapons/fnh/fnh-fire.wav",
|
||||
"weapons/glock/glock-fire-sil.wav",
|
||||
"weapons/fnh/fnh-fire-sil.wav",
|
||||
"weapons/glock/glock-fire.wav",
|
||||
"weapons/glock22/glock22-fire-sil.wav",
|
||||
"weapons/glock/glock-fire-sil.wav",
|
||||
"weapons/glock22/glock22-fire.wav",
|
||||
"weapons/pdw/fire-sil.wav",
|
||||
"weapons/glock22/glock22-fire-sil.wav",
|
||||
"weapons/pdw/fire.wav",
|
||||
"weapons/pdw/fire-sil.wav",
|
||||
"weapons/katana/miss.wav",
|
||||
"weapons/katana/miss1.wav",
|
||||
"weapons/m4/m4-fire-sil.wav",
|
||||
"weapons/m4/m4-fire.wav",
|
||||
"weapons/m4/m4-fire-sil.wav",
|
||||
"weapons/m16/fire.wav",
|
||||
"weapons/m60/m60-fire.wav",
|
||||
"weapons/mac10/mac10-fire-sil.wav",
|
||||
"weapons/mac10/mac10-fire.wav",
|
||||
"weapons/uzi/uzi-fire-sil.wav",
|
||||
"weapons/mac10/mac10-fire-sil.wav",
|
||||
"weapons/uzi/uzi-fire.wav",
|
||||
"weapons/uzi/uzi-fire-sil.wav",
|
||||
"weapons/mossberg/fire.wav",
|
||||
"weapons/mp5k/mp5k-fire-sil.wav",
|
||||
"weapons/mp5k/mp5k-fire.wav",
|
||||
"weapons/mp5k/mp5k-fire-sil.wav",
|
||||
"weapons/mp5sd/mp5sd-fire.wav",
|
||||
"weapons/bull/fire01.wav",
|
||||
"weapons/ruger/fire.wav",
|
||||
"weapons/sawedoff/fire.wav",
|
||||
"weapons/skorpion/fire.wav",
|
||||
"weapons/mk23/mk23-fire-sil.wav",
|
||||
"weapons/mk23/mk23-fire.wav",
|
||||
"weapons/mk23/mk23-fire-sil.wav",
|
||||
"weapons/spas12/spas12-fire.wav",
|
||||
"weapons/aug/aug-fire-sil.wav",
|
||||
"weapons/aug/aug-fire.wav",
|
||||
"weapons/tmp/fire-sil.wav",
|
||||
"weapons/aug/aug-fire-sil.wav",
|
||||
"weapons/tmp/fire.wav",
|
||||
"weapons/ump/ump-fire-sil.wav",
|
||||
"weapons/tmp/fire-sil.wav",
|
||||
"weapons/ump/ump-fire.wav",
|
||||
"weapons/ump/ump-fire-sil.wav",
|
||||
"weapons/usas/usas-fire.wav",
|
||||
"explo/explode.wav",
|
||||
"explo/explode1.wav",
|
||||
|
|
|
@ -531,7 +531,6 @@ weapon_shotgun_onThink_reloadLogic(player pl, weapondata_gun_t* basePRef, weapon
|
|||
|
||||
if(pl.shotgunAddAmmoSoundTime != -1 && pl.w_attack_next <= pl.shotgunAddAmmoSoundTime){
|
||||
|
||||
//TS_PlayInsertShellSound(pl);
|
||||
//TS_Weapons_PlaySoundChannelDirect(pl, "weapons/insert-shell.wav", CHAN_AUTO);
|
||||
|
||||
// TODO: if you want other players to hear this, the server should play it for all players
|
||||
|
|
|
@ -225,7 +225,7 @@ w_glock18_hud(void)
|
|||
|
||||
}
|
||||
|
||||
// NOPE! Handled by the buysidemenu, could make this give the instructions for drawing the
|
||||
// NOPE! Handled by the BuyMenu, could make this give the instructions for drawing the
|
||||
// button with the icon if really wanted
|
||||
void
|
||||
w_glock18_hudpic(int selected, vector pos, float a)
|
||||
|
|
|
@ -62,7 +62,6 @@ weapondata_basic_t weapon_karate =
|
|||
|
||||
|
||||
|
||||
|
||||
void
|
||||
w_karate_precache(void)
|
||||
{
|
||||
|
|
|
@ -53,9 +53,6 @@ weapondata_melee_t weapon_katana =
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void
|
||||
w_katana_precache(void)
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue