diff mm7_5.cpp @ 998:e4383e6dfbef

ProcessInput
author Ritor1
date Tue, 14 May 2013 17:37:24 +0600
parents 1c13fbaad0c5
children dcdfbb6eede9
line wrap: on
line diff
--- a/mm7_5.cpp	Tue May 14 10:07:33 2013 +0600
+++ b/mm7_5.cpp	Tue May 14 17:37:24 2013 +0600
@@ -82,7 +82,7 @@
   unsigned int v33; // eax@277
   unsigned __int8 v34; // al@279
   unsigned __int8 v35; // al@280
-  GUIWindow *pWindow3; // ecx@332
+  //GUIWindow *pWindow3; // ecx@332
   int v37; // eax@341
   int v38; // eax@358
   SHORT v39; // ax@365
@@ -97,7 +97,7 @@
   char v48; // zf@405
   BLVFace *pBLVFace; // ecx@410
   ODMFace *pODMFace; // ecx@412
-  CastSpellInfo *v51; // ecx@415
+  CastSpellInfo *pSpellInfo; // ecx@415
   void *v52; // eax@424
   __int16 v53; // ax@431
   int v54; // eax@432
@@ -1486,7 +1486,6 @@
                   pIcons_LOD->_4355F7();
                   continue;
                 }
-LABEL_319:
                 CharacterUI_ReleaseButtons();
                 sub_419379();
                 pIcons_LOD->_4114F2();
@@ -1519,7 +1518,6 @@
               pIcons_LOD->_4355F7();
               continue;
             }
-            pWindow3 = pGUIWindow_Settings;
             if ( !pGUIWindow_Settings )//Draw Menu
             {
               dword_6BE138 = -1;
@@ -1565,7 +1563,7 @@
               stru_506E40._40E55E("gamma.pcx", 0);
               continue;
             }
-            pWindow3->Release();
+            pGUIWindow_Settings->Release();
             pGUIWindow_Settings = 0;
             pMouse->SetCursorBitmap("MICON1");
             GameUI_Footer_TimeLeft = 0;
@@ -1805,13 +1803,12 @@
             v47 = pActors[v46].uAIState == Dead;
             if ( !v47 )
               continue;
-            v51 = (CastSpellInfo *)pGUIWindow_Settings->ptr_1C;
-            LOBYTE(v51->field_8) &= 0xBFu;
-            v51->uPlayerID_2 = uMessageParam;
-            v51->spell_target_pid = v44;
-            pParty->pPlayers[v51->uPlayerID].SetRecoveryTime(300);
-            pWindow3 = pGUIWindow_Settings;
-            pWindow3->Release();
+            pSpellInfo = (CastSpellInfo *)pGUIWindow_Settings->ptr_1C;
+            LOBYTE(pSpellInfo->field_8) &= 0xBFu;
+            pSpellInfo->uPlayerID_2 = uMessageParam;
+            pSpellInfo->spell_target_pid = v44;
+            pParty->pPlayers[pSpellInfo->uPlayerID].SetRecoveryTime(300);
+            pGUIWindow_Settings->Release();
             pGUIWindow_Settings = 0;
             pMouse->SetCursorBitmap("MICON1");
             GameUI_Footer_TimeLeft = 0;
@@ -1824,13 +1821,12 @@
             v47 = (pObjectList->pObjects[pSpriteObjects[v46].uObjectDescID].uFlags & 0x10) == 0;
             if ( !v47 )
               continue;
-            v51 = (CastSpellInfo *)pGUIWindow_Settings->ptr_1C;
-            LOBYTE(v51->field_8) &= 0xBFu;
-            v51->uPlayerID_2 = uMessageParam;
-            v51->spell_target_pid = v44;
-            pParty->pPlayers[v51->uPlayerID].SetRecoveryTime(300);
-            pWindow3 = pGUIWindow_Settings;
-            pWindow3->Release();
+            pSpellInfo = (CastSpellInfo *)pGUIWindow_Settings->ptr_1C;
+            LOBYTE(pSpellInfo->field_8) &= 0xBFu;
+            pSpellInfo->uPlayerID_2 = uMessageParam;
+            pSpellInfo->spell_target_pid = v44;
+            pParty->pPlayers[pSpellInfo->uPlayerID].SetRecoveryTime(300);
+            pGUIWindow_Settings->Release();
             pGUIWindow_Settings = 0;
             pMouse->SetCursorBitmap("MICON1");
             GameUI_Footer_TimeLeft = 0;
@@ -1852,13 +1848,12 @@
               if ( !(pODMFace->uAttributes & 0x02000000) || !pODMFace->sCogTriggeredID )
                 continue;
               v44 = uNumSeconds;
-              v51 = (CastSpellInfo *)pGUIWindow_Settings->ptr_1C;
-              *((char *)v51 + 8) &= 0xBFu;
-              v51->uPlayerID_2 = uMessageParam;
-              v51->spell_target_pid = v44;
-              pParty->pPlayers[v51->uPlayerID].SetRecoveryTime(300);
-              pWindow3 = pGUIWindow_Settings;
-              pWindow3->Release();
+              pSpellInfo = (CastSpellInfo *)pGUIWindow_Settings->ptr_1C;
+              LOBYTE(pSpellInfo->field_8) &= 0xBFu;
+              pSpellInfo->uPlayerID_2 = uMessageParam;
+              pSpellInfo->spell_target_pid = v44;
+              pParty->pPlayers[pSpellInfo->uPlayerID].SetRecoveryTime(300);
+              pGUIWindow_Settings->Release();
               pGUIWindow_Settings = 0;
               pMouse->SetCursorBitmap("MICON1");
               GameUI_Footer_TimeLeft = 0;
@@ -1873,23 +1868,21 @@
           }
           if ( v48 )
             continue;
-          v51 = (CastSpellInfo *)pGUIWindow_Settings->ptr_1C;
-          LOBYTE(v51->field_8) &= 0xBFu;
-          v51->uPlayerID_2 = uMessageParam;
-          v51->spell_target_pid = v44;
-          pParty->pPlayers[v51->uPlayerID].SetRecoveryTime(300);
-          pWindow3 = pGUIWindow_Settings;
-          pWindow3->Release();
+          pSpellInfo = (CastSpellInfo *)pGUIWindow_Settings->ptr_1C;
+          LOBYTE(pSpellInfo->field_8) &= 0xBFu;
+          pSpellInfo->uPlayerID_2 = uMessageParam;
+          pSpellInfo->spell_target_pid = v44;
+          pParty->pPlayers[pSpellInfo->uPlayerID].SetRecoveryTime(300);
+          pGUIWindow_Settings->Release();
           pGUIWindow_Settings = 0;
           pMouse->SetCursorBitmap("MICON1");
           GameUI_Footer_TimeLeft = 0;
           unk_50C9A0 = 0;
           back_to_game();
           continue;
-        case UIMSG_CastSpell_8F:
-			__debugbreak();
-        case UIMSG_CastSpell_SPIRIT_Preservation://and blessing, treatment paralysis, hand hammers(individual upgrade)
-        case UIMSG_CastSpell_SPIRIT_Fate:
+        case UIMSG_CastSpell_Character_Big_Improvement://Preservation and blessing, treatment paralysis, hand hammers(individual upgrade),regeneration
+        case UIMSG_CastSpell_Character_Small_Improvement://Fate, cure
+        case UIMSG_HiredNPC_CastSpell:
           if ( pMessageQueue_50CBD0->uNumMessages )
             pMessageQueue_50CBD0->uNumMessages = pMessageQueue_50CBD0->pMessages[0].field_8 != 0;
           if ( unk_50C9A0 )
@@ -1901,21 +1894,21 @@
           {
             if ( pGUIWindow_Settings )
             {
-              v51 = (CastSpellInfo *)pGUIWindow_Settings->ptr_1C;
+              pSpellInfo = (CastSpellInfo *)pGUIWindow_Settings->ptr_1C;
               switch ( uMessage )
               {
-                case UIMSG_CastSpell_SPIRIT_Preservation:
-                  LOBYTE(v51->field_8) &= 0xFDu;
+                case UIMSG_CastSpell_Character_Big_Improvement:
+                  LOBYTE(pSpellInfo->field_8) &= 0xFDu;
                   break;
-                case UIMSG_CastSpell_SPIRIT_Fate:
-                  HIBYTE(v51->field_8) &= 0xFEu;
+                case UIMSG_CastSpell_Character_Small_Improvement:
+                  HIBYTE(pSpellInfo->field_8) &= 0xFEu;
                   break;
-                case UIMSG_CastSpell_8F:
-                  HIBYTE(v51->field_8) &= 0xFDu;
+                case UIMSG_HiredNPC_CastSpell:
+                  HIBYTE(pSpellInfo->field_8) &= 0xFDu;
                   break;
               }
-              v51->uPlayerID_2 = uMessageParam;
-              pParty->pPlayers[v51->uPlayerID].SetRecoveryTime(300);
+              pSpellInfo->uPlayerID_2 = uMessageParam;
+              pParty->pPlayers[pSpellInfo->uPlayerID].SetRecoveryTime(300);
               pGUIWindow_Settings->Release();
               pGUIWindow_Settings = 0;
               pEventTimer->Resume();
@@ -2399,9 +2392,8 @@
           }
           _42777D_CastSpell_UseWand_ShootArrow(pPlayer2->uQuickSpell, uActiveCharacter - 1, 0, 0, uActiveCharacter);
           continue;
-        case UIMSG_CastSpell_GreatShot://???
-			__debugbreak();
-        case UIMSG_CastSpell_SmallShot://FireBlow, Lightning, Ice Lightning, Swarm, 
+        case UIMSG_CastSpell_Monster_Improvement://Fate, cure
+        case UIMSG_CastSpell_Shoot_Monster://FireBlow, Lightning, Ice Lightning, Swarm, 
           if ( pRenderer->pRenderD3D )
           {
             v81 = pGame->pVisInstance->get_picked_object_zbuf_val();
@@ -2420,23 +2412,22 @@
             v1 = "";
             continue;
           }
-          v51 = (CastSpellInfo *)pGUIWindow_Settings->ptr_1C;
-          if ( uMessage == UIMSG_CastSpell_SmallShot )
-          {
-            LOBYTE(v51->field_8) &= 0xF7;
+          pSpellInfo = (CastSpellInfo *)pGUIWindow_Settings->ptr_1C;
+          if ( uMessage == UIMSG_CastSpell_Shoot_Monster )
+          {
+            LOBYTE(pSpellInfo->field_8) &= 0xF7;
           }
           else
           {
-            if ( uMessage == UIMSG_CastSpell_GreatShot )
-              HIBYTE(v51->field_8) &= 0xFEu;
+            if ( uMessage == UIMSG_CastSpell_Monster_Improvement )
+              HIBYTE(pSpellInfo->field_8) &= 0xFEu;
             else
-              HIBYTE(v51->field_8) &= 0xFDu;
-          }
-          v51->uPlayerID_2 = uMessageParam;
-          v51->spell_target_pid = v44;
-          pParty->pPlayers[v51->uPlayerID].SetRecoveryTime(300);
-          pWindow3 = pGUIWindow_Settings;
-          pWindow3->Release();
+              HIBYTE(pSpellInfo->field_8) &= 0xFDu;
+          }
+          pSpellInfo->uPlayerID_2 = uMessageParam;
+          pSpellInfo->spell_target_pid = v44;
+          pParty->pPlayers[pSpellInfo->uPlayerID].SetRecoveryTime(300);
+          pGUIWindow_Settings->Release();
           pGUIWindow_Settings = 0;
           pMouse->SetCursorBitmap("MICON1");
           GameUI_Footer_TimeLeft = 0;
@@ -2805,13 +2796,14 @@
                   pCurrentScreen = SCREEN_GAME;
                   pIcons_LOD->_4114F2();
                   v103 = quick_spell_at_page + 11 * player->lastOpenedSpellbookPage;
-                  if ( dword_50C9E8 < 40 )
+                  /*if ( dword_50C9E8 < 40 )
                   {
                     dword_50C9EC[3 * dword_50C9E8] = UIMSG_CastSpellFromBook;
                     dword_50C9EC[3 * dword_50C9E8 + 1] = v103;
                     dword_50C9EC[3 * dword_50C9E8 + 2] = uActiveCharacter - 1;
                     ++dword_50C9E8;
-                  }
+                  }*/
+                  pMessageQueue_50CBD0->AddMessage(UIMSG_CastSpellFromBook, v103, uActiveCharacter - 1);
                 }
                 else
                 {