mirror of
https://github.com/electronicarts/CnC_Renegade.git
synced 2025-12-15 23:21:40 -05:00
Initial commit of Command & Conquer Renegade source code.
This commit is contained in:
507
Code/Combat/raveshawbossgameobj.h
Normal file
507
Code/Combat/raveshawbossgameobj.h
Normal file
@@ -0,0 +1,507 @@
|
||||
/*
|
||||
** 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/>.
|
||||
*/
|
||||
|
||||
/***********************************************************************************************
|
||||
*** C O N F I D E N T I A L --- W E S T W O O D S T U D I O S ***
|
||||
***********************************************************************************************
|
||||
* *
|
||||
* Project Name : combat *
|
||||
* *
|
||||
* $Archive:: /Commando/Code/Combat/raveshawbossgameobj.h $*
|
||||
* *
|
||||
* Author:: Patrick Smith *
|
||||
* *
|
||||
* $Modtime:: 1/13/02 11:42a $*
|
||||
* *
|
||||
* $Revision:: 8 $*
|
||||
* *
|
||||
*---------------------------------------------------------------------------------------------*
|
||||
* Functions: *
|
||||
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
|
||||
|
||||
#if defined(_MSC_VER)
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
#ifndef __RAVESHAWBOSSGAMEOBJ_H
|
||||
#define __RAVESHAWBOSSGAMEOBJ_H
|
||||
|
||||
#include "soldier.h"
|
||||
#include "statemachine.h"
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// Forward declarations
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
class ManualTransitionEffectClass;
|
||||
class StealthEffectClass;
|
||||
class SimpleGameObj;
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// RaveshawBossGameObjDefClass
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
class RaveshawBossGameObjDefClass : public SoldierGameObjDef
|
||||
{
|
||||
public:
|
||||
|
||||
DECLARE_EDITABLE (RaveshawBossGameObjDefClass, SoldierGameObjDef);
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// Public constructors/destructors
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
RaveshawBossGameObjDefClass (void);
|
||||
~RaveshawBossGameObjDefClass (void);
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// Public methods
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
uint32 Get_Class_ID (void) const;
|
||||
PersistClass * Create (void) const;
|
||||
bool Save (ChunkSaveClass &csave);
|
||||
bool Load (ChunkLoadClass &cload);
|
||||
const PersistFactoryClass & Get_Factory (void) const;
|
||||
|
||||
protected:
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// Protected methods
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
void Save_Variables (ChunkSaveClass &csave);
|
||||
void Load_Variables (ChunkLoadClass &cload);
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// Protected member data
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// Friends
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
friend class RaveshawBossGameObjClass;
|
||||
};
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// RaveshawBossGameObjClass
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
class RaveshawBossGameObjClass : public SoldierGameObj
|
||||
{
|
||||
public:
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
// Public constructors/destructors
|
||||
///////////////////////////////////////////////////////////////////
|
||||
RaveshawBossGameObjClass (void);
|
||||
~RaveshawBossGameObjClass (void);
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
// Public methods
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
||||
//
|
||||
// Definitions
|
||||
//
|
||||
virtual void Init (void);
|
||||
void Init (const RaveshawBossGameObjDefClass &definition);
|
||||
const RaveshawBossGameObjDefClass & Get_Definition (void) const;
|
||||
|
||||
//
|
||||
// From save/load
|
||||
//
|
||||
bool Save (ChunkSaveClass & csave);
|
||||
bool Load (ChunkLoadClass & cload);
|
||||
void On_Post_Load (void);
|
||||
const PersistFactoryClass & Get_Factory (void) const;
|
||||
|
||||
//
|
||||
// Inherited
|
||||
//
|
||||
bool Allow_Special_Damage_State_Lock (void) { return false; }
|
||||
|
||||
//
|
||||
// Think
|
||||
//
|
||||
void Think (void);
|
||||
void Apply_Control (void);
|
||||
|
||||
//
|
||||
// Damage
|
||||
//
|
||||
virtual void Apply_Damage_Extended (const OffenseObjectClass &offense, float scale = 1.0f, const Vector3 & direction = Vector3 (0, 0, 0), const char *collision_box_name = NULL);
|
||||
|
||||
protected:
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
// Protected methods
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
||||
//
|
||||
// Save/load support
|
||||
//
|
||||
void Save_Variables (ChunkSaveClass &csave);
|
||||
void Load_Variables (ChunkLoadClass &cload);
|
||||
|
||||
//
|
||||
// Misc
|
||||
//
|
||||
void Attach_Sound (const char *sound_name, const char *bone_name);
|
||||
void Find_Closest_Catwalk_Pos (const Vector3 &curr_pos, Vector3 *catwalk_pos);
|
||||
bool Apply_Bone_Collision_Damage (float damage_scale, const char *bone_name);
|
||||
void Determine_New_Overall_State (void);
|
||||
void Find_Death_Facing_Pos (Vector3 *facing_pos);
|
||||
|
||||
//
|
||||
// Movement support
|
||||
//
|
||||
float Get_Distance_From_Ground (void);
|
||||
bool Fly_Move (PhysicalGameObj *game_obj, const Vector3 &vector);
|
||||
void Jump_To_Point (const Vector3 &pos);
|
||||
|
||||
//
|
||||
// Lightning rod support
|
||||
//
|
||||
void Add_Lightning_Arc (const Vector3 &start_point, const Vector3 &end_point);
|
||||
void Collect_Lightning_Rods (void);
|
||||
void Create_Arc_Effects (void);
|
||||
void Prepare_Arc_Effect_Data (void);
|
||||
|
||||
//
|
||||
// Stealth and thrown object support
|
||||
//
|
||||
void Create_Stealth_Soldier (const Matrix3D &tm);
|
||||
void Link_Stealth_Soldier_To_Hand (void);
|
||||
void Link_Thrown_Object_To_Hands (void);
|
||||
SimpleGameObj * Find_Object_To_Throw (void);
|
||||
WWINLINE SoldierGameObj * Peek_Stealth_Soldier (void);
|
||||
void Verify_Stealth_Soldier (void);
|
||||
|
||||
void Link_Player_To_Hands (void);
|
||||
|
||||
//
|
||||
// Taunt control
|
||||
//
|
||||
void Shuffle_Taunt_List (void);
|
||||
|
||||
//
|
||||
// State support
|
||||
//
|
||||
enum
|
||||
{
|
||||
OVERALL_STATE_NOTHING = 0,
|
||||
OVERALL_STATE_HEALING,
|
||||
OVERALL_STATE_THROWING_OBJECT,
|
||||
OVERALL_STATE_THROWING_SOLDIER,
|
||||
OVERALL_STATE_THROWING_STAR,
|
||||
OVERALL_STATE_GRAB_STAR,
|
||||
OVERALL_STATE_JUMP_TO_CATWALK,
|
||||
OVERALL_STATE_ON_CATWALK,
|
||||
OVERALL_STATE_BODYSLAM,
|
||||
OVERALL_STATE_CHASE_STAR,
|
||||
OVERALL_STATE_DAZED,
|
||||
OVERALL_STATE_FLEE,
|
||||
OVERALL_STATE_DEATH_SEQUENCE
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
RAVESHAW_STATE_NOTHING = 0,
|
||||
RAVESHAW_STATE_ROAR,
|
||||
RAVESHAW_STATE_GRAB_TIBERIUM,
|
||||
RAVESHAW_STATE_GRAB_SOLDIER,
|
||||
RAVESHAW_STATE_THROW_SOLDIER,
|
||||
RAVESHAW_STATE_GRAB_OBJECT,
|
||||
RAVESHAW_STATE_THROW_OBJECT,
|
||||
RAVESHAW_STATE_GRAB_STAR,
|
||||
RAVESHAW_STATE_BODYSLAM,
|
||||
RAVESHAW_STATE_JUMP_DOWN,
|
||||
RAVESHAW_STATE_STUMBLE,
|
||||
RAVESHAW_STATE_LOOK_CONFUSED,
|
||||
RAVESHAW_STATE_DYING,
|
||||
RAVESHAW_STATE_FALL,
|
||||
RAVESHAW_STATE_DEATH_LANDING
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
MOVE_STATE_STOP = 0,
|
||||
MOVE_STATE_GOTO_TIBERIUM,
|
||||
MOVE_STATE_GOTO_CATWALK,
|
||||
MOVE_STATE_JUMP_TO_CATWALK,
|
||||
MOVE_STATE_CIRCLE_CATWALK,
|
||||
MOVE_STATE_GOTO_THROW_OBJECT,
|
||||
MOVE_STATE_JUMP_TO_STAR,
|
||||
MOVE_STATE_FOLLOW_STAR,
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
ENGORGED_STATE_NONE = 0,
|
||||
ENGORGED_STATE_ABSORBING_TIBERIUM,
|
||||
ENGORGED_STATE_FADING
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
JUMP_STATE_NONE = 0,
|
||||
JUMP_STATE_CROUCHING,
|
||||
JUMP_STATE_JUMPING,
|
||||
JUMP_STATE_LANDING
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
HAVOC_STATE_NONE = 0,
|
||||
HAVOC_STATE_GRABBED,
|
||||
HAVOC_STATE_FLYING
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
STEALTH_SOLDIER_STATE_NONE = 0,
|
||||
STEALTH_SOLDIER_STATE_DISPLAY,
|
||||
STEALTH_SOLDIER_STATE_FLYING
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
THROWN_OBJECT_STATE_NONE = 0,
|
||||
THROWN_OBJECT_STATE_PICKUP,
|
||||
THROWN_OBJECT_STATE_FLYING
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
LIGHTNING_ROD_STATE_NONE = 0,
|
||||
LIGHTNING_ROD_STATE_ACTIVE,
|
||||
};
|
||||
|
||||
//
|
||||
// Overall state handlers
|
||||
//
|
||||
DECLARE_STATE (OVERALL_STATE_NOTHING, SM_NO_BEGIN, SM_NO_END, SM_NO_THINK, SM_NO_REQ_END);
|
||||
DECLARE_STATE (OVERALL_STATE_HEALING, SM_BEGIN, SM_NO_END, SM_NO_THINK, SM_NO_REQ_END);
|
||||
DECLARE_STATE (OVERALL_STATE_THROWING_OBJECT, SM_BEGIN, SM_NO_END, SM_NO_THINK, SM_NO_REQ_END);
|
||||
DECLARE_STATE (OVERALL_STATE_THROWING_SOLDIER, SM_BEGIN, SM_NO_END, SM_NO_THINK, SM_NO_REQ_END);
|
||||
DECLARE_STATE (OVERALL_STATE_THROWING_STAR, SM_NO_BEGIN, SM_NO_END, SM_NO_THINK, SM_NO_REQ_END);
|
||||
DECLARE_STATE (OVERALL_STATE_GRAB_STAR, SM_BEGIN, SM_NO_END, SM_NO_THINK, SM_NO_REQ_END);
|
||||
DECLARE_STATE (OVERALL_STATE_JUMP_TO_CATWALK, SM_BEGIN, SM_NO_END, SM_NO_THINK, SM_NO_REQ_END);
|
||||
DECLARE_STATE (OVERALL_STATE_ON_CATWALK, SM_BEGIN, SM_NO_END, SM_NO_THINK, SM_NO_REQ_END);
|
||||
DECLARE_STATE (OVERALL_STATE_BODYSLAM, SM_BEGIN, SM_NO_END, SM_NO_THINK, SM_NO_REQ_END);
|
||||
DECLARE_STATE (OVERALL_STATE_CHASE_STAR, SM_BEGIN, SM_NO_END, SM_THINK, SM_NO_REQ_END);
|
||||
DECLARE_STATE (OVERALL_STATE_DAZED, SM_NO_BEGIN, SM_NO_END, SM_NO_THINK, SM_NO_REQ_END);
|
||||
DECLARE_STATE (OVERALL_STATE_FLEE, SM_NO_BEGIN, SM_NO_END, SM_NO_THINK, SM_NO_REQ_END);
|
||||
DECLARE_STATE (OVERALL_STATE_DEATH_SEQUENCE, SM_BEGIN, SM_NO_END, SM_NO_THINK, SM_NO_REQ_END);
|
||||
|
||||
//
|
||||
// Raveshaw state handlers
|
||||
//
|
||||
DECLARE_STATE (RAVESHAW_STATE_NOTHING, SM_BEGIN, SM_NO_END, SM_THINK, SM_NO_REQ_END);
|
||||
DECLARE_STATE (RAVESHAW_STATE_ROAR, SM_BEGIN, SM_END, SM_THINK, SM_NO_REQ_END);
|
||||
DECLARE_STATE (RAVESHAW_STATE_GRAB_TIBERIUM, SM_BEGIN, SM_END, SM_THINK, SM_NO_REQ_END);
|
||||
DECLARE_STATE (RAVESHAW_STATE_GRAB_SOLDIER, SM_BEGIN, SM_END, SM_THINK, SM_NO_REQ_END);
|
||||
DECLARE_STATE (RAVESHAW_STATE_THROW_SOLDIER, SM_BEGIN, SM_END, SM_THINK, SM_NO_REQ_END);
|
||||
DECLARE_STATE (RAVESHAW_STATE_GRAB_OBJECT, SM_BEGIN, SM_NO_END, SM_THINK, SM_NO_REQ_END);
|
||||
DECLARE_STATE (RAVESHAW_STATE_THROW_OBJECT, SM_BEGIN, SM_END, SM_THINK, SM_NO_REQ_END);
|
||||
DECLARE_STATE (RAVESHAW_STATE_GRAB_STAR, SM_BEGIN, SM_END, SM_THINK, SM_NO_REQ_END);
|
||||
DECLARE_STATE (RAVESHAW_STATE_BODYSLAM, SM_BEGIN, SM_END, SM_THINK, SM_NO_REQ_END);
|
||||
DECLARE_STATE (RAVESHAW_STATE_JUMP_DOWN, SM_BEGIN, SM_NO_END, SM_THINK, SM_NO_REQ_END);
|
||||
DECLARE_STATE (RAVESHAW_STATE_STUMBLE, SM_NO_BEGIN, SM_NO_END, SM_NO_THINK, SM_NO_REQ_END);
|
||||
DECLARE_STATE (RAVESHAW_STATE_LOOK_CONFUSED, SM_NO_BEGIN, SM_NO_END, SM_NO_THINK, SM_NO_REQ_END);
|
||||
DECLARE_STATE (RAVESHAW_STATE_DYING, SM_BEGIN, SM_NO_END, SM_THINK, SM_NO_REQ_END);
|
||||
DECLARE_STATE (RAVESHAW_STATE_FALL, SM_BEGIN, SM_NO_END, SM_THINK, SM_NO_REQ_END);
|
||||
DECLARE_STATE (RAVESHAW_STATE_DEATH_LANDING, SM_BEGIN, SM_NO_END, SM_THINK, SM_NO_REQ_END);
|
||||
|
||||
//
|
||||
// Move state handlers
|
||||
//
|
||||
DECLARE_STATE (MOVE_STATE_STOP, SM_BEGIN, SM_NO_END, SM_NO_THINK, SM_NO_REQ_END);
|
||||
DECLARE_STATE (MOVE_STATE_GOTO_TIBERIUM, SM_BEGIN, SM_NO_END, SM_THINK, SM_NO_REQ_END);
|
||||
DECLARE_STATE (MOVE_STATE_GOTO_CATWALK, SM_BEGIN, SM_NO_END, SM_THINK, SM_NO_REQ_END);
|
||||
DECLARE_STATE (MOVE_STATE_JUMP_TO_CATWALK, SM_BEGIN, SM_NO_END, SM_THINK, SM_NO_REQ_END);
|
||||
DECLARE_STATE (MOVE_STATE_CIRCLE_CATWALK, SM_BEGIN, SM_NO_END, SM_THINK, SM_NO_REQ_END);
|
||||
DECLARE_STATE (MOVE_STATE_GOTO_THROW_OBJECT, SM_BEGIN, SM_NO_END, SM_THINK, SM_NO_REQ_END);
|
||||
DECLARE_STATE (MOVE_STATE_JUMP_TO_STAR, SM_BEGIN, SM_NO_END, SM_THINK, SM_NO_REQ_END);
|
||||
DECLARE_STATE (MOVE_STATE_FOLLOW_STAR, SM_BEGIN, SM_END, SM_THINK, SM_NO_REQ_END);
|
||||
|
||||
//
|
||||
// Engorged state handlers
|
||||
//
|
||||
DECLARE_STATE (ENGORGED_STATE_NONE, SM_NO_BEGIN, SM_NO_END, SM_NO_THINK, SM_NO_REQ_END);
|
||||
DECLARE_STATE (ENGORGED_STATE_ABSORBING_TIBERIUM, SM_BEGIN, SM_NO_END, SM_THINK, SM_NO_REQ_END);
|
||||
DECLARE_STATE (ENGORGED_STATE_FADING, SM_BEGIN, SM_END, SM_THINK, SM_NO_REQ_END);
|
||||
|
||||
//
|
||||
// Jump state handlers
|
||||
//
|
||||
DECLARE_STATE (JUMP_STATE_NONE, SM_NO_BEGIN, SM_NO_END, SM_NO_THINK, SM_NO_REQ_END);
|
||||
DECLARE_STATE (JUMP_STATE_CROUCHING, SM_BEGIN, SM_NO_END, SM_THINK, SM_NO_REQ_END);
|
||||
DECLARE_STATE (JUMP_STATE_JUMPING, SM_BEGIN, SM_NO_END, SM_THINK, SM_NO_REQ_END);
|
||||
DECLARE_STATE (JUMP_STATE_LANDING, SM_BEGIN, SM_END, SM_THINK, SM_NO_REQ_END);
|
||||
|
||||
//
|
||||
// Stealth soldier state handlers
|
||||
//
|
||||
DECLARE_STATE (STEALTH_SOLDIER_STATE_NONE, SM_NO_BEGIN, SM_NO_END, SM_NO_THINK, SM_NO_REQ_END);
|
||||
DECLARE_STATE (STEALTH_SOLDIER_STATE_DISPLAY, SM_BEGIN, SM_NO_END, SM_THINK, SM_NO_REQ_END);
|
||||
DECLARE_STATE (STEALTH_SOLDIER_STATE_FLYING, SM_BEGIN, SM_NO_END, SM_THINK, SM_NO_REQ_END);
|
||||
|
||||
//
|
||||
// Havoc state handlers
|
||||
//
|
||||
DECLARE_STATE (HAVOC_STATE_NONE, SM_NO_BEGIN, SM_NO_END, SM_NO_THINK, SM_NO_REQ_END);
|
||||
DECLARE_STATE (HAVOC_STATE_GRABBED, SM_BEGIN, SM_NO_END, SM_THINK, SM_NO_REQ_END);
|
||||
DECLARE_STATE (HAVOC_STATE_FLYING, SM_BEGIN, SM_NO_END, SM_THINK, SM_NO_REQ_END);
|
||||
|
||||
//
|
||||
// Thrown object state handlers
|
||||
//
|
||||
DECLARE_STATE (THROWN_OBJECT_STATE_NONE, SM_NO_BEGIN, SM_NO_END, SM_NO_THINK, SM_NO_REQ_END);
|
||||
DECLARE_STATE (THROWN_OBJECT_STATE_PICKUP, SM_BEGIN, SM_NO_END, SM_THINK, SM_NO_REQ_END);
|
||||
DECLARE_STATE (THROWN_OBJECT_STATE_FLYING, SM_BEGIN, SM_NO_END, SM_THINK, SM_NO_REQ_END);
|
||||
|
||||
//
|
||||
// Lightning rod state handlers
|
||||
//
|
||||
DECLARE_STATE (LIGHTNING_ROD_STATE_NONE, SM_NO_BEGIN, SM_NO_END, SM_NO_THINK, SM_NO_REQ_END);
|
||||
DECLARE_STATE (LIGHTNING_ROD_STATE_ACTIVE, SM_BEGIN, SM_END, SM_THINK, SM_NO_REQ_END);
|
||||
|
||||
private:
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
// Private constants
|
||||
///////////////////////////////////////////////////////////////////
|
||||
enum
|
||||
{
|
||||
MAX_TAUNTS = 6
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
// Private methods
|
||||
///////////////////////////////////////////////////////////////////
|
||||
static int __cdecl fnSortLightningRodsCallback (const void *elem1, const void *elem2);
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
// Private member data
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
||||
//
|
||||
// Taunts
|
||||
//
|
||||
float RaveshawTauntTimeLeft;
|
||||
int TauntList[MAX_TAUNTS];
|
||||
int AvailableTaunts;
|
||||
|
||||
//
|
||||
// Timers
|
||||
//
|
||||
float OverallStateTimer;
|
||||
float EngorgedStateTimer;
|
||||
float MoveStateTimer;
|
||||
float BodySlamTimer;
|
||||
float RaveshawStateTimer;
|
||||
float StealthSoldierStateTimer;
|
||||
float LightningRodStateTimer;
|
||||
float StartTimer;
|
||||
|
||||
//
|
||||
// Melee data
|
||||
//
|
||||
float LastMeleeAnimFrame;
|
||||
bool HasMeleeAttackHit;
|
||||
|
||||
//
|
||||
// Thrown object data
|
||||
//
|
||||
GameObjReference StealthSoldier;
|
||||
StealthEffectClass * StealthEffect;
|
||||
SimpleGameObj * ThrownObject;
|
||||
Vector3 FlyingObjectVector;
|
||||
Vector3 FlyingObjectDest;
|
||||
float FlyingDist;
|
||||
Matrix3D RelObjTM;
|
||||
RenderObjClass * CameraBoneModel;
|
||||
bool RestoreFirstPerson;
|
||||
|
||||
//
|
||||
// Effects data
|
||||
//
|
||||
ManualTransitionEffectClass * TiberiumEffect;
|
||||
DynamicVectorClass<DamageableStaticPhysClass *> LightningRodList;
|
||||
bool IsTiberiumEffectApplied;
|
||||
|
||||
//
|
||||
// Positions
|
||||
//
|
||||
Vector3 RaveshawPos;
|
||||
Vector3 StarPos;
|
||||
|
||||
Vector3 CurrentDestPos;
|
||||
Vector3 CurrentJumpToPos;
|
||||
|
||||
//
|
||||
// State machines
|
||||
//
|
||||
StateMachineClass<RaveshawBossGameObjClass> OverallState;
|
||||
StateMachineClass<RaveshawBossGameObjClass> RaveshawState;
|
||||
StateMachineClass<RaveshawBossGameObjClass> MoveState;
|
||||
StateMachineClass<RaveshawBossGameObjClass> EngorgedState;
|
||||
StateMachineClass<RaveshawBossGameObjClass> StealthSoldierState;
|
||||
StateMachineClass<RaveshawBossGameObjClass> HavocState;
|
||||
StateMachineClass<RaveshawBossGameObjClass> ThrownObjectState;
|
||||
StateMachineClass<RaveshawBossGameObjClass> JumpState;
|
||||
StateMachineClass<RaveshawBossGameObjClass> LightningRodState;
|
||||
|
||||
enum
|
||||
{
|
||||
ARC_OBJ_COUNT = 10,
|
||||
BONE_COUNT = 6
|
||||
};
|
||||
|
||||
SimpleGameObj * ArcObjects[ARC_OBJ_COUNT];
|
||||
float ArcLifeRemaining[ARC_OBJ_COUNT];
|
||||
Matrix3D EndTM;
|
||||
Matrix3D Bones[BONE_COUNT];
|
||||
};
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
// Peek_Stealth_Soldier
|
||||
///////////////////////////////////////////////////////////////////
|
||||
WWINLINE SoldierGameObj *
|
||||
RaveshawBossGameObjClass::Peek_Stealth_Soldier (void)
|
||||
{
|
||||
SoldierGameObj *soldier = NULL;
|
||||
|
||||
//
|
||||
// Dig the soldier out of the game object reference
|
||||
//
|
||||
if (StealthSoldier != NULL) {
|
||||
PhysicalGameObj *phys_game_obj = StealthSoldier.Get_Ptr ()->As_PhysicalGameObj ();
|
||||
if (phys_game_obj != NULL) {
|
||||
soldier = phys_game_obj->As_SoldierGameObj ();
|
||||
}
|
||||
}
|
||||
|
||||
return soldier;
|
||||
}
|
||||
|
||||
|
||||
#endif //__RAVESHAWBOSSGAMEOBJ_H
|
||||
Reference in New Issue
Block a user