Profile.h
上传用户:sycq158
上传日期:2008-10-22
资源大小:15361k
文件大小:9k
源码类别:

游戏

开发平台:

Visual C++

  1. //-----------------------------------------------------------------------------
  2. // File: Profile.h
  3. //
  4. // Desc: Class to read an ini file and store the information in a 
  5. //       global struct for easy access.
  6. //
  7. // Copyright (C) Microsoft Corporation. All Rights Reserved.
  8. //-----------------------------------------------------------------------------
  9. #pragma once
  10. #define MAX_SOURCE_TEXTURES 10
  11. #define MAX_HEIGHT_OF_MAP  1000.0f
  12. enum HEIGHT_CREATE_TYPE { HCT_FromFile=1, HCT_CreateTest };
  13. enum TEXTURE_CREATE_TYPE { TCT_FromFile=1, TCT_CreateTest, TCT_CreateFromHeight, TCT_FromLayers };
  14. enum ENEMY_CREATE_TYPE { ECT_FromFile=1, ECT_CreateTest };
  15. enum ENEMY_MOVEMENT_TYPE { EMT_None=1, EMT_MoveRandom, EMT_MoveTowards };
  16. enum ENEMY_ATTACK_TYPE { EAT_None=1 };
  17. //-----------------------------------------------------------------------------
  18. // Name: 
  19. // Desc: 
  20. //-----------------------------------------------------------------------------
  21. class CZoneStyleParameter
  22. {
  23. public:
  24.     CZoneStyleParameter();
  25. public:
  26.     HEIGHT_CREATE_TYPE HeightCreationType;
  27.     TEXTURE_CREATE_TYPE TextureCreationType;
  28.     DWORD dwTextureSize;
  29.     DWORD dwNumLayers;
  30.     TCHAR szHeightMap[MAX_PATH];
  31.     TCHAR szTextureMap[MAX_PATH];
  32.     TCHAR aLayerTexture[MAX_SOURCE_TEXTURES][MAX_PATH];
  33.     DWORD aLayerColor[MAX_SOURCE_TEXTURES];
  34.     FLOAT aLayerHeight[MAX_SOURCE_TEXTURES];
  35.     FLOAT aLayerTile[MAX_SOURCE_TEXTURES];
  36.     FLOAT aLayerRandomness[MAX_SOURCE_TEXTURES];  
  37.     FLOAT fLayerBlendFactor[MAX_SOURCE_TEXTURES]; 
  38.     BOOL  bSaveMedia;
  39. };
  40. //-----------------------------------------------------------------------------
  41. // Name: 
  42. // Desc: 
  43. //-----------------------------------------------------------------------------
  44. class CSkyParameter
  45. {
  46. public:
  47.     CSkyParameter();
  48. public:
  49.     TCHAR szModel[MAX_PATH];
  50.     TCHAR szTextureMap[MAX_PATH];
  51.     DWORD dwFogColor;
  52.     DWORD dwClearColor;
  53.     FLOAT fOffsetY;
  54.     FLOAT fScaleX;
  55.     FLOAT fScaleY;
  56.     FLOAT fScaleZ;
  57. };
  58. //-----------------------------------------------------------------------------
  59. // Name: 
  60. // Desc: 
  61. //-----------------------------------------------------------------------------
  62. class CSoundParameter
  63. {
  64. public:
  65.     CSoundParameter();
  66. public:
  67.     TCHAR szFile[MAX_PATH];
  68.     LONG  lBufferCount;
  69.     LONG  lVolume;
  70.     LONG  lSampleRateOffset;
  71.     LONG  lSampleRateDelta;
  72. };
  73. //-----------------------------------------------------------------------------
  74. // Name: 
  75. // Desc: 
  76. //-----------------------------------------------------------------------------
  77. class CLightParameter
  78. {
  79. public:
  80.     D3DXVECTOR3 vDirection;
  81.     D3DXVECTOR3 vDiffuse;
  82.     D3DXVECTOR3 vSpecular;
  83.     D3DXVECTOR3 vAmbient;
  84. };
  85. //-----------------------------------------------------------------------------
  86. // Name: 
  87. // Desc: 
  88. //-----------------------------------------------------------------------------
  89. class C3DSoundParameter : public CSoundParameter
  90. {
  91. public:
  92.     D3DVALUE flMinDistance;
  93.     D3DVALUE flMaxDistance;
  94. };
  95. //-----------------------------------------------------------------------------
  96. // Name: 
  97. // Desc: 
  98. //-----------------------------------------------------------------------------
  99. class CBulletParameter : public CSoundParameter
  100. {
  101. public:
  102.     float fMass;
  103.     float fDamage;
  104.     float fRechargeTime;
  105.     float fExpireCountdown;
  106.     float fSpeed;
  107.     TCHAR strBulletModel[MAX_PATH];
  108.     C3DModel* pModel;
  109.     DWORD dwAmbientLight;
  110.     BOOL  bUseParticles;
  111.     TCHAR szParticleTextureMap[MAX_PATH];
  112.     float fParticleRadius;
  113.     DWORD dwNumParticlesToEmit;
  114.     DWORD dwParticleColor;
  115.     DWORD dwParticleColorFade;
  116.     float fEmitVel;
  117.     LPDIRECT3DTEXTURE9 pParticleTexture;
  118. };
  119. //-----------------------------------------------------------------------------
  120. // Name: 
  121. // Desc: 
  122. //-----------------------------------------------------------------------------
  123. class CShipParameter
  124. {
  125. public:
  126.     float    fShowDelay;
  127.     float    fAccelFactor;
  128.     float    fDecelFactor;
  129.     float    fSpeedFactor;
  130.     float    fRollDecelFactor;
  131.     float    fStartX;
  132.     float    fStartY;
  133.     float    fStartZ;
  134.     float    fMaxSlope;
  135.     float    fFollowTerrianStartHeight;
  136.     float    fFollowTerrianOffset;
  137.     float    fMinHeight;
  138.     float    fFallRate;
  139.     float    fRiseRate;
  140.     float    fMass;
  141.     float    fMaxShield;
  142. };
  143. //-----------------------------------------------------------------------------
  144. // Name: 
  145. // Desc: 
  146. //-----------------------------------------------------------------------------
  147. class CThemeStyle
  148. {
  149. public:
  150.     CThemeStyle();
  151.     ~CThemeStyle();
  152. public:
  153.     TCHAR szFile[MAX_PATH];
  154.     CSkyParameter Sky;
  155.     DWORD    dwAmbientLight;
  156.     DWORD           nNumZoneStyles;
  157.     CZoneStyleParameter* aZoneStyles;
  158.     
  159.     int      nNumLights;
  160.     CLightParameter* aLights;
  161. };
  162. //-----------------------------------------------------------------------------
  163. // Name: 
  164. // Desc: 
  165. //-----------------------------------------------------------------------------
  166. class CEnemyStyle
  167. {
  168. public:
  169.     CEnemyStyle();
  170.     ~CEnemyStyle();
  171. public:
  172.     ENEMY_CREATE_TYPE EnemyCreationType;
  173.     TCHAR    strEnemyModel[MAX_PATH];
  174.     DWORD    dwEnemyAmbientLight;
  175.     float    fEnemySpeedFactor;
  176.     float    fMoveRandomCountdown;
  177.     float    fThrustCountdown;
  178.     float    fTurnCountdown;
  179.     float    fMoveTowardsAccuracy;
  180.     ENEMY_MOVEMENT_TYPE EnemyMovementType;
  181.     ENEMY_ATTACK_TYPE EnemyAttackType;
  182.     float    fMass;
  183.     float    fMaxHealth;
  184.     float    fInvulnerableCountdown;
  185.     float    fHitAnimationCountdown;
  186.     float    fDeathAnimationCountdown;
  187.     float    fDamage;
  188.     D3DXCOLOR clrAlive;
  189.     D3DXCOLOR clrDead;
  190.     C3DModel* pModel;
  191. };
  192. //-----------------------------------------------------------------------------
  193. // Name: 
  194. // Desc: 
  195. //-----------------------------------------------------------------------------
  196. class CProfile
  197. {
  198. public:
  199.     CProfile();
  200.     ~CProfile();
  201.     // Read the ini file
  202.     VOID GetProfile( LPCTSTR szIniName );
  203. protected:
  204.     TCHAR m_szIniName[MAX_PATH]; 
  205.     VOID GetSoundParameters(TCHAR* szSection, CSoundParameter* pSoundParam);
  206.     VOID Get3DSoundParameters(TCHAR* szSection, C3DSoundParameter * p3DSoundParam);
  207.     VOID GetBulletParameters(TCHAR* szSection, CBulletParameter* pBulletParam);
  208.     VOID GetShipParameters(TCHAR* szSection, CShipParameter* pShipParam);
  209.     VOID GetLandType( CZoneStyleParameter* pLandType, TCHAR* strSection );
  210.     VOID GetLight( CLightParameter* pLight, TCHAR* strSection );
  211.     VOID GetSkyParameters( CSkyParameter* pSky, LPCTSTR strSection );
  212.     VOID GetTheme( CThemeStyle* pTheme, TCHAR* strFile );
  213.     VOID GetEnemyStyle( CEnemyStyle* pEnemy, TCHAR* strSection );
  214.     float GetFloat( TCHAR* szSection, TCHAR* szName, TCHAR* szDefault );
  215.     long  GetLong( TCHAR* szSection, TCHAR* szName, TCHAR* szDefault );
  216.     void  GetString( TCHAR* szValue, TCHAR* szSection, TCHAR* szName, TCHAR* szDefault );
  217.     DWORD GetHex( TCHAR* szSection, TCHAR* szName, TCHAR* szDefault );
  218. public:
  219.     CBulletParameter Blaster;
  220.     C3DSoundParameter ExplosionDonut;
  221.     C3DSoundParameter ExplosionPyramid;
  222.     C3DSoundParameter ExplosionCube;
  223.     C3DSoundParameter ExplosionSphere;
  224.     CSoundParameter ChangeShip;
  225.     CSoundParameter ChangeGun;
  226.     CShipParameter Ship;
  227.     BOOL     bLoadAudio;
  228.     BOOL     bRenderSplash;
  229.     BOOL     bRenderGround;
  230.     BOOL     bRenderSky;
  231.     BOOL     bFullScreen;
  232.     BOOL     bLoadFast;
  233.     BOOL     bRenderRadar;
  234.     BOOL     bRenderUI;
  235.     BOOL     bRenderEnemies;
  236.     BOOL     bRenderParticles;
  237.     BOOL     bForceREF;
  238.     BOOL     bForceSoftwareVP;
  239.     BOOL     bForceHardwareVP;
  240.     float    fChangeGunRecharge;
  241.     D3DVALUE flDistanceFactor;
  242.     D3DVALUE flRolloffFactor;
  243.     D3DVALUE flDopplerFactor;    
  244.     long     nNumEnemiesPerLevelScale;
  245.     long     nNumEnemiesBase;
  246.     FLOAT    fFOV;
  247.     DWORD    nRenderTerrianStyle;
  248.     DWORD    nWorldHeight;
  249.     DWORD    nWorldWidth;
  250.     DWORD    dwRenderText;
  251.     BOOL     bGenerateMipMaps;
  252.     BOOL     bOptimizeMesh;
  253.     BOOL     bCompactMesh;
  254.     BOOL     bSimplifyMesh;
  255.     FLOAT    fSimplifyMeshFactor;
  256.     FLOAT    fRenderDist;
  257.     FLOAT    fZFarDist;
  258.     FLOAT    fFogStart;
  259.     FLOAT    fFogEnd;  
  260.     int      nNumThemes;
  261.     CThemeStyle* aThemes;
  262.     BOOL     bForceThemeSelect;
  263.     int      nSelectTheme;
  264.     TCHAR    szUITextureMap[MAX_PATH];
  265.     TCHAR    szSplashTextureMap[MAX_PATH];
  266.     TCHAR    szAudioScript[MAX_PATH];
  267.     int      nNumEnemies;
  268.     CEnemyStyle* aEnemyStyles;
  269.     BOOL     bForceEnemySelect;
  270.     int      nSelectEnemy;
  271.     FLOAT    fTemp[10];
  272.     LONG     nTemp[10];
  273. };