raze/source/sw/src/osdcmds.cpp

172 lines
4.8 KiB
C++
Raw Normal View History

2020-01-23 12:13:20 +00:00
//-------------------------------------------------------------------------
/*
Copyright (C) 2010 EDuke32 developers and contributors
Modified by Raze developers and contributors
This file was part of EDuke32.
EDuke32 is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License version 2
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
//-------------------------------------------------------------------------
#include "ns.h" // Must come before everything else!
#include "ns.h"
#include "build.h"
#include "names2.h"
#include "panel.h"
#include "game.h"
#include "mytypes.h"
#include "gamecontrol.h"
#include "gstrings.h"
#include "v_text.h"
#include "printf.h"
2020-01-23 12:13:20 +00:00
#include "misc.h"
2020-01-23 12:13:20 +00:00
#include "menus.h"
#include "mapinfo.h"
#include "jsector.h"
#include "network.h"
#include "gamestate.h"
#include "player.h"
2020-01-23 12:13:20 +00:00
BEGIN_SW_NS
static int osdcmd_warptocoords(CCmdFuncPtr parm)
{
if (parm->numparms < 3 || parm->numparms > 5)
return CCMD_SHOWHELP;
Player->oposx = Player->posx = atoi(parm->parms[0]);
Player->oposy = Player->posy = atoi(parm->parms[1]);
Player->oposz = Player->posz = atoi(parm->parms[2]);
if (parm->numparms >= 4)
{
Player->angle.oang = Player->angle.ang = buildang(atoi(parm->parms[3]));
}
if (parm->numparms == 5)
{
Player->horizon.ohoriz = Player->horizon.horiz = buildhoriz(atoi(parm->parms[4]));
}
return CCMD_OK;
}
static int osdcmd_mirror(CCmdFuncPtr parm)
{
char base[80];
int16_t op1 = 0;
if (parm->numparms < 1)
{
return CCMD_SHOWHELP;
}
if (op1 < 0 || op1 > 9)
{
Printf("Mirror number is out of range!");
return CCMD_OK;
}
Printf("camera is the ST1 sprite used as the view spot");
Printf("camspite is the SpriteNum of the drawtotile tile in editart");
Printf("camspic is the tile number of the drawtotile in editart");
Printf("iscamera is whether or not this mirror is a camera type");
Printf(" ");
Printf("mirror[%d].mirrorwall = %d", op1, mirror[op1].mirrorwall);
Printf("mirror[%d].mirrorsector = %d", op1, mirror[op1].mirrorsector);
Printf("mirror[%d].camera = %d", op1, mirror[op1].camera);
Printf("mirror[%d].camsprite = %d", op1, mirror[op1].camsprite);
Printf("mirror[%d].campic = %d", op1, mirror[op1].campic);
Printf("mirror[%d].iscamera = %d", op1, mirror[op1].ismagic);
return CCMD_OK;
}
static int osdcmd_third_person_view(CCmdFuncPtr parm)
{
if (gamestate != GS_LEVEL) return CCMD_OK;
auto pp = &Player[myconnectindex];
if (inputState.ShiftPressed())
{
if (TEST(pp->Flags, PF_VIEW_FROM_OUTSIDE))
pp->view_outside_dang = NORM_ANGLE(pp->view_outside_dang + 256);
}
else
{
if (TEST(pp->Flags, PF_VIEW_FROM_OUTSIDE))
{
RESET(pp->Flags, PF_VIEW_FROM_OUTSIDE);
}
else
{
SET(pp->Flags, PF_VIEW_FROM_OUTSIDE);
pp->camera_dist = 0;
}
}
return CCMD_OK;
}
static int osdcmd_coop_view(CCmdFuncPtr parm)
{
if (gamestate != GS_LEVEL) return CCMD_OK;
if (gNet.MultiGameType == MULTI_GAME_COOPERATIVE)
{
screenpeek = connectpoint2[screenpeek];
if (screenpeek < 0)
screenpeek = connecthead;
if (screenpeek == myconnectindex)
{
// JBF: figure out what's going on here
auto pp = &Player[myconnectindex];
DoPlayerDivePalette(pp); // Check Dive again
DoPlayerNightVisionPalette(pp); // Check Night Vision again
}
else
{
PLAYERp tp = Player + screenpeek;
DoPlayerDivePalette(tp);
DoPlayerNightVisionPalette(tp);
}
}
return CCMD_OK;
}
static int osdcmd_noop(CCmdFuncPtr parm)
{
// this is for silencing key bindings only.
return CCMD_OK;
}
2020-01-23 12:13:20 +00:00
int32_t registerosdcommands(void)
{
C_RegisterFunction("mirror_debug", "mirror [mirrornum]: print mirror debug info", osdcmd_mirror);
C_RegisterFunction("warptocoords","warptocoords [x] [y] [z] [ang] (optional) [horiz] (optional): warps the player to the specified coordinates",osdcmd_warptocoords);
C_RegisterFunction("third_person_view", "Switch to third person view", osdcmd_third_person_view);
C_RegisterFunction("coop_view", "Switch player to view from in coop", osdcmd_coop_view);
C_RegisterFunction("show_weapon", "Show opponents' weapons", osdcmd_noop);
2020-01-23 12:13:20 +00:00
return 0;
}
END_SW_NS