123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310 |
- ////////////////////////////////////////////////////////////////////////////////
- //
- // Copyright 2016 RWS Inc, All Rights Reserved
- //
- // This program is free software; you can redistribute it and/or modify
- // it under the terms of version 2 of the GNU General Public License 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
- //
- // Personatorium.H
- // Project: Postal
- //
- // History:
- // 04/28/97 JMI Started.
- //
- // 04/29/97 BRH Removed the verb from the structure since there are
- // many verbs, one for each action that the person
- // can do, so the verb is best left up to the
- // GetResources() function in CPerson.
- //
- // 05/19/97 JMI Removed Woman from the enum. She did not have enough
- // animations so she was removed from the g_apersons.
- //
- // 06/11/97 JMI Added pszEventName to the Personatorium for specifying
- // event name for person animations.
- //
- // 07/01/97 BRH Added Military guy.
- //
- // 07/03/97 BRH Added Construction worker.
- //
- // 07/04/97 BRH Added man and woman victim.
- //
- // 07/23/97 BRH Added three new parameters for timing so that different
- // people can be tuned differently. This came from a
- // request to have some people react more/less to bullet
- // shots, and having Rocketmen react quicker in guard mode
- // since it takes them longer to shoot.
- //
- // 07/25/97 BRH Added initial hit points so that victims can have
- // different amount of hit points, swat can have more,
- // etc.
- //
- // 08/07/97 JMI Added names for 'hand' transform channels.
- //
- // 08/09/97 BRH Added more person types for new voices.
- //
- // 08/12/97 BRH Added writhing motion type so that we know what they
- // do when the are writhing, whether it be crawling,
- // pushing themselves on their back, or just staying in
- // place.
- //
- // 08/12/97 JMI Removed pszShowWeaponEvent that we just added b/c we
- // went ahead and hid the weapon if the current main event
- // is greater than or equal to 10.
- //
- // 08/12/97 BRH Added a texture scheme number to the animation struct
- // that indicates which texture file to load. Now the
- // people only need to load 1 .tex file rather than one
- // for every different animation.
- //
- // 08/13/97 BRH Added two more person types for different victim
- // textures.
- //
- // 12/17/97 JMI Added some new persons:
- // Employee 1 & 2, Red Cross 1 & 2, Golfer 1 & 2, Lawyer,
- // Bum 1 & 2, Vet 1 & 2, Nude 1 & 2, Gramps 1 & 2, Granny
- // 1, 2, & 3.
- //
- // 01/19/98 BRH Added shopper versions of the Golfer, Bum and Vet so
- // that they look different but say the normal victim
- // stuff that is non level specific.
- //
- // 10/06/99 BRH Adding japanese characters for the Japan expansion pack.
- //
- //////////////////////////////////////////////////////////////////////////////
- //
- // Personatorium is a description of a CPerson. There, currently, isn't too
- // much customizable about each CPerson via the Personatorium, but eventually
- // there should be plenty. Also, eventually, we hope that these might just
- // be used to quickly initialize a CPerson allowing it to be customized later
- // via an EditModify().
- //
- // To add to the Personatorium:
- // 1) Add an enum value to the Personatorium::Index typedef representing your
- // new person. Note that it MUST be entered just before NumPersons.
- // 2) Add an entry to the end of the array of Personatoriums, g_apersons, in
- // Personatorium.cpp copying an existing entry as a template.
- //
- //////////////////////////////////////////////////////////////////////////////
- #ifndef PERSONATORIUM_H
- #define PERSONATORIUM_H
- //////////////////////////////////////////////////////////////////////////////
- // C Headers -- Must be included before RSPiX.h b/c RSPiX utilizes SHMalloc.
- //////////////////////////////////////////////////////////////////////////////
- ///////////////////////////////////////////////////////////////////////////////
- // RSPiX Headers.
- ///////////////////////////////////////////////////////////////////////////////
- //////////////////////////////////////////////////////////////////////////////
- // Postal headers.
- //////////////////////////////////////////////////////////////////////////////
- #include "thing.h"
- #include "SampleMaster.h"
- //////////////////////////////////////////////////////////////////////////////
- // Macros.
- //////////////////////////////////////////////////////////////////////////////
- //////////////////////////////////////////////////////////////////////////////
- // Protos.
- //////////////////////////////////////////////////////////////////////////////
- //////////////////////////////////////////////////////////////////////////////
- // Typedefs.
- //////////////////////////////////////////////////////////////////////////////
- typedef struct
- {
- ///////////////////////////////////////////////////////////////////////////
- // Typedefs/enums.
- ///////////////////////////////////////////////////////////////////////////
- public:
- // This enum has one entry for each index in the g_apersons.
- typedef enum
- {
- Grenader, // Mimic of classic CGrenader.
- RocketMan, // Mimic of classic CRocketMan.
- Gunner, // Mimic of classic CGunner.
- Cop, // Mimic of classic CCop.
- Miner, // Miner that acts like the Grenader
- Swat, // Swat team member
- Kid, // Kid that can shoot
- Protestor, // Marching protestor
- HickCop, // New sound theme for Cop.
- Military, // Military guy
- Construction, // Construction worker
- TheMan, // Man victim
- Woman, // Woman victim
- ConstructionCarlos, // Mexican worker
- ConstructionArmando, // Hispanic worker
- GrenaderPepe, // Hispanic grenader
- GrenaderLarry,
- RocketmanDexter,
- RocketmanPaco,
- GunnerHeidi,
- GunnerLinda,
- CopBrian,
- CopHector,
- MinerGary,
- MinerFernando,
- SwatCharlie,
- SwatMatt,
- SheriffDale,
- ManFrank,
- WomanBetty,
- SheriffNorm,
- Employee1,
- Employee2,
- RedCross1,
- RedCross2,
- Golfer1,
- Golfer2,
- Lawyer,
- Bum1,
- Bum2,
- Vet1,
- Vet2,
- Nude1,
- Nude2,
- Gramps1,
- Gramps2,
- Granny1,
- Granny2,
- Granny3,
- ShopperG1,
- ShopperG2,
- ShopperB1,
- ShopperB2,
- ShopperV1,
- ShopperV2,
- JPMaleKensaku,
- JPMaleYutaka,
- JPMaleOsamu,
- JPFemaleSakura,
- JPFemaleTomiko,
- JPFemaleAsami,
- JPCompSales,
- JPCompShopper,
- JPPoliceKazuki,
- JPPoliceNoboru,
- JPOldWomanAyame,
- JPOldWomanShinobu,
- JPOldManRyuichi,
- JPOldManTadao,
- JPOsakaSales,
- // Add new indices above.
- NumPersons // Number of indices/Personatoriums in the g_apersons.
- } Index;
- // This is the type of writhing motion they use
- typedef enum
- {
- Still,
- Crawl,
- PushBack,
- EndOfWrithingMotions
- } WrithingMotion;
- typedef enum
- {
- Civilian,
- Hostile,
- EndOfLifestyles
- } Lifestyle;
- ///////////////////////////////////////////////////////////////////////////
- // Instantiable data.
- ///////////////////////////////////////////////////////////////////////////
- public:
- // User level description of person.
- char* pszDescription; // Example: "Gunner Gal", as in "Place a GUNNER GAL".
-
- // Animation strings for this person.
- struct
- {
- // Names used to create animation resource filenames.
- char* pszBaseName; // Example: "Gunner", as in "3d/GUNNER_shoot.sop".
- short sTextureScheme; // Example: 0 would make "3d/GUNNER0.tex"
- char* pszObjectName; // Name of channels of transforms for ammo.
- // Example: "Bullet", as in "3d/gunner_shoot_BULLET.trans".
- char* pszHandName; // Name of channels of transforms for hand.
- // Example: "hand", as in "3d/gunner_shoot_HAND.trans"
- char* pszEventName; // Example: "main", as in "3d/gunner_shoot_MAIN.event".
- } Anim;
- // Sound effects for this person.
- struct
- {
- SampleMasterID* psmidShot1; // ID of 'hit by weapon' sample.
- SampleMasterID* psmidShot2; // ID of 'hit by weapon' sample
- SampleMasterID* psmidShot3; // ID of 'hit by weapon' sample
- SampleMasterID* psmidShot4; // ID of 'hit by weapon' sample
- SampleMasterID* psmidBlownup1; // ID of 'blown up' sample.
- SampleMasterID* psmidBlownup2; // ID of 'blown up' sample.
- SampleMasterID* psmidBurning1; // ID of burning sample.
- SampleMasterID* psmidBurning2; // ID of burning sample
- SampleMasterID* psmidSuffering1; // ID of suffering sample 1.
- SampleMasterID* psmidSuffering2; // ID of suffering sample 2.
- SampleMasterID* psmidSuffering3; // ID of suffering sample 3.
- SampleMasterID* psmidSuffering4; // ID of suffering sample 4.
- SampleMasterID* psmidDying1; // ID of dying sample.
- SampleMasterID* psmidDying2; // ID of dying sample.
- SampleMasterID* psmidShooting1; // ID of shooting comment
- SampleMasterID* psmidShooting2; // ID of shooting comment
- SampleMasterID* psmidShooting3; // ID of shooting comment
- SampleMasterID* psmidShooting4; // ID of shooting comment
- SampleMasterID* psmidRandom1; // ID of random comment
- SampleMasterID* psmidRandom2; // ID of random comment
- SampleMasterID* psmidRandom3; // ID of random comment
- SampleMasterID* psmidRandom4; // ID of random comment
- } Sample;
- // Weapons for this person. Currently, only one supported.
- struct
- {
- CThing::ClassIDType idWeapon1; // CThing ID of preferred weapon.
- } Weapon;
- // Type of writhing motion
- WrithingMotion eWrithingMotion; // Still, crawling, or push back
- Lifestyle eLifestyle; //
- // Stats.
- long lGuardTimeout; // Interval between checking for intruders
- long lRunShootInterval; // Delay between shots while running
- long lShotTimeout; // Time to wait before reacting to next shot.
- short sInitialHitPoints; // Initial hit points for person
- /////// NYI ///////
- } Personatorium;
- //////////////////////////////////////////////////////////////////////////////
- // Declarations.
- //////////////////////////////////////////////////////////////////////////////
- // This is the master list of person descriptions that can be used to describe
- // a CPerson.
- extern Personatorium g_apersons[Personatorium::NumPersons];
- #endif // PERSONATORIUM_H
- //////////////////////////////////////////////////////////////////////////////
- // EOF
- //////////////////////////////////////////////////////////////////////////////
|