| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 |
- /*
- ** Command & Conquer Renegade(tm)
- ** Copyright 2025 Electronic Arts Inc.
- **
- ** This program is free software: you can redistribute it and/or modify
- ** it under the terms of the GNU General Public License as published by
- ** the Free Software Foundation, either version 3 of the License, or
- ** (at your option) any later version.
- **
- ** 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, see <http://www.gnu.org/licenses/>.
- */
- /***********************************************************************************************
- *** Confidential - Westwood Studios ***
- ***********************************************************************************************
- * *
- * Project Name : Commando *
- * *
- * $Archive:: /Commando/Code/Combat/transition.h $*
- * *
- * $Author:: Patrick $*
- * *
- * $Modtime:: 11/16/01 3:18p $*
- * *
- * $Revision:: 22 $*
- * *
- *---------------------------------------------------------------------------------------------*
- * Functions: *
- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
- #if defined(_MSC_VER)
- #pragma once
- #endif
- #ifndef TRANSITION_H
- #define TRANSITION_H
- #include "always.h"
- #include "matrix3d.h"
- #include "aabox.h"
- #include "gameobjref.h"
- #include "vector.h"
- #include "obbox.h"
- #include "wwstring.h"
- class SoldierGameObj;
- class VehicleGameObj;
- /*
- ** TransitionDataClass
- */
- class TransitionDataClass {
- public:
- TransitionDataClass( void );
- ~TransitionDataClass( void ) { }
- bool Save( ChunkSaveClass & csave );
- bool Load( ChunkLoadClass & cload );
- typedef enum {
- DISABLED = -1,
- LADDER_EXIT_TOP = 0,
- LADDER_EXIT_BOTTOM,
- LADDER_ENTER_TOP,
- LADDER_ENTER_BOTTOM,
- LEGACY_VEHICLE_ENTER_0,
- LEGACY_VEHICLE_ENTER_1,
- LEGACY_VEHICLE_EXIT_0,
- LEGACY_VEHICLE_EXIT_1,
- VEHICLE_ENTER,
- VEHICLE_EXIT,
- NUM_TRANSITION_TYPE
- } StyleType;
- static int Get_Num_Types( void ) { return NUM_TRANSITION_TYPE; }
- static const char * Get_Type_Name( StyleType type );
- StyleType Get_Type( void ) const { return Type; }
- void Set_Type( StyleType type ) { Type = type; }
- const OBBoxClass & Get_Zone( void ) const { return Zone; }
- void Set_Zone( const OBBoxClass & zone ) { Zone = zone; }
- const char * Get_Animation_Name( void ) const { return AnimationName; }
- void Set_Animation_Name( const char * name ) { AnimationName = name; }
- const Matrix3D & Get_Ending_TM( void ) const { return EndingTM; }
- void Set_Ending_TM( const Matrix3D & tm ) { EndingTM = tm; }
- private:
- StyleType Type;
- OBBoxClass Zone;
- StringClass AnimationName;
- Matrix3D EndingTM;
- };
- typedef DynamicVectorClass<TransitionDataClass *> TRANSITION_DATA_LIST;
- /*
- ** TransitionCompletionDataClass
- */
- struct TransitionCompletionDataStruct {
- public:
- bool Save( ChunkSaveClass & csave );
- bool Load( ChunkLoadClass & cload );
- TransitionDataClass::StyleType Type;
- GameObjReference Vehicle;
- };
- /*
- ** TransitionInstanceClass
- */
- class TransitionInstanceClass {
- public:
- TransitionInstanceClass( const TransitionDataClass & data );
- ~TransitionInstanceClass( void );
- // Check for Triggering
- bool Check( SoldierGameObj *obj, bool action_trigger );
- void Start( SoldierGameObj *obj );
- static void End( SoldierGameObj *obj, TransitionCompletionDataStruct * data );
- TransitionDataClass::StyleType Get_Type( void ) const { return Data.Get_Type(); }
- void Set_Parent_Transform( const Matrix3D & tm );
- VehicleGameObj * Get_Vehicle( void ) { return (VehicleGameObj*)Vehicle.Get_Ptr(); }
- void Set_Vehicle( VehicleGameObj * vehicle ) { Vehicle = (GameObjRefPtr)vehicle; }
- // Accessors
- const OBBoxClass & Get_Zone( void ) const { return Zone; }
- const Matrix3D & Get_Ending_TM( void ) const { return EndingTM; }
- int Get_Ladder_Index( void ) { return LadderIndex; }
- void Set_Ladder_Index( int ladder_index ) { LadderIndex = ladder_index; }
- protected:
- Matrix3D EndingTM;
- OBBoxClass Zone;
- GameObjReference Vehicle;
- const TransitionDataClass & Data;
- int LadderIndex;
- };
- /*
- **
- */
- class TransitionManager {
- public:
- static void Reset( void );
- static void Add( TransitionInstanceClass * transition );
- static void Destroy( TransitionInstanceClass * transition );
- static void Destroy_Pending( void );
- static bool Check( SoldierGameObj *obj, bool action_trigger );
- static void Build_Ladder_List (DynamicVectorClass<TransitionInstanceClass *> &list);
- };
- #endif // TRANSITION_H
|