From cab1b60ffc2a39f22cea1ebdafd52113cf3e3f72 Mon Sep 17 00:00:00 2001 From: Rachael Alexanderson Date: Tue, 13 Dec 2016 18:47:56 -0500 Subject: [PATCH] - Some cleanups for c_cmds.cpp, exported some functions as well as functions used for "print/targetinv" to their own file. --- src/CMakeLists.txt | 3 +- src/c_cmds.cpp | 34 ++++------ src/c_functions.cpp | 120 ++++++++++++++++++++++++++++++++++ src/c_functions.h | 37 +++++++++++ src/g_inventory/a_pickups.cpp | 24 ++----- 5 files changed, 174 insertions(+), 44 deletions(-) create mode 100644 src/c_functions.cpp create mode 100644 src/c_functions.h diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 49153f574..d006d2948 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -997,6 +997,7 @@ set (PCH_SOURCES c_cvars.cpp c_dispatch.cpp c_expr.cpp + c_functions.cpp cmdlib.cpp colormatcher.cpp compatibility.cpp @@ -1389,7 +1390,7 @@ source_group("Audio Files\\WildMidi\\Headers" REGULAR_EXPRESSION "^${CMAKE_CURRE source_group("Audio Files\\WildMidi\\Source" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/wildmidi/.+\\.cpp$") source_group("External\\Math" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/math/.+") source_group("External\\RapidJSON" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/rapidjson/.+") -source_group("Externak\\SFMT" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/sfmt/.+") +source_group("External\\SFMT" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/sfmt/.+") source_group("FraggleScript" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/fragglescript/.+") source_group("Games\\Strife Game" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/g_strife/.+") source_group("Intermission" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/intermission/.+") diff --git a/src/c_cmds.cpp b/src/c_cmds.cpp index c9e6dfe93..343c442fe 100644 --- a/src/c_cmds.cpp +++ b/src/c_cmds.cpp @@ -71,6 +71,7 @@ #include "v_video.h" #include "r_utility.h" #include "r_data/r_interpolate.h" +#include "c_functions.h" extern FILE *Logfile; extern bool insave; @@ -870,20 +871,17 @@ CCMD (wdir) // // //----------------------------------------------------------------------------- + CCMD(linetarget) { FTranslatedLineTarget t; if (CheckCheatmode () || players[consoleplayer].mo == NULL) return; - P_AimLineAttack(players[consoleplayer].mo,players[consoleplayer].mo->Angles.Yaw, MISSILERANGE, &t, 0.); + C_AimLine(&t, false); if (t.linetarget) - { - Printf("Target=%s, Health=%d, Spawnhealth=%d\n", - t.linetarget->GetClass()->TypeName.GetChars(), - t.linetarget->health, - t.linetarget->SpawnHealth()); - } - else Printf("No target found\n"); + C_PrintInfo(t.linetarget); + else + Printf("No target found\n"); } // As linetarget, but also give info about non-shootable actors @@ -892,28 +890,18 @@ CCMD(info) FTranslatedLineTarget t; if (CheckCheatmode () || players[consoleplayer].mo == NULL) return; - P_AimLineAttack(players[consoleplayer].mo,players[consoleplayer].mo->Angles.Yaw, MISSILERANGE, - &t, 0., ALF_CHECKNONSHOOTABLE|ALF_FORCENOSMART); + C_AimLine(&t, true); if (t.linetarget) - { - Printf("Target=%s, Health=%d, Spawnhealth=%d\n", - t.linetarget->GetClass()->TypeName.GetChars(), - t.linetarget->health, - t.linetarget->SpawnHealth()); - PrintMiscActorInfo(t.linetarget); - } - else Printf("No target found. Info cannot find actors that have " + C_PrintInfo(t.linetarget); + else + Printf("No target found. Info cannot find actors that have " "the NOBLOCKMAP flag or have height/radius of 0.\n"); } CCMD(myinfo) { if (CheckCheatmode () || players[consoleplayer].mo == NULL) return; - Printf("Target=%s, Health=%d, Spawnhealth=%d\n", - players[consoleplayer].mo->GetClass()->TypeName.GetChars(), - players[consoleplayer].mo->health, - players[consoleplayer].mo->SpawnHealth()); - PrintMiscActorInfo(players[consoleplayer].mo); + C_PrintInfo(players[consoleplayer].mo); } typedef bool (*ActorTypeChecker) (AActor *); diff --git a/src/c_functions.cpp b/src/c_functions.cpp new file mode 100644 index 000000000..f7920ee11 --- /dev/null +++ b/src/c_functions.cpp @@ -0,0 +1,120 @@ +/* +** c_functions.cpp +** Miscellaneous console command helper functions. +** +**--------------------------------------------------------------------------- +** Copyright 2016 Rachael Alexanderson +** Copyright 2003-2016 Christoph Oelckers +** Copyright 1998-2016 Randy Heit +** All rights reserved. +** +** Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions +** are met: +** +** 1. Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** 2. Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in the +** documentation and/or other materials provided with the distribution. +** 3. The name of the author may not be used to endorse or promote products +** derived from this software without specific prior written permission. +** +** THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +** IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +** OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +** IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +** NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +** THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +**--------------------------------------------------------------------------- +** +*/ + +#include +#include +#include +#include + +#ifdef _WIN32 +#include +#else +#include +#endif + +#include "version.h" +#include "c_console.h" +#include "c_dispatch.h" + +#include "i_system.h" + +#include "doomerrors.h" +#include "doomstat.h" +#include "gstrings.h" +#include "s_sound.h" +#include "g_game.h" +#include "g_level.h" +#include "w_wad.h" +#include "g_level.h" +#include "gi.h" +#include "r_defs.h" +#include "d_player.h" +#include "templates.h" +#include "p_local.h" +#include "r_sky.h" +#include "p_setup.h" +#include "cmdlib.h" +#include "d_net.h" +#include "v_text.h" +#include "p_lnspec.h" +#include "v_video.h" +#include "r_utility.h" +#include "r_data/r_interpolate.h" +#include "c_functions.h" + +void C_PrintInfo(AActor *target) +{ + if (target->player) + Printf("Player=%s, ", target->player->userinfo.GetName()); + Printf("Class=%s, Health=%d, Spawnhealth=%d\n", + target->GetClass()->TypeName.GetChars(), + target->health, + target->SpawnHealth()); + PrintMiscActorInfo(target); +} + +void C_AimLine(FTranslatedLineTarget *t, bool nonshootable) +{ + P_AimLineAttack(players[consoleplayer].mo,players[consoleplayer].mo->Angles.Yaw, MISSILERANGE, t, 0., + (nonshootable) ? ALF_CHECKNONSHOOTABLE|ALF_FORCENOSMART : 0); +} + +void C_PrintInv(AActor *target) +{ + AInventory *item; + int count = 0; + + if (target == NULL) + { + Printf("No target found!\n"); + return; + } + + if (target->player) + Printf("Inventory for Player '%s':\n", target->player->userinfo.GetName()); + else + Printf("Inventory for Target '%s':\n", target->GetClass()->TypeName.GetChars()); + + for (item = target->Inventory; item != NULL; item = item->Inventory) + { + Printf (" %s #%u (%d/%d)\n", item->GetClass()->TypeName.GetChars(), + item->InventoryID, + item->Amount, item->MaxAmount); + count++; + } + Printf (" List count: %d\n", count); +} + diff --git a/src/c_functions.h b/src/c_functions.h new file mode 100644 index 000000000..5f3d1e585 --- /dev/null +++ b/src/c_functions.h @@ -0,0 +1,37 @@ +/* +** c_functions.h +** Miscellaneous console command helper functions. +** +**--------------------------------------------------------------------------- +** Copyright 2016 Rachael Alexanderson +** All rights reserved. +** +** Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions +** are met: +** +** 1. Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** 2. Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in the +** documentation and/or other materials provided with the distribution. +** 3. The name of the author may not be used to endorse or promote products +** derived from this software without specific prior written permission. +** +** THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +** IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +** OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +** IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +** NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +** THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +**--------------------------------------------------------------------------- +** +*/ + +void C_PrintInv(AActor *target); +void C_AimLine(FTranslatedLineTarget *t, bool nonshootable); +void C_PrintInfo(AActor *target); diff --git a/src/g_inventory/a_pickups.cpp b/src/g_inventory/a_pickups.cpp index f019a8053..3c1d32d42 100644 --- a/src/g_inventory/a_pickups.cpp +++ b/src/g_inventory/a_pickups.cpp @@ -21,6 +21,7 @@ #include "serializer.h" #include "virtual.h" #include "a_ammo.h" +#include "c_functions.h" EXTERN_CVAR(Bool, sv_unlimited_pickup) @@ -1567,7 +1568,6 @@ bool AInventory::CanPickup (AActor *toucher) CCMD (printinv) { - AInventory *item; int pnum = consoleplayer; #ifdef _DEBUG @@ -1581,37 +1581,21 @@ CCMD (printinv) } } #endif - if (players[pnum].mo == NULL) - { - return; - } - for (item = players[pnum].mo->Inventory; item != NULL; item = item->Inventory) - { - Printf ("%s #%u (%d/%d)\n", item->GetClass()->TypeName.GetChars(), - item->InventoryID, - item->Amount, item->MaxAmount); - } + C_PrintInv(players[pnum].mo); } CCMD (targetinv) { - AInventory *item; FTranslatedLineTarget t; if (CheckCheatmode () || players[consoleplayer].mo == NULL) return; - P_AimLineAttack(players[consoleplayer].mo,players[consoleplayer].mo->Angles.Yaw, MISSILERANGE, - &t, 0., ALF_CHECKNONSHOOTABLE|ALF_FORCENOSMART); + C_AimLine(&t, true); if (t.linetarget) { - for (item = t.linetarget->Inventory; item != NULL; item = item->Inventory) - { - Printf ("%s #%u (%d/%d)\n", item->GetClass()->TypeName.GetChars(), - item->InventoryID, - item->Amount, item->MaxAmount); - } + C_PrintInv(t.linetarget); } else Printf("No target found. Targetinv cannot find actors that have " "the NOBLOCKMAP flag or have height/radius of 0.\n");