FUSE.H (4120B)
1 // 2 // Copyright 2020 Electronic Arts Inc. 3 // 4 // TiberianDawn.DLL and RedAlert.dll and corresponding source code is free 5 // software: you can redistribute it and/or modify it under the terms of 6 // the GNU General Public License as published by the Free Software Foundation, 7 // either version 3 of the License, or (at your option) any later version. 8 9 // TiberianDawn.DLL and RedAlert.dll and corresponding source code is distributed 10 // in the hope that it will be useful, but with permitted additional restrictions 11 // under Section 7 of the GPL. See the GNU General Public License in LICENSE.TXT 12 // distributed with this program. You should have received a copy of the 13 // GNU General Public License along with permitted additional restrictions 14 // with this program. If not, see https://github.com/electronicarts/CnC_Remastered_Collection 15 16 /* $Header: F:\projects\c&c\vcs\code\fuse.h_v 2.17 16 Oct 1995 16:46:18 JOE_BOSTIC $ */ 17 /*********************************************************************************************** 18 *** C O N F I D E N T I A L --- W E S T W O O D S T U D I O S *** 19 *********************************************************************************************** 20 * * 21 * Project Name : Command & Conquer * 22 * * 23 * File Name : FUSE.H * 24 * * 25 * Programmer : Joe L. Bostic * 26 * * 27 * Start Date : April 24, 1994 * 28 * * 29 * Last Update : April 24, 1994 [JLB] * 30 * * 31 *---------------------------------------------------------------------------------------------* 32 * Functions: * 33 * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ 34 35 #ifndef FUSE_H 36 #define FUSE_H 37 38 /**************************************************************************** 39 ** The fuse is used by projectiles to determine whether detonation should 40 ** occur. This is usually determined by tracking the distance to the 41 ** designated target reaches zero or when the timer expires. 42 */ 43 class FuseClass { 44 public: 45 FuseClass(void); 46 void Arm_Fuse(COORDINATE location, COORDINATE target, int time=0xFF, int arming=0); 47 bool Fuse_Checkup(COORDINATE newlocation); 48 void Fuse_Write(FileClass & file); 49 void Fuse_Read(FileClass & file); 50 COORDINATE Fuse_Target(void); 51 52 /* 53 ** File I/O. 54 */ 55 void Code_Pointers(void); 56 void Decode_Pointers(void); 57 58 /* 59 ** Fuses can detonate if enough time has elapsed. This value counts 60 ** down. When it reaches zero, detonation occurs. 61 */ 62 unsigned char Timer; 63 64 private: 65 66 /* 67 ** Some fuses need a certain amount of time before detonation can 68 ** occur. This counts down and when it reaches zero, normal fuse 69 ** detonation checking can occur. 70 */ 71 unsigned char Arming; 72 73 /* 74 ** This is the designated impact point of the projectile. The fuse 75 ** will trip when the closest point to this location has been reached. 76 */ 77 COORDINATE HeadTo; 78 79 /* 80 ** This is the running proximity value to the impact point. This value 81 ** will progressively get smaller. Detonation occurs when it reaches 82 ** zero or when it starts to grow larger. 83 */ 84 short Proximity; 85 }; 86 87 inline COORDINATE FuseClass::Fuse_Target(void) 88 { 89 return(HeadTo); 90 } 91 92 #endif