TexManager.cpp
上传用户:hkb425
上传日期:2007-06-16
资源大小:34191k
文件大小:13k
源码类别:

游戏引擎

开发平台:

Visual C++

  1. // TexManager.cpp: implementation of the CTexManager class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #include "stdafx.h"
  5. #include "TexManager.h"
  6. #include "texture.h"
  7. #include "gamesetting.h"
  8. #include "imgText.h"
  9. //////////////////////////////////////////////////////////////////////
  10. // Construction/Destruction
  11. //////////////////////////////////////////////////////////////////////
  12. unsigned int *CTexManager::m_texList=NULL;
  13. int           CTexManager::m_numUser=0;
  14. CTexManager::CTexManager()
  15. {
  16. if(m_numUser==0)
  17. {
  18. m_texList=new unsigned int [MAX_TEXTURE_NUM];
  19. for(int i=0;i<MAX_TEXTURE_NUM;i++)
  20. m_texList[i]=0;
  21. }
  22. m_numUser++;
  23. }
  24. CTexManager::~CTexManager()
  25. {
  26. m_numUser--;
  27. if(m_numUser==0 && m_texList!=NULL)
  28. {
  29. delete [] m_texList;
  30. }
  31. }
  32. //////////////////////////////////////////////////
  33. bool CTexManager::CreateMenuResource()
  34. {
  35.     CTexture cTex;
  36. int  error=0;
  37. //////////// imgtext
  38. if(!cTex.MakeTextureBind("texture/myfont.BMP",&m_texList[TEX_IMAGE_TEXT],0,0))error++;
  39. CImgText::m_texFont=m_texList[TEX_IMAGE_TEXT];
  40.     //////////// bkg
  41. if(!cTex.MakeTextureBind("texture/bkg.BMP",&m_texList[TEX_MENU_BKG],0,0))error++;
  42. ///////////// cursor
  43. if(!cTex.MakeAlphaTextureBind("texture/cur16.BMP","texture/cur16Alpha.bmp",&m_texList[TEX_MENU_CURSOR]))error++;
  44. ////////////My Photos
  45. if(!cTex.MakeTextureBind("texture/photos/a.bmp",&m_texList[TEX_MY_PHOTO_0],1,0))error++;
  46. if(!cTex.MakeTextureBind("texture/photos/b.bmp",&m_texList[TEX_MY_PHOTO_1],1,0))error++;
  47. if(!cTex.MakeTextureBind("texture/photos/c.bmp",&m_texList[TEX_MY_PHOTO_2],1,0))error++;
  48. ////////////Hero Photos
  49. if(!cTex.MakeTextureBind("texture/photos/hero0.bmp",&m_texList[TEX_HERO_PHOTO_0],1,0))error++;
  50. if(!cTex.MakeTextureBind("texture/photos/hero1.bmp",&m_texList[TEX_HERO_PHOTO_1],1,0))error++;
  51. if(!cTex.MakeTextureBind("texture/photos/hero2.bmp",&m_texList[TEX_HERO_PHOTO_2],1,0))error++;
  52. if(!cTex.MakeTextureBind("texture/photos/hero3.bmp",&m_texList[TEX_HERO_PHOTO_3],1,0))error++;
  53. ////////////Sketch
  54. if(!cTex.MakeTextureBind("texture/sketch/sketch00.bmp",&m_texList[TEX_MISSION_SKETCH_0],1,0))error++;
  55. if(!cTex.MakeTextureBind("texture/sketch/sketch01.bmp",&m_texList[TEX_MISSION_SKETCH_1],1,0))error++;
  56. if(!cTex.MakeTextureBind("texture/sketch/sketch02.bmp",&m_texList[TEX_MISSION_SKETCH_2],1,0))error++;
  57. if(!cTex.MakeTextureBind("texture/sketch/sketch03.bmp",&m_texList[TEX_MISSION_SKETCH_3],1,0))error++;
  58. if(!cTex.MakeTextureBind("texture/sketch/sketch04.bmp",&m_texList[TEX_MISSION_SKETCH_4],1,0))error++;
  59. if(!cTex.MakeTextureBind("texture/sketch/sketch05.bmp",&m_texList[TEX_MISSION_SKETCH_5],1,0))error++;
  60. if(error==0)return true;
  61. else return false;
  62. }
  63. void  CTexManager::DeleteMenuResource()
  64. {
  65. glDeleteTextures(1,&m_texList[TEX_IMAGE_TEXT]);
  66. glDeleteTextures(1,&m_texList[TEX_MENU_BKG]);
  67. glDeleteTextures(1,&m_texList[TEX_MENU_CURSOR]);
  68. glDeleteTextures(1,&m_texList[TEX_MY_PHOTO_0]);
  69. glDeleteTextures(1,&m_texList[TEX_MY_PHOTO_1]);
  70. glDeleteTextures(1,&m_texList[TEX_MY_PHOTO_2]);
  71. glDeleteTextures(1,&m_texList[TEX_HERO_PHOTO_0]);
  72. glDeleteTextures(1,&m_texList[TEX_HERO_PHOTO_1]);
  73. glDeleteTextures(1,&m_texList[TEX_HERO_PHOTO_2]);
  74. glDeleteTextures(1,&m_texList[TEX_HERO_PHOTO_3]);
  75. glDeleteTextures(1,&m_texList[TEX_MISSION_SKETCH_0]);
  76. glDeleteTextures(1,&m_texList[TEX_MISSION_SKETCH_1]);
  77. glDeleteTextures(1,&m_texList[TEX_MISSION_SKETCH_2]);
  78. glDeleteTextures(1,&m_texList[TEX_MISSION_SKETCH_3]);
  79. glDeleteTextures(1,&m_texList[TEX_MISSION_SKETCH_4]);
  80. glDeleteTextures(1,&m_texList[TEX_MISSION_SKETCH_5]);
  81. }
  82. ////////////////////////////////////////////////////
  83. bool CTexManager::CreateMissionResource()
  84. {
  85.     CTexture cTex;
  86. int  error=0;
  87. char filename[96];
  88. int  dirlen;
  89. ///////////////////image text
  90.   if(!cTex.MakeTextureBind("texture/myfont.BMP",&m_texList[TEX_IMAGE_TEXT],0,0))error++;
  91. CImgText::m_texFont=m_texList[TEX_IMAGE_TEXT]; 
  92. //////////sky
  93. strcpy(filename,CGameSetting::m_strSkyDir);
  94.     dirlen=strlen(filename);
  95.     strcpy(filename+dirlen,"skyb0.bmp");
  96. if(!cTex.MakeTextureBind(filename,&m_texList[TEX_SKY_0],1,0))error++;
  97.     strcpy(filename+dirlen,"skyb1.bmp");
  98. if(!cTex.MakeTextureBind(filename,&m_texList[TEX_SKY_1],1,0))error++;
  99.     strcpy(filename+dirlen,"skyb2.bmp");
  100. if(!cTex.MakeTextureBind(filename,&m_texList[TEX_SKY_2],1,0))error++;
  101.     strcpy(filename+dirlen,"skyb3.bmp");
  102. if(!cTex.MakeTextureBind(filename,&m_texList[TEX_SKY_3],1,0))error++;
  103.     strcpy(filename+dirlen,"skyb4.bmp");
  104. if(!cTex.MakeTextureBind(filename,&m_texList[TEX_SKY_4],1,0))error++;
  105. if(CGameSetting::m_bLensFlare)
  106. {
  107. //// LensFlare
  108. if(!cTex.MakeAlphaTextureBind("flare/flare0.bmp",&m_texList[TEX_LENSFLARE_0]))error++;
  109. if(!cTex.MakeAlphaTextureBind("flare/flare1.bmp",&m_texList[TEX_LENSFLARE_1]))error++;
  110. if(!cTex.MakeAlphaTextureBind("flare/flare2.bmp",&m_texList[TEX_LENSFLARE_2]))error++;
  111. if(!cTex.MakeAlphaTextureBind("flare/flare3.bmp",&m_texList[TEX_LENSFLARE_3]))error++;
  112. if(!cTex.MakeAlphaTextureBind("flare/flare4.bmp",&m_texList[TEX_LENSFLARE_4]))error++;
  113. if(!cTex.MakeAlphaTextureBind("flare/flare5.bmp",&m_texList[TEX_LENSFLARE_5]))error++;
  114. if(!cTex.MakeAlphaTextureBind("flare/flare6.bmp",&m_texList[TEX_LENSFLARE_6]))error++;
  115. }
  116. //////////terrain
  117. strcpy(filename,CGameSetting::m_strTerrainSkinDir);
  118.     dirlen=strlen(filename);
  119.     
  120.     strcpy(filename+dirlen,"a1.bmp");
  121. if(!cTex.MakeTextureBind(filename,&m_texList[TEX_TERRAIN_A1]))error++;
  122.     strcpy(filename+dirlen,"a2.bmp");
  123. if(!cTex.MakeTextureBind(filename,&m_texList[TEX_TERRAIN_A2]))error++;
  124.     strcpy(filename+dirlen,"a3.bmp");
  125. if(!cTex.MakeTextureBind(filename,&m_texList[TEX_TERRAIN_A3]))error++;
  126.     strcpy(filename+dirlen,"a4.bmp");
  127. if(!cTex.MakeTextureBind(filename,&m_texList[TEX_TERRAIN_A4]))error++;
  128.     strcpy(filename+dirlen,"a5.bmp");
  129. if(!cTex.MakeTextureBind(filename,&m_texList[TEX_TERRAIN_A5]))error++;
  130.     strcpy(filename+dirlen,"b1.bmp");
  131. if(!cTex.MakeTextureBind(filename,&m_texList[TEX_TERRAIN_B1]))error++;
  132.     strcpy(filename+dirlen,"b2.bmp");
  133. if(!cTex.MakeTextureBind(filename,&m_texList[TEX_TERRAIN_B2]))error++;
  134.     strcpy(filename+dirlen,"b3.bmp");
  135. if(!cTex.MakeTextureBind(filename,&m_texList[TEX_TERRAIN_B3]))error++;
  136.     strcpy(filename+dirlen,"b4.bmp");
  137. if(!cTex.MakeTextureBind(filename,&m_texList[TEX_TERRAIN_B4]))error++;
  138.     strcpy(filename+dirlen,"b5.bmp");
  139. if(!cTex.MakeTextureBind(filename,&m_texList[TEX_TERRAIN_B5]))error++;
  140.     strcpy(filename+dirlen,"TerSkin1.skn");
  141. if(!cTex.MakeSkinTextureBind(filename,&m_texList[TEX_TERRAIN_SKN1]))error++;
  142.     strcpy(filename+dirlen,"TerSkin2.skn");
  143. if(!cTex.MakeSkinTextureBind(filename,&m_texList[TEX_TERRAIN_SKN2]))error++;
  144.     strcpy(filename+dirlen,"TerSkin3.skn");
  145. if(!cTex.MakeSkinTextureBind(filename,&m_texList[TEX_TERRAIN_SKN3]))error++;
  146.     strcpy(filename+dirlen,"TerSkin4.skn");
  147. if(!cTex.MakeSkinTextureBind(filename,&m_texList[TEX_TERRAIN_SKN4]))error++;
  148. ///////////////////Plants
  149. char alphaname[96];
  150. strcpy(filename, CGameSetting::m_strPlantsDir);
  151. strcpy(alphaname,CGameSetting::m_strPlantsDir);
  152.     dirlen=strlen(filename);
  153.    //tree body
  154. if(!cTex.MakeTextureBind("plants/treebody2.bmp",&m_texList[TEX_TREEBODY_0]))error++;
  155. if(!cTex.MakeTextureBind("plants/treebody1.bmp",&m_texList[TEX_TREEBODY_1]))error++;
  156.     //branch
  157.     strcpy(filename+dirlen,"branch2.bmp");
  158.     strcpy(alphaname+dirlen,"branchAlpha2.bmp");
  159. if(!cTex.MakeAlphaTextureBind(filename,alphaname,&m_texList[TEX_BRANCH_0]))error++;
  160.     strcpy(filename+dirlen,"branch1.bmp");
  161.     strcpy(alphaname+dirlen,"branchAlpha1.bmp");
  162. if(!cTex.MakeAlphaTextureBind(filename,alphaname,&m_texList[TEX_BRANCH_1]))error++;
  163.     strcpy(filename+dirlen,"branch3.bmp");
  164.     strcpy(alphaname+dirlen,"branchAlpha3.bmp");
  165. if(!cTex.MakeAlphaTextureBind(filename,alphaname,&m_texList[TEX_BRANCH_2]))error++;
  166.     // bush
  167.     strcpy(filename+dirlen,"bush1.bmp");
  168.     strcpy(alphaname+dirlen,"bushAlpha1.bmp");
  169. if(!cTex.MakeAlphaTextureBind(filename,alphaname,&m_texList[TEX_BUSH_0]))error++;
  170. ///////////////// smf model
  171. if(!cTex.MakeTextureBind("model/soldier/soldier.bmp",&m_texList[TEX_SOILDER]))error++;
  172. if(!cTex.MakeTextureBind("model/soldier/weapon.bmp",&m_texList[TEX_WEAPON]))error++;
  173. if(!cTex.MakeTextureBind("model/soldier/mygun.bmp",&m_texList[TEX_MY_GUN]))error++;
  174. // if(!cTex.MakeAlphaTextureBind("texture/metal.bmp",&m_texList[TEX_METAL]))error++;
  175. ///////////////// house
  176. if(!cTex.MakeTextureBind("model/ms3d/house0.bmp",&m_texList[TEX_HOUSE_0]))error++;
  177. if(!cTex.MakeTextureBind("model/ms3d/house1.bmp",&m_texList[TEX_HOUSE_1]))error++;
  178. if(!cTex.MakeTextureBind("model/ms3d/house2.bmp",&m_texList[TEX_HOUSE_2]))error++;
  179. ///////////////// smoke
  180. if(!cTex.MakeAlphaTextureBind("texture/smoke1.bmp",&m_texList[TEX_SMOKE_0]))error++;
  181. if(!cTex.MakeAlphaTextureBind("texture/gunfire.bmp",&m_texList[TEX_GUN_FIRE]))error++;
  182. //////////////////TEX_NAVIGATOR
  183. if(!cTex.MakeTextureBind("Texture/navigator.bmp",&m_texList[TEX_NAVIGATOR],1,0))error++;
  184. if(!cTex.MakeTextureBind("Texture/help.bmp",&m_texList[TEX_HELP],1,0))error++;
  185. ////////////////////////////
  186. if(error==0)return true;
  187. else 
  188. return false;
  189. }
  190. void  CTexManager::DeleteMissionResource()
  191. {
  192. glDeleteTextures(1,&m_texList[TEX_IMAGE_TEXT]);
  193.     //////////sky
  194. glDeleteTextures(1,&m_texList[TEX_SKY_0]);
  195. glDeleteTextures(1,&m_texList[TEX_SKY_1]);
  196. glDeleteTextures(1,&m_texList[TEX_SKY_2]);
  197. glDeleteTextures(1,&m_texList[TEX_SKY_3]);
  198. glDeleteTextures(1,&m_texList[TEX_SKY_4]);
  199. //////////terrain 
  200. glDeleteTextures(1,&m_texList[TEX_TERRAIN_A1]);
  201. glDeleteTextures(1,&m_texList[TEX_TERRAIN_A2]);
  202. glDeleteTextures(1,&m_texList[TEX_TERRAIN_A3]);
  203. glDeleteTextures(1,&m_texList[TEX_TERRAIN_A4]);
  204. glDeleteTextures(1,&m_texList[TEX_TERRAIN_A5]);
  205. glDeleteTextures(1,&m_texList[TEX_TERRAIN_B1]);
  206. glDeleteTextures(1,&m_texList[TEX_TERRAIN_B2]);
  207. glDeleteTextures(1,&m_texList[TEX_TERRAIN_B3]);
  208. glDeleteTextures(1,&m_texList[TEX_TERRAIN_B4]);
  209. glDeleteTextures(1,&m_texList[TEX_TERRAIN_B5]);
  210. glDeleteTextures(1,&m_texList[TEX_TERRAIN_SKN1]);
  211. glDeleteTextures(1,&m_texList[TEX_TERRAIN_SKN2]);
  212. glDeleteTextures(1,&m_texList[TEX_TERRAIN_SKN3]);
  213. glDeleteTextures(1,&m_texList[TEX_TERRAIN_SKN4]);
  214. //// LensFlare
  215. glDeleteTextures(1,&m_texList[TEX_LENSFLARE_0]);
  216. glDeleteTextures(1,&m_texList[TEX_LENSFLARE_1]);
  217. glDeleteTextures(1,&m_texList[TEX_LENSFLARE_2]);
  218. glDeleteTextures(1,&m_texList[TEX_LENSFLARE_3]);
  219. glDeleteTextures(1,&m_texList[TEX_LENSFLARE_4]);
  220. glDeleteTextures(1,&m_texList[TEX_LENSFLARE_5]);
  221. glDeleteTextures(1,&m_texList[TEX_LENSFLARE_6]);
  222. ///// plants
  223. glDeleteTextures(1,&m_texList[TEX_TREEBODY_0]);
  224. glDeleteTextures(1,&m_texList[TEX_TREEBODY_1]);
  225. glDeleteTextures(1,&m_texList[TEX_BRANCH_0]);
  226. glDeleteTextures(1,&m_texList[TEX_BRANCH_1]);
  227. glDeleteTextures(1,&m_texList[TEX_BRANCH_2]);
  228. glDeleteTextures(1,&m_texList[TEX_BUSH_0]);
  229. glDeleteTextures(1,&m_texList[TEX_BUSH_1]);
  230. /////////////model
  231. glDeleteTextures(1,&m_texList[TEX_SOILDER]);
  232. glDeleteTextures(1,&m_texList[TEX_WEAPON]);
  233. glDeleteTextures(1,&m_texList[TEX_MY_GUN]);
  234. // glDeleteTextures(1,&m_texList[TEX_METAL]);
  235. //////////house
  236. glDeleteTextures(1,&m_texList[TEX_HOUSE_0]);
  237. glDeleteTextures(1,&m_texList[TEX_HOUSE_1]);
  238. glDeleteTextures(1,&m_texList[TEX_HOUSE_2]);
  239. ////////////smoke
  240. glDeleteTextures(1,&m_texList[TEX_SMOKE_0]);
  241. glDeleteTextures(1,&m_texList[TEX_GUN_FIRE]);
  242. /////////////navigaor
  243. glDeleteTextures(1,&m_texList[TEX_NAVIGATOR]);
  244. glDeleteTextures(1,&m_texList[TEX_HELP]);
  245. }
  246. //////////////////////////////////////////////////
  247. bool  CTexManager::CreateTempMenuResource()
  248. {
  249.     CTexture cTex;
  250. int  error=0;
  251. ///////////////////image text
  252. //  if(!cTex.MakeTextureBind("texture/myfont.BMP",&m_texList[TEX_IMAGE_TEXT],0,0))error++;
  253. // CImgText::m_texFont=m_texList[TEX_IMAGE_TEXT];
  254. ///////////// cursor
  255. if(!cTex.MakeAlphaTextureBind("texture/cur16.BMP","texture/cur16Alpha.bmp",&m_texList[TEX_MENU_CURSOR]))error++;
  256.     //////////// bkg
  257. if(!cTex.MakeScreenTextureBind(&m_texList[TEX_SCREEN_CAPTURE]))error++;
  258. if(error==0)return true;
  259. else 
  260. return false;
  261. }
  262. void  CTexManager::DeleteTempMenuResource()
  263. {
  264. // glDeleteTextures(1,&m_texList[TEX_IMAGE_TEXT]);
  265. glDeleteTextures(1,&m_texList[TEX_MENU_CURSOR]);
  266. glDeleteTextures(1,&m_texList[TEX_SCREEN_CAPTURE]);
  267. }
  268. /////////////////////////////////////////////////////
  269. unsigned int CTexManager::GetTextureID(int texDefineName)
  270. {
  271. if(texDefineName>0 && texDefineName<MAX_TEXTURE_NUM)
  272.         return m_texList[texDefineName];
  273. else
  274. return 0;
  275. }