⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 acmidrive.h

📁 空战游戏flacon源码
💻 H
字号:
#ifndef _ACMIDRIVE_H
#define _ACMIDRIVE_H

#include "Utils\matrix.h"
#include "f4thread.h"
#include "simmath.h"
#include "f4vu.h"
#include "renderer\render2d.h"
#include "AcmiView.h"
#include "AcmiCam.h"

#define EXTERNAL	0
#define CHASE		1
#define	SATELLITE	8
#define	REPLAY		9
#define	FREE		10
#define	STARTPOS	15

class SimBaseClass;
class RViewPoint;
class RenderOTW;
class ImageBuffer;
class Render2D;
class DrawableObject;
class SimObjectType;

typedef struct {
	int					frameNum;
	int					tracking;
	int					entityCam;			
	int					entityTracking;	
	ACMICamClass		*recorderCam;
//	CRITICAL_SECTION    criticalSection;
	} rCamStruct;

typedef struct DBLIST
{
    void * node;          /* pointer to node data */
    void * user;          /* pointer to user data */

    struct DBLIST * next;   /* next list node */
    struct DBLIST * prev;   /* prev list node */
} DBLIST;

class ACMIManagerClass
{
   public:
		int numThreats, viewSwap, tgtId;
		int initialGraphicsLoad;
		int IsFinished(void) { return AcmiDrawingFinished; };
		int keyCombo, insertMode;

		ACMICamClass	*acmiCam, *attachedCam, *dettachedCam;
		BOOL			FILE_LOADED;
		rCamStruct		*recorderFrame;
		char			acmiFileName[40];
		BOOL			acmiChase;
		BOOL			acmiReplay;
		BOOL			acmiSatellite;
		BOOL			acmiFree;
		BOOL			CAM_UPDATE;
		int				acmiCameraState;
		int				camCorderCount;

		DBLIST *ACMICamListAppend( DBLIST *list, void *node );
		void ACMICamListDestroy( DBLIST *list );
		int ACMIListCount( DBLIST * list);
		DBLIST *ACMIListSearch( DBLIST *list, void *node, int searchType );
		DBLIST *ACMIListNth( DBLIST *list, int n );
		DBLIST *ACMIListSort( DBLIST **list, int sortType );
		int ACMICamListCheckFrameNum( void *node_a, void *node_b );
		int ACMICamListSortFrameNumInc( DBLIST *parent_a, DBLIST *parent_b );
		int ACMICamListSortFrameNumDec( DBLIST *parent_a, DBLIST *parent_b );
		void ACMIDeleteCamCameraNode( rCamStruct* cameraNode );
		void ACMISetCurrCamCorder( void );

		int ExitGraphics (void);
		float GetGroundLevel (float x, float y);
		float GetApproxGroundLevel (float x, float y);
		int   GetGroundIntersection (euler* dir, vector* point);
		ACMIManagerClass(void);
		~ACMIManagerClass(void);
		void InitAcmiGraphics (void);
		void StopGraphicsLoop (void);
		void ObjectSetData (SimBaseClass*, Tpoint*, Trotation*);
		void InsertObjectIntoDrawList (SimBaseClass*);
		ImageBuffer* ACMIImage;
		HWND ACMIWin;
		RViewPoint* GetViewpoint (void) { return viewPoint; };

		void InitAcmi( IDirectDrawSurface	*surface );
		void SetACMIFileName( char *fname );
		void GetObjectName (SimBaseClass* theObject, char *tmpStr );
		void InitUIVector( void );
		void SetUIVector( Tpoint *tVect );
		void SwitchACMICamera( int cameraSwitch );
		void SwitchACMICameraObject( long cameraObject );
		void SwitchACMITrackingObject( long cameraObject );
		void AcmiExecGraphics (void);
		void AcmiAddCamera (void);
		void AcmiRemoveCamera( void );
		void AcmiCutCamera( void );
		void ACMIVectorTranslate( Tpoint *tVector );
		void ACMIVectorToVectorTranslation( Tpoint *tVector, Tpoint *offSetV );
		void MoveACMIFrameSlide( int direction );
		char *SetAcmiListBoxID ( int objectNum, long listID );
		long GetAcmiListBoxID ( int objectNum, long filter );
		void AcmiCameraSelect( long camSel );

		int  NumACMIFrames( void ) { return ( acmiObjectData->numACMIFrames ); };
		int  CurrACMIFrames( void ) { return ( acmiObjectData->currACMIFrames ); };
		void StopACMI( void ) { acmiObjectData->StopACMI(); };
		void PlayACMI( void ) { acmiObjectData->PlayACMI(); };
		void PlayBackwardsACMI( void ) { acmiObjectData->PlayBackwardsACMI(); };
		void StepFowardACMI( void ) { acmiObjectData->StepFowardACMI(); };
		void StepReverseACMI( void ) { acmiObjectData->StepReverseACMI(); };
		void HomeACMI( void ) { acmiObjectData->HomeACMI(); };
		void ReverseACMI( void ) { acmiObjectData->ReverseACMI(); };
		void DirectionACMI( void ) { acmiObjectData->DirectionACMI(); };
		void FastForwardACMI( void ) { acmiObjectData->FastForwardACMI(); };
		int  UIDirectionACMI( void ) { return( acmiObjectData->playDir ); };
		void ACMITrackingObject( void ) { acmiObjectData->ACMITrackingObject( 1 ); };
		void ToggleTracking( void ) { acmiCam->ToggleTracking(); };
		void AcmiSetElDir( float diff ) { acmiCam->AcmiSetElDir( diff ); };
		void AcmiSetAzDir( float diff ) { acmiCam->AcmiSetAzDir( diff ); };
		void AcmiSetObjectEl( float diff ) { acmiCam->AcmiSetObjectEl( diff ); };
		void AcmiSetObjectAz( float diff ) { acmiCam->AcmiSetObjectAz( diff ); };
		void AcmiSetPannerAz( void ) { acmiCam->AcmiSetPannerAz(); };
		void AcmiIncrementPannerAzEl( int	currentAction, float az, float el )
				{ acmiCam->AcmiIncrementPannerAzEl( currentAction, az, el ); };
		void AcmiSetObjectRange( float diff, int instruction ) 
				{ acmiCam->AcmiSetObjectRange( diff, instruction ); };
		void AcmiSetSlewRate( float diff ) { acmiCam->AcmiSetSlewRate( diff ); };
		void SetRotateACMICameraType( int	type ) { acmiCam->SetRotateACMICameraType( type ); };
		int  GetACMICameraType( void ) { return ( acmiCam->GetACMICameraType() ); };
		void SetAcmiCameraAction( int currentAction ) { acmiCam->SetAcmiCameraAction( currentAction ); };
		void SetAcmiCameraAction( int	currentAction, float az, float el )
			 { acmiCam->SetAcmiCameraAction( currentAction, az, el ); };
		int  ACMIGetEntityCount ( void ) { return ( acmiObjectData->MAX_ENTITY_CAMS ); };
		void IncrementACMICamera( int inc ) { acmiObjectData->ACMICameraObject( inc ); };
		void IncTrackingACMICamera( int inc ) { acmiObjectData->ACMITrackingObject( inc ); };

		void AcmiRotateCameraUp( void );
		void AcmiRotateCameraDown( void );
		void AcmiRotateCameraLeft( void );
		void AcmiRotateCameraRight( void );
		void AcmiZoomInCamera( void );
		void AcmiZoomOutCamera( void );
		void CleanupACMIFileData(void);
		void InitAcmiFile ( void );
		void RemoveObjectFromDrawList (SimBaseClass*);

   private:
		typedef struct displayList
			{
			 DrawableObject* object;
			 DrawableObject* object1;
			 float x, y, z;
			 int data1;
			 displayList* next;
			};

		float objectScale;
		void RescaleAllObjects (void);
		void DrawEFOV (void);
		void DrawEFOVBox (SimObjectType*);
		void ClearRemoveList(void);
		void AddInsertList(void);
		void DoAttachList(void);
		void DoDetachList(void);
		void DoTrimList(void);
		void DoTailLists(void);
		void UpdateEntityLists(void);
		void SetCameraPosition (void);
		void DrawAllObjects(void);
		void DrawIDTags(void);
		void GetUserPosition (void);
		void ShowVersionString (void);
		RViewPoint* viewPoint;
		RenderOTW	*renderer;
		int AcmiDrawing;
		int AcmiDrawingFinished;
		int isReady;

		int doChase;
		int isShaded;
		int doPadlock;
		int doWeather;
		int viewStep;
		int tgtStep;
		int doIDTags;
		int autoScale;
		int showPos;
		int getNewCameraPos;
		int eyeFly;
		unsigned int chatterCount;
		enum {chatterLen = 255};
		char chatterStr[chatterLen + 1];
		void DrawTracers (void);
	  
		SimBaseClass* AcmiPlatform;
		SimBaseClass* padlockPriority;
		VuOrderedList* AcmiDrawList;
		VuOrderedList* featureList;
//		VuEntity* flyingEye;
		LIST	*simEntityList;
      VuThread* vuThread;

		ACMIClass *acmiObjectData;

};

extern ACMIManagerClass ACMIDriver;
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -