//===========================================================================// // File: ppc.cc // // Project: BattleTech // // Contents: Particle Projection Cannon // //---------------------------------------------------------------------------// // Date Who Modification // // -------- --- ---------------------------------------------------------- // // 11/13/95 JM Initial coding. // //---------------------------------------------------------------------------// // Copyright (C) 1995, Virtual World Entertainment, Inc. All Rights reserved // // PROPRIETARY AND CONFIDENTIAL // //===========================================================================// #include #pragma hdrstop #if !defined (PPC_HPP) # include #endif #if !defined(BTPLAYER_HPP) # include #endif #if !defined(BTMSSN_HPP) # include #endif //############################################################################# // Shared Data Support // PPC::SharedData PPC::DefaultData( &PPC::ClassDerivations, PPC::MessageHandlers, MechWeapon::GetAttributeIndex(), // gauge wave: inherit temps/InputVoltage/OutputVoltage/PercentDone (was empty) PPC::StateCount ); Derivation PPC::ClassDerivations( &Emitter::ClassDerivations, "PPC" ); //############################################################################# // Model Data Support // //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // void PPC::FireWeapon() { Check(this); Emitter::FireWeapon(); return; #if 0 Check(this); Mech *mech = GetEntity(); Check(mech); BTPlayer *bt_player = Cast_Object( BTPlayer*, mech->GetPlayerLink() ); Check(bt_player); Enumeration experienceLevel = bt_player->GetExperienceLevel(); if (experienceLevel == BTMission::NoviceMode) { return; } if (targetWithinRange) { Damage energy_damage(damageData); energy_damage.damageType = Damage::EnergyDamageType; energy_damage.damageAmount = 0.0f; Mech *mech = GetEntity(); Check(mech); SendDamage( mech->targetReticle.targetEntity, energy_damage ); } #endif } //############################################################################# // Constructer/Destructor Support // //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // PPC::PPC( Mech *owner, int subsystem_ID, SubsystemResource *subsystem_resource, SharedData &shared_data ): Emitter(owner, subsystem_ID, subsystem_resource, shared_data) { } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // PPC::~PPC() { } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Create Streamed Subsystem // Logical PPC::CreateStreamedSubsystem( ResourceFile *resource_file, NotationFile *model_file, const char *model_name, const char *subsystem_name, SubsystemResource *subsystem_resource, NotationFile *subsystem_file, const ResourceDirectories *directories, int passes ) { if ( !Emitter::CreateStreamedSubsystem( resource_file, model_file, model_name, subsystem_name, subsystem_resource, subsystem_file, directories, passes ) ) { return False; } subsystem_resource->subsystemModelSize = sizeof(*subsystem_resource); subsystem_resource->classID = RegisteredClass::PPCClassID; return True; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Logical PPC::TestInstance() const { return IsDerivedFrom(ClassDerivations); }