本文整理汇总了C++中consoleplayer函数的典型用法代码示例。如果您正苦于以下问题:C++ consoleplayer函数的具体用法?C++ consoleplayer怎么用?C++ consoleplayer使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了consoleplayer函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: CL_PredictPlayers
//
// CL_PredictPlayers
//
void CL_PredictPlayers (int predtic)
{
size_t n = players.size();
for(size_t i = 0; i < n; i++)
{
player_t *p = &players[i];
if (!p->ingame() || !p->mo)
continue;
// GhostlyDeath -- Ignore Spectators
if (p->spectator)
continue;
// Update this player if their last known status is before this tic
if(p->tic < predtic)
{
if(p == &consoleplayer())
{
int buf = predtic%MAXSAVETICS;
ticcmd_t *cmd = &consoleplayer().cmd;
memcpy(cmd, &localcmds[buf], sizeof(ticcmd_t));
p->mo->angle = cl_angle[predtic%MAXSAVETICS];
p->mo->pitch = cl_pitch[predtic%MAXSAVETICS];
p->viewheight = cl_viewheight[predtic%MAXSAVETICS];
p->deltaviewheight = cl_deltaviewheight[predtic%MAXSAVETICS];
p->mo->reactiontime = reactiontime[predtic%MAXSAVETICS];
}
CL_PredictPlayer(p);
}
}
}
示例2: writeLocalCmd
//
// writeLocalCmd()
//
// Generates a message indicating the current position and angle of the
// consoleplayer, taking the place of ticcmds.
void NetDemo::writeLocalCmd(buf_t *netbuffer) const
{
// Record the local player's data
player_t *player = &consoleplayer();
if (!player->mo)
return;
AActor *mo = player->mo;
MSG_WriteByte(netbuffer, svc_netdemocap);
MSG_WriteByte(netbuffer, player->cmd.ucmd.buttons);
MSG_WriteByte(netbuffer, player->cmd.ucmd.impulse);
MSG_WriteShort(netbuffer, player->cmd.ucmd.yaw);
MSG_WriteShort(netbuffer, player->cmd.ucmd.forwardmove);
MSG_WriteShort(netbuffer, player->cmd.ucmd.sidemove);
MSG_WriteShort(netbuffer, player->cmd.ucmd.upmove);
MSG_WriteShort(netbuffer, player->cmd.ucmd.pitch);
MSG_WriteByte(netbuffer, mo->waterlevel);
MSG_WriteLong(netbuffer, mo->x);
MSG_WriteLong(netbuffer, mo->y);
MSG_WriteLong(netbuffer, mo->z);
MSG_WriteLong(netbuffer, mo->momx);
MSG_WriteLong(netbuffer, mo->momy);
MSG_WriteLong(netbuffer, mo->momz);
MSG_WriteLong(netbuffer, mo->angle);
MSG_WriteLong(netbuffer, mo->pitch);
MSG_WriteLong(netbuffer, player->viewheight);
MSG_WriteLong(netbuffer, player->deltaviewheight);
MSG_WriteLong(netbuffer, player->jumpTics);
MSG_WriteLong(netbuffer, mo->reactiontime);
MSG_WriteByte(netbuffer, player->readyweapon);
MSG_WriteByte(netbuffer, player->pendingweapon);
}
示例3: CL_PredictLocalPlayer
//
// CL_PredictLocalPlayer
//
//
static void CL_PredictLocalPlayer(int predtic)
{
player_t *player = &consoleplayer();
if (!player->ingame() || !player->mo || player->tic >= predtic)
return;
// Restore the angle, viewheight, etc for the player
P_SetPlayerSnapshotNoPosition(player, cl_savedsnaps[predtic % MAXSAVETICS]);
// Copy the player's previous input ticcmd for the tic 'predtic'
// to player.cmd so that P_MovePlayer can simulate their movement in
// that tic
NetCommand *netcmd = &localcmds[predtic % MAXSAVETICS];
netcmd->toPlayer(player);
if (!cl_predictlocalplayer)
{
if (predtic == gametic)
{
P_PlayerThink(player);
player->mo->RunThink();
}
return;
}
if (!predicting)
P_PlayerThink(player);
else
P_MovePlayer(player);
player->mo->RunThink();
}
示例4: D_SetupUserInfo
void D_SetupUserInfo(void)
{
UserInfo* coninfo = &consoleplayer().userinfo;
std::string netname = cl_name.str();
if (netname.length() > MAXPLAYERNAME)
netname.erase(MAXPLAYERNAME);
coninfo->netname = netname;
coninfo->team = D_TeamByName (cl_team.cstring()); // [Toke - Teams]
coninfo->color = V_GetColorFromString (NULL, cl_color.cstring());
coninfo->gender = D_GenderByName (cl_gender.cstring());
coninfo->aimdist = (fixed_t)(cl_autoaim * 16384.0);
coninfo->unlag = (cl_unlag != 0);
coninfo->update_rate = cl_updaterate;
coninfo->predict_weapons = (cl_predictweapons != 0);
// sanitize the weapon switching choice
if (cl_switchweapon < 0 || cl_switchweapon > 2)
cl_switchweapon.ForceSet(float(WPSW_ALWAYS));
coninfo->switchweapon = (weaponswitch_t)cl_switchweapon.asInt();
// Copies the updated cl_weaponpref* cvars to coninfo->weapon_prefs[]
D_PrepareWeaponPreferenceUserInfo();
}
示例5: D_SetupUserInfo
void D_SetupUserInfo(void)
{
userinfo_t *coninfo = &consoleplayer().userinfo;
// Save the previous weapon preferences
weapontype_t backup_weapon_prefs[NUMWEAPONS];
memcpy(backup_weapon_prefs, coninfo->weapon_prefs, sizeof(backup_weapon_prefs));
memset (&consoleplayer().userinfo, 0, sizeof(userinfo_t));
strncpy (coninfo->netname, cl_name.cstring(), MAXPLAYERNAME);
coninfo->team = D_TeamByName (cl_team.cstring()); // [Toke - Teams]
coninfo->color = V_GetColorFromString (NULL, cl_color.cstring());
coninfo->skin = R_FindSkin (cl_skin.cstring());
coninfo->gender = D_GenderByName (cl_gender.cstring());
coninfo->aimdist = (fixed_t)(cl_autoaim * 16384.0);
coninfo->unlag = cl_unlag;
coninfo->update_rate = cl_updaterate;
coninfo->switchweapon = (weaponswitch_t)cl_switchweapon.asInt();
// Copies the updated cl_weaponpref* cvars to coninfo->weapon_prefs[]
CL_PrepareWeaponPreferenceUserInfo();
// Find which weapon preference slot was changed
for (size_t i = 0; i < NUMWEAPONS; i++)
{
if (backup_weapon_prefs[i] != coninfo->weapon_prefs[i])
{
// slot i was changed
weapontype_t oldweapon = backup_weapon_prefs[i];
weapontype_t newweapon = coninfo->weapon_prefs[i];
// swap the weapon in slot i with whatever slot already has newweapon
for (size_t j = 0; j < NUMWEAPONS; j++)
{
if (coninfo->weapon_prefs[j] == newweapon && j != i)
{
coninfo->weapon_prefs[j] = oldweapon;
CL_SetWeaponPreferenceCvar(j, oldweapon);
break;
}
}
break;
}
}
}
示例6: P_ActivateMobj
BOOL P_ActivateMobj (AActor *mobj, AActor *activator)
{
if (mobj->flags & MF_COUNTKILL)
{
mobj->flags2 &= !(MF2_DORMANT | MF2_INVULNERABLE);
return true;
}
else
{
switch (mobj->type)
{
case MT_SPARK:
{
int count = mobj->args[0];
char sound[16];
if (count == 0)
count = 32;
P_DrawSplash (count, mobj->x, mobj->y, mobj->z, mobj->angle, 1);
sprintf (sound, "world/spark%d", 1+(M_Random() % 3));
S_Sound (mobj, CHAN_AUTO, sound, 1, ATTN_STATIC);
break;
}
case MT_FOUNTAIN:
mobj->effects &= ~FX_FOUNTAINMASK;
mobj->effects |= mobj->args[0] << FX_FOUNTAINSHIFT;
break;
case MT_SECRETTRIGGER:
if (activator->player->mo == consoleplayer().camera)
{
if (mobj->args[0] <= 1)
{
C_MidPrint ("A secret is revealed!");
}
if (mobj->args[0] == 0 || mobj->args[0] == 2)
{
S_Sound (activator, CHAN_AUTO, "misc/secret", 1, ATTN_NORM);
}
}
level.found_secrets++;
mobj->Destroy ();
break;
default:
break;
}
}
return false;
}
示例7: CL_PredictSpectator
//
// CL_PredictSpectator
//
//
static void CL_PredictSpectator()
{
player_t *player = &consoleplayer();
if (!player->spectator)
return;
predicting = true;
P_PlayerThink(player);
P_CalcHeight(player);
predicting = false;
}
示例8: ST_refreshBackground
void ST_refreshBackground(void)
{
if (st_statusbaron)
{
// [RH] If screen is wider than the status bar,
// draw stuff around status bar.
if (FG->width > ST_WIDTH)
{
R_DrawBorder (0, ST_Y, ST_X, FG->height);
R_DrawBorder (FG->width - ST_X, ST_Y, FG->width, FG->height);
}
BG->DrawPatch (sbar, 0, 0);
if (sv_gametype == GM_CTF) {
BG->DrawPatch (flagsbg, ST_FLAGSBGX, ST_FLAGSBGY);
BG->DrawPatch (flagbox, ST_FLGBOXX, ST_FLGBOXY);
} else if (sv_gametype == GM_COOP)
BG->DrawPatch (armsbg, ST_ARMSBGX, ST_ARMSBGY);
if (multiplayer)
{
if (!demoplayback || !democlassic) {
// [RH] Always draw faceback with the player's color
// using a translation rather than a different patch.
V_ColorMap = translationtables + (consoleplayer().id) * 256;
BG->DrawTranslatedPatch (faceback, ST_FX, ST_FY);
} else {
BG->DrawPatch (faceclassic[consoleplayer().id-1], ST_FX, ST_FY);
}
}
BG->Blit (0, 0, 320, 32, stnumscreen, 0, 0, 320, 32);
if (!st_scale)
stnumscreen->Blit (0, 0, 320, 32,
FG, ST_X, ST_Y, ST_WIDTH, ST_HEIGHT);
}
}
示例9: SpyPlayerName
// Return a string that contains the name of the player being spectated,
// or a blank string if you are looking out of your own viewpoint.
std::string SpyPlayerName(int& color) {
color = CR_GREY;
player_t *plyr = &displayplayer();
if (plyr == &consoleplayer()) {
return "";
}
if (sv_gametype == GM_TEAMDM || sv_gametype == GM_CTF) {
color = teamTextColor(plyr->userinfo.team);
}
return plyr->userinfo.netname;
}
示例10: ST_nameDraw
void ST_nameDraw (int y)
{
player_t *plyr = &displayplayer();
if (plyr == &consoleplayer())
return;
char *string = plyr->userinfo.netname;
size_t x = (screen->width - V_StringWidth (string)*CleanXfac) >> 1;
if (level.time < NameUp)
screen->DrawTextClean (CR_GREEN, x, y, string);
else
screen->DrawTextCleanLuc (CR_GREEN, x, y, string);
}
示例11: D_PrepareWeaponPreferenceUserInfo
//
// D_PrepareWeaponPreferenceUserInfo
//
// Copies the weapon order preferences from the cl_weaponpref_* cvars
// to the userinfo struct for the consoleplayer.
//
void D_PrepareWeaponPreferenceUserInfo()
{
byte *prefs = consoleplayer().userinfo.weapon_prefs;
for (size_t i = 0; i < NUMWEAPONS; i++)
{
// sanitize the weapon preferences
if (weaponpref_cvar_map[i]->asInt() < 0)
weaponpref_cvar_map[i]->ForceSet(0.0f);
if (weaponpref_cvar_map[i]->asInt() >= NUMWEAPONS)
weaponpref_cvar_map[i]->ForceSet(float(NUMWEAPONS - 1));
prefs[i] = weaponpref_cvar_map[i]->asInt();
}
}
示例12: RenderAutomap
void RenderAutomap()
{
size_t i;
glDisable(GL_TEXTURE_2D);
glColor4f(0.2,0.2,0,1);
DrawQuad(0,0,1,1);
glColor4f(1,1,1,1);
glPushMatrix();
glTranslatef(0.5, 0.5, 0);
glScalef(-0.001, 0.001, 0.001);
AActor *mo = consoleplayer().mo;
if(mo)
glTranslatef(FIXED2FLOAT(mo->x), FIXED2FLOAT(mo->y), 0);
glRotatef(180, 0, 0, 1);
glBegin(GL_LINES);
// grid
// walls
for(i = 0; i < numlines; i++)
{
if (!(lines[i].flags & ML_MAPPED))
continue;
glVertex2f(FIXED2FLOAT(lines[i].v1->x), FIXED2FLOAT(lines[i].v1->y));
glVertex2f(FIXED2FLOAT(lines[i].v2->x), FIXED2FLOAT(lines[i].v2->y));
}
// players
for (i = 0; i < players.size(); i++)
{
}
// things
glEnd();
glPopMatrix();
}
示例13: CL_PredictMove
//
// CL_PredicMove
//
void CL_PredictMove (void)
{
if (noservermsgs)
return;
player_t *p = &consoleplayer();
if (!p->tic || !p->mo)
return;
// Save player angle, viewheight,deltaviewheight and jumpTics.
// Will use it later to predict movements
int buf = gametic%MAXSAVETICS;
cl_angle[buf] = p->mo->angle;
cl_pitch[buf] = p->mo->pitch;
cl_viewheight[buf] = p->viewheight;
cl_deltaviewheight[buf] = p->deltaviewheight;
cl_jumpTics[buf] = p->jumpTics;
cl_reactiontime[buf] = p->mo->reactiontime;
// Disable sounds, etc, during prediction
predicting = true;
// Set predictable items to their last received positions
CL_ResetPlayers();
CL_ResetSectors();
int predtic = gametic - MAXSAVETICS;
if(predtic < 0)
predtic = 0;
// Predict each tic
while(predtic < gametic)
{
CL_PredictPlayers(predtic);
CL_PredictSectors(predtic);
++predtic;
}
predicting = false;
CL_PredictPlayers(predtic);
CL_PredictSectors(predtic);
}
示例14: C_DoSpectatorKey
//
// C_DoSpectatorKey
//
// [SL] 2012-09-14 - Handles the hard-coded key bindings used while spectating
// or during NetDemo playback. Returns false if the key pressed is not
// bound to any spectating command such as spynext.
//
bool C_DoSpectatorKey (event_t *ev)
{
if (!consoleplayer().spectator && !netdemo.isPlaying() && !netdemo.isPaused())
return false;
if (ev->type == ev_keydown && ev->data1 == KEY_MWHEELUP)
{
AddCommandString("spyprev");
return true;
}
if (ev->type == ev_keydown && ev->data1 == KEY_MWHEELDOWN)
{
AddCommandString("spynext");
return true;
}
return false;
}
示例15: CTF_CarryFlag
//
// [Toke - CTF] CTF_CarryFlag
// Spawns a flag on a players location and links the flag to the player
//
void CTF_CarryFlag (player_t &player, flag_t flag)
{
if (!validplayer(player))
return;
player.flags[flag] = true;
CTFdata[flag].flagger = player.id;
CTFdata[flag].state = flag_carried;
// spawn visible flags on other players
if(&player != &consoleplayer())
{
AActor *actor = new AActor(0, 0, 0, flag_table[flag][flag_carried]);
CTFdata[flag].actor = actor->ptr();
CTF_MoveFlags();
}
}