mirror of
https://github.com/UberGames/EF2GameSource.git
synced 2024-11-10 06:31:42 +00:00
2024236a3f
* reenabled Warning C4100 (expect many warnings during compile) * added Q_UNUSED Macro * fixed C4100 in all listed files
145 lines
No EOL
3.4 KiB
C++
145 lines
No EOL
3.4 KiB
C++
//-----------------------------------------------------------------------------
|
|
//
|
|
// $Logfile:: /EF2/Code/DLLs/game/WeaponDualWield.cpp $
|
|
// $Revision:: 6 $
|
|
// $Author:: Singlis $
|
|
// $Date:: 9/26/03 2:36p $
|
|
//
|
|
// Copyright (C) 1997 by Ritual Entertainment, Inc.
|
|
// All rights reserved.
|
|
//
|
|
// This source is may not be distributed and/or modified without
|
|
// expressly written permission by Ritual Entertainment, Inc.
|
|
//
|
|
|
|
|
|
#include "WeaponDualWield.h"
|
|
#include <qcommon/gameplaymanager.h>
|
|
|
|
CLASS_DECLARATION( Weapon, WeaponDualWield, NULL )
|
|
{
|
|
{ &EV_Anim, &WeaponDualWield::PassToAnimate },
|
|
{ &EV_NewAnim, &WeaponDualWield::PassToAnimate },
|
|
|
|
{ NULL, NULL }
|
|
};
|
|
|
|
WeaponDualWield::WeaponDualWield()
|
|
: _leftweapon(0),
|
|
_rightweapon(0)
|
|
{
|
|
}
|
|
|
|
WeaponDualWield::~WeaponDualWield()
|
|
{
|
|
|
|
}
|
|
|
|
//--------------------------------------------------------------
|
|
//
|
|
// Name: AttachToOwner
|
|
// Class: WeaponDualWield
|
|
//
|
|
// Description: Attach to the owner.
|
|
//
|
|
// Parameters: weaponhand_t hand -- hand
|
|
//
|
|
// Returns: None
|
|
//
|
|
//--------------------------------------------------------------
|
|
void WeaponDualWield::AttachToOwner( weaponhand_t )
|
|
{
|
|
_leftweapon->SetOwner(owner);
|
|
_rightweapon->SetOwner(owner);
|
|
_leftweapon->AttachGun( WEAPON_LEFT );
|
|
_rightweapon->AttachGun( WEAPON_RIGHT );
|
|
_rightweapon->ForceIdle();
|
|
_leftweapon->ForceIdle();
|
|
}
|
|
|
|
//--------------------------------------------------------------
|
|
//
|
|
// Name: processGameplayData
|
|
// Class: WeaponDualWield
|
|
//
|
|
// Description: Process gameplay data
|
|
//
|
|
// Parameters: Event *ev -- not used
|
|
//
|
|
// Returns: None
|
|
//
|
|
//--------------------------------------------------------------
|
|
void WeaponDualWield::processGameplayData( Event * )
|
|
{
|
|
ClassDef *cls;
|
|
|
|
GameplayManager *gpm = GameplayManager::getTheGameplayManager();
|
|
if ( !gpm->hasObject(getArchetype()) )
|
|
return;
|
|
|
|
str leftmodel = gpm->getStringValue(getArchetype(), "leftmodel");
|
|
str rightmodel = gpm->getStringValue(getArchetype(), "rightmodel");
|
|
|
|
if ( !_leftweapon )
|
|
{
|
|
cls = getClass( leftmodel );
|
|
if ( !cls )
|
|
{
|
|
SpawnArgs args;
|
|
args.setArg( "model", leftmodel );
|
|
cls = args.getClassDef();
|
|
if ( !cls )
|
|
return;
|
|
}
|
|
_leftweapon = ( Weapon * )cls->newInstance();
|
|
_leftweapon->setModel( leftmodel );
|
|
_leftweapon->ProcessPendingEvents();
|
|
_leftweapon->hideModel();
|
|
}
|
|
|
|
if ( !_rightweapon )
|
|
{
|
|
cls = getClass( rightmodel );
|
|
if ( !cls )
|
|
{
|
|
SpawnArgs args;
|
|
args.setArg( "model", rightmodel );
|
|
cls = args.getClassDef();
|
|
if ( !cls )
|
|
return;
|
|
}
|
|
_rightweapon = ( Weapon * )cls->newInstance();
|
|
_rightweapon->setModel( rightmodel );
|
|
_rightweapon->ProcessPendingEvents();
|
|
_rightweapon->hideModel();
|
|
}
|
|
|
|
// Process gameplay data on myself.
|
|
Weapon::processGameplayData( NULL );
|
|
}
|
|
|
|
//===============================================================
|
|
// Name: PassToAnimate
|
|
// Class: WeaponDualWield
|
|
//
|
|
// Description: Passes animation events on to both the left
|
|
// and right weapons.
|
|
//
|
|
// Parameters: Event* -- the event to pass on.
|
|
//
|
|
// Returns: None
|
|
//
|
|
//===============================================================
|
|
void WeaponDualWield::PassToAnimate( Event *ev )
|
|
{
|
|
if ( _leftweapon )
|
|
{
|
|
Event *leftEvent = new Event( ev );
|
|
_leftweapon->ProcessEvent( leftEvent );
|
|
}
|
|
if ( _rightweapon )
|
|
{
|
|
Event *rightEvent = new Event( ev );
|
|
_rightweapon->ProcessEvent( rightEvent );
|
|
}
|
|
} |