//===========================================================================// // File: sensor.hpp // // Project: BattleTech // // Contents: Sensor subsystem // //---------------------------------------------------------------------------// // Date Who Modification // // -------- --- ---------------------------------------------------------- // // 8/10/95 GDU Initial coding. // //---------------------------------------------------------------------------// // Copyright (C) 1995, Virtual World Entertainment, Inc. All Rights reserved // // PROPRIETARY AND CONFIDENTIAL // //===========================================================================// #if !defined(SENSOR_HPP) # define SENSOR_HPP #if !defined(POWERSUB_HPP) #include "powersub.hpp" #endif //########################################################################## //################# SensorSubsystemResource ####################### //########################################################################## struct Sensor__SubsystemResource: public PoweredSubsystem::SubsystemResource { }; //########################################################################## //########################## Sensor ############################### //########################################################################## class Sensor: public PoweredSubsystem { //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Death and Damage Support // public: void TakeDamage(Damage &damage); void DeathReset(Logical full_recovery); //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Shared Data Support // public: static Derivation ClassDerivations; static SharedData DefaultData; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Attribute Support // public: enum { RadarPercentAttributeID = PoweredSubsystem::NextAttributeID, SelfTestAttributeID, BadVoltageAttributeID, NextAttributeID }; private: static const IndexEntry AttributePointers[]; protected: static AttributeIndexSet AttributeIndex; public: Scalar radarPercent; Logical selfTest, badVoltage; //########################################################################## // Simulation Support // public: typedef void (Sensor::*Performance)(Scalar time_slice); void SetPerformance(Performance performance) { Check(this); activePerformance = (Simulation::Performance)performance; } void SensorSimulation(Scalar time_slice); //########################################################################## // Test Class Support // public: static Logical TestClass(Mech&); void ResetToInitialState(); //########################################################################## // Construction and Destruction // public: typedef Sensor__SubsystemResource SubsystemResource; Sensor( Mech *owner, int subsystem_ID, SubsystemResource *subsystem_resource ); ~Sensor(); Logical TestInstance() const; static int CreateStreamedSubsystem( NotationFile *model_file, const char *model_name, const char *subsystem_name, SubsystemResource *subsystem_resource, NotationFile *subsystem_file, const ResourceDirectories *directories, int passes = 1 ); }; #endif