//===========================================================================//
// File:	gauss.cc                                                          //
// Project: BT           Brick: Entity Manager                            //
// Contents: Basic weapons system pieces                                     //
//---------------------------------------------------------------------------//
//   Date    Who  Modification                                               //
// --------  ---  ---------------------------------------------------------- //
// 04/13/95  JM  Initial coding.                                            //
// 07/19/95  GDU  Complied with new munga and added electrical behavior
//---------------------------------------------------------------------------//
// Copyright (C) 1995, Virtual World Entertainment, Inc. All Rights reserved //
//
//                   	PROPRIETARY AND CONFIDENTIAL                         //
//===========================================================================//

#include <bt.hpp>
#pragma hdrstop

#if !defined(GAUSS_HPP)
#	include <gauss.hpp>
#endif

//#############################################################################
// Shared Data Support
//
GaussRifle::SharedData
	GaussRifle::DefaultData(
		&GaussRifle::ClassDerivations,
		GaussRifle::MessageHandlers,
		GaussRifle::AttributeIndex,
		GaussRifle::StateCount
	);

Derivation
	GaussRifle::ClassDerivations(
		&Emitter::ClassDerivations,
		"GaussRifle"
		);


//#############################################################################
// Messaging Support
//

#if 0
//#############################################################################
// Attribute Support
//

const GaussRifle::IndexEntry
	GaussRifle::AttributePointers[]=
{
	ATTRIBUTE_ENTRY(GaussRifle, DischargeVoltage, dischargeVoltage)
};

GaussRifle::AttributeIndexSet
	GaussRifle::AttributeIndex(
		ELEMENTS(GaussRifle::AttributePointers),
		GaussRifle::AttributePointers,
		Emitter::AttributeIndex
	);
#endif

//#############################################################################
// Model Support
//

void
	GaussRifle::FireWeapon()
{
	//
	// Fire the weapon
	//
		outputVoltage = 0.0f;

		Check_Fpu();
}

//#############################################################################
// Constructer/Destructor Support
//

GaussRifle::GaussRifle(
	Mech	*owner,
	int	subsystem_ID,
	SubsystemResource	*subsystem_resource,
	SharedData &shared_data
):
	Emitter(owner, subsystem_ID, subsystem_resource, shared_data)
{
	Check(owner);
	Check_Pointer(subsystem_resource);
	outputVoltage = 0.0f;
	Check_Fpu();
}

GaussRifle::~GaussRifle()
{
	Check(this);
	Check_Fpu();
}


//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// CreateStreamedSubsystem
//
Logical
	GaussRifle::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
		)
	)
	{
		Check_Fpu();
		return False;
	}




	subsystem_resource->subsystemModelSize = sizeof(*subsystem_resource);
	subsystem_resource->classID = RegisteredClass::GaussRifleClassID;

 
	Check_Fpu();
	return True;
}

Logical
	GaussRifle::TestInstance() const
{
	return IsDerivedFrom(ClassDerivations);
}

