KSkillSpecial.cpp
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:3k
源码类别:

模拟服务器

开发平台:

C/C++

  1. /*******************************************************************************
  2. // FileName : KSkillSpecial.cpp
  3. // FileAuthor : RomanDou
  4. // FileCreateDate : 2002-9-23 21:12:12
  5. // FileDescription :
  6. // Revision Count :
  7. *******************************************************************************/
  8. #include "KCore.h"
  9. #include "KEngine.h"
  10. #include "KNpc.h"
  11. #include "KSkillSpecial.h"
  12. #include "KSubWorld.h"
  13. #ifndef _SERVER
  14. #include "ImgRef.h"
  15. #include "../../Represent/iRepresent/iRepresentshell.h"
  16. #include "scene/KScenePlaceC.h"
  17. KList SpecialMovieList;
  18. KSkillSpecial::KSkillSpecial()
  19. {
  20. m_nPX = m_nPY = m_nPZ = 0;
  21. m_nNpcIndex = m_dwMatchID = 0;
  22. m_pSndNode = NULL;
  23. m_RUImage.szImage[0] = 0;
  24. m_RUImage.uImage = 0;
  25. m_RUImage.nType = ISI_T_SPR;
  26. m_RUImage.Color.Color_b.a = 255;
  27. m_RUImage.bRenderStyle = IMAGE_RENDER_STYLE_ALPHA;
  28. m_RUImage.nISPosition = IMAGE_IS_POSITION_INIT;
  29. m_RUImage.bRenderFlag = RUIMAGE_RENDER_FLAG_REF_SPOT;
  30. m_eStatus = 0;
  31. #ifdef TOOLVERSION
  32. m_pSprNode = NULL;
  33. #endif
  34. };
  35. BOOL KSkillSpecial::Init()
  36. {
  37. m_RUImage.szImage[0] = 0;
  38. m_RUImage.uImage = 0;
  39. return TRUE;//Question Will Del
  40. }
  41. void KSkillSpecial::Draw(int nCurLifeFrame)
  42. {
  43. if (nCurLifeFrame > (int)m_nEndTime) return;
  44. if (!m_RUImage.szImage[0])
  45. {
  46. // char SprFileName[260];
  47. // g_GetFullPath(SprFileName, m_pMissleRes->AnimFileName);
  48. strcpy(m_RUImage.szImage, m_pMissleRes->AnimFileName);
  49. }
  50. if (m_nNpcIndex > 0 && Npc[m_nNpcIndex].IsMatch(m_dwMatchID))
  51. {
  52. int nSrcX = 0;
  53. int nSrcY = 0;
  54. SubWorld[0].Map2Mps(Npc[m_nNpcIndex].m_RegionIndex, Npc[m_nNpcIndex].m_MapX,  Npc[m_nNpcIndex].m_MapY,Npc[m_nNpcIndex].m_OffX, Npc[m_nNpcIndex].m_OffY, &nSrcX, &nSrcY);
  55. m_RUImage.oPosition.nX = m_nPX = nSrcX;
  56. m_RUImage.oPosition.nY = m_nPY = nSrcY + 1;
  57. m_RUImage.oPosition.nZ = Npc[m_nNpcIndex].m_MapZ;
  58. }
  59. else
  60. {
  61. m_RUImage.oPosition.nX = m_nPX;
  62. m_RUImage.oPosition.nY = m_nPY;
  63. m_RUImage.oPosition.nZ = m_nPZ;
  64. }
  65. if (m_pMissleRes->nInterval > 0)
  66. {
  67. int nImageDir = (m_nCurDir / (64 / m_pMissleRes->nDir));
  68. int nImageDir1 = (m_nCurDir % (64 / m_pMissleRes->nDir));
  69. if (nImageDir1 >= 32 / m_pMissleRes->nDir)  nImageDir ++;
  70. if (nImageDir >= m_pMissleRes->nDir) nImageDir = 0;
  71. m_RUImage.nFrame = (short)(nCurLifeFrame - m_nBeginTime ) / m_pMissleRes->nInterval + nImageDir * m_pMissleRes->nTotalFrame / m_pMissleRes->nDir;
  72. #ifdef TOOLVERSION
  73. KSprite * pSprite = NULL;
  74. (KCacheNode *) 
  75. m_pSprNode = (KCacheNode *)g_SpriteCache.GetNode(m_RUImage.szImage ,  (KCacheNode *)m_pSprNode);
  76. pSprite = (KSprite*)m_pSprNode->m_lpData;
  77. if (pSprite)
  78. {
  79. pSprite->DrawAlpha(m_nPX, m_nPY, m_RUImage.nFrame);
  80. }
  81. #else
  82. g_pRepresent->DrawPrimitives(1, &m_RUImage, RU_T_IMAGE, 0);
  83. #endif
  84. }
  85. return;
  86. }
  87. void KSkillSpecial::SetAnimation(char * szFile, unsigned int uImage)
  88. {
  89. if (szFile) strcpy(m_RUImage.szImage, szFile);
  90. m_RUImage.uImage = uImage;
  91. }
  92. void KSkillSpecial::Remove()
  93. {
  94. /* if (!g_pGraphics)
  95. return;
  96. if (m_pObj)
  97. {
  98. // ::RemoveMissle(g_pGraphics, m_pObj);
  99. RELEASE(m_pObj);
  100. }
  101. */
  102. }
  103. #endif