diff stru6.cpp @ 491:e01730a207c3

Spell animations on portraits drawn when casting
author Nomad
date Wed, 27 Feb 2013 23:28:03 +0200
parents a3939d5067c4
children 90fdb47bfcba 6fa3ff8ef729
line wrap: on
line diff
--- a/stru6.cpp	Wed Feb 27 23:13:02 2013 +0200
+++ b/stru6.cpp	Wed Feb 27 23:28:03 2013 +0200
@@ -1331,7 +1331,7 @@
   //v4[32].uSpellID = uSpellID;  pPlayerBuffs[]::bRender
 
   v4 = &pPlayerBuffs[uPlayerID];
-  v4->field_4 = 0;
+  v4->uSpellAnimTimeElapsed = 0;
   v4->bRender = uSpellID != 0;
 
   switch (uSpellID)
@@ -1594,42 +1594,24 @@
 //----- (004A902A) --------------------------------------------------------
 void stru6::DrawPlayerBuffAnims()
 {
-  __int16 *v1; // edi@1
-  char *v2; // esi@1
-  unsigned int v3; // eax@3
-  unsigned __int8 v4; // zf@3
-  char v5; // sf@3
-  unsigned __int8 v6; // of@3
-  IconFrame *v7; // eax@4
+  for (uint i = 0; i < 4; ++i)
+  {
+    auto buff = pPlayerBuffs + i;
+    if (!buff->bRender)
+      continue;
 
-  uint _it = 0;
-  v1 = pPlayerPortraitsXCoords_For_PlayerBuffAnimsDrawing;
-  v2 = (char *)&this->pPlayerBuffs[0].uSpellIconID;
-  do
-  {
-    if ( *((short *)v2 - 2) )
+    buff->uSpellAnimTimeElapsed += pEventTimer->uTimeElapsed;
+    if (buff->uSpellAnimTimeElapsed >= buff->uSpellAnimTime)
     {
-      v3 = pEventTimer->uTimeElapsed + *(int *)v2;
-      v6 = __OFSUB__(v3, *((int *)v2 + 1));
-      v4 = v3 == *((int *)v2 + 1);
-      v5 = ((v3 - *((int *)v2 + 1)) & 0x80000000u) != 0;
-      *(int *)v2 = v3;
-      if ( (unsigned __int8)(v5 ^ v6) | v4 )
-      {
-        v7 = pIconsFrameTable->GetFrame(*((int *)v2 + 2), v3);
-        pRenderer->DrawTextureTransparent(*v1, 0x181u, &pIcons_LOD->pTextures[v7->uTextureID]);
-        pOtherOverlayList->bRedraw = true;
-      }
-      else
-      {
-        *((short *)v2 - 2) = 0;
-      }
+      buff->bRender = false;
+      continue;
     }
-    v2 += 16;
-    ++v1;
+
+    auto icon = pIconsFrameTable->GetFrame(buff->uSpellIconID, buff->uSpellAnimTimeElapsed);
+    pRenderer->DrawTextureTransparent(pPlayerPortraitsXCoords_For_PlayerBuffAnimsDrawing[i], 385, pIcons_LOD->GetTexture(icon->uTextureID));
+
+    pOtherOverlayList->bRedraw = true;
   }
-  //while ( (signed int)v1 < (signed int)pBaseHealthByClass );
-  while (++_it != 4);
 }
 
 //----- (004A90A0) --------------------------------------------------------