1 #ifndef HELICOPTER_HEADER_FILE__ 2 #define HELICOPTER_HEADER_FILE__ 3 4 #include "coord.h" 5 #include "submarine.h" 6 7 #ifndef FALSE 8 #define FALSE 0 9 #endif 10 #ifndef TRUE 11 #define TRUE 1 12 #endif 13 14 15 #define ACTION_HOVER 0 // not sure, waiting in one spot 16 #define ACTION_MOVING 1 // moving to destination 17 #define ACTION_LISTEN 2 // lower sonar 18 #define ACTION_RETURN_TO_BASE 3 // to be implemented later 19 #define ACTION_REFUELING 4 // to be implemented later 20 21 #define LISTEN_HEIGHT -20 22 #define MOVE_HEIGHT -50 23 #define HELICOPTER_RUBBER 50 24 #define FIRING_WAIT 120 // two mintes 25 26 #define DO_NOTHING 0 27 #define DO_SHOOT 1 28 #define DO_MOVE 2 29 30 31 class Helicopter : public Coord 32 { 33 public: 34 int MaxSpeed, DesiredSpeed; 35 int Depth, DesiredDepth; 36 int DesiredHeading; 37 int TorpedoesOnBoard; 38 int current_action; // hovering, listening, moving, returning to base 39 int mood; // convoy, passive, attack 40 int Friend; 41 int destination_x, destination_y; 42 int ShipType, ShipClass; 43 char ClassName[CLASS_NAME_SIZE]; 44 char ClassType[CLASS_TYPE_SIZE]; 45 int MaxDepth, Rudder; 46 int hull_strength; 47 int has_sonar; 48 int firing_countdown; // make sure we can't rapid fire 49 float PSCS; 50 MAP *map; 51 Helicopter *next; 52 53 Helicopter(); 54 ~Helicopter(); 55 56 int Init(); 57 void Cleanup(); 58 int Can_Hear(Submarine *target); 59 Submarine *Helicopter_AI(Submarine *all_ships, Submarine *all_torpedoes); 60 int Handle(); 61 int Load_Class(char *from_file); 62 int Load_Mission(FILE *from_file); 63 int Check_Status(); 64 int Bearing_To_Destination(); 65 double Distance_To_Destination(); // in yards 66 double Distance_To_Target(Submarine *target); 67 Submarine *Find_Target(Submarine *all_ships); 68 Submarine *Fire_Torpedo(Submarine *target, char *ship_file); 69 Submarine *Find_Closest_Friend(Submarine *ships); 70 }; 71 72 73 74 #endif 75 76