diff mm7_5.cpp @ 1048:d36681a9e4f8

Слияние
author Ritor1
date Thu, 23 May 2013 11:17:01 +0600
parents d3f4c6584ada 682ba1c83fd3
children 05c62d166182
line wrap: on
line diff
--- a/mm7_5.cpp	Thu May 23 11:16:46 2013 +0600
+++ b/mm7_5.cpp	Thu May 23 11:17:01 2013 +0600
@@ -275,7 +275,7 @@
     memset(&actor, 0, 0x344u);
     dword_5B65D0_dialogue_actor_npc_id = bDialogueUI_InitializeActor_NPC_ID;
     actor.sNPC_ID = bDialogueUI_InitializeActor_NPC_ID;
-    actor.InitializeDialogue(0);
+    GameUI_InitializeDialogue(&actor, false);
     bDialogueUI_InitializeActor_NPC_ID = 0;
   }
   if ( pMessageQueue_50CBD0->uNumMessages )
@@ -306,7 +306,7 @@
           dword_5B65D0_dialogue_actor_npc_id = pActors[uMessageParam].sNPC_ID;
           pActor = &pActors[uMessageParam];
           //goto _actor_init_dlg;
-          pActor->InitializeDialogue(1);
+          GameUI_InitializeDialogue(pActor, true);
           continue;
         case UIMSG_StartHireling1Dialogue:
         case UIMSG_StartHireling2Dialogue:
@@ -359,7 +359,7 @@
               memset(&actor, 0, 0x344u);
               actor.sNPC_ID += -1 - (unsigned __int8)pParty->field_709 - hireling_idx;
               pActor = &actor;
-              pActor->InitializeDialogue(1);
+              GameUI_InitializeDialogue(&actor, true);
             }
           }
           continue;
@@ -406,7 +406,7 @@
             pMessageQueue_50CBD0->uNumMessages = pMessageQueue_50CBD0->pMessages[0].field_8 != 0;
           pGUIWindow_CurrentMenu->Release();
           pCurrentScreen = SCREEN_LOADGAME;
-          GameUI_DrawLoadMenu(1);
+          LoadUI_Load(1);
           continue;
         case UIMSG_Quit:
           if ( dword_6BE138 == 132 || uMessageParam )
@@ -457,8 +457,8 @@
           GUIWindow::Create(241, 302, 106, 42, WINDOW_SaveLoadBtn, (int)pBtnLoadSlot, 0);
           continue;
         case UIMSG_SelectLoadSlot:
-          if ( pGUIWindow_CurrentMenu->field_40 == 1 )
-            pKeyActionMap->_459ED1(0);
+          if ( pGUIWindow_CurrentMenu->receives_keyboard_input_2 == WINDOW_INPUT_IN_PROGRESS)
+            pKeyActionMap->SetWindowInputStatus(WINDOW_INPUT_NONE);
           if ( pCurrentScreen != SCREEN_SAVEGAME || uLoadGameUI_SelectedSlot != pSaveListPosition + uMessageParam )
           {
             v10 = pSaveListPosition + uMessageParam;
@@ -466,23 +466,6 @@
             {
               pMessageQueue_50CBD0->AddMessage(UIMSG_SaveLoadBtn, 0, 0);
               pMessageQueue_50CBD0->AddMessage(UIMSG_LoadGame, 0, 0);
-              /*if ( (signed int)pMessageQueue_50CBD0->uNumMessages < 40 )
-              {
-                pMessageQueue_50CBD0->pMessages[pMessageQueue_50CBD0->uNumMessages].eType = UIMSG_SaveLoadBtn;
-                pMessageQueue_50CBD0->pMessages[pMessageQueue_50CBD0->uNumMessages].param = 0;
-                *(&pMessageQueue_50CBD0->uNumMessages + 3 * pMessageQueue_50CBD0->uNumMessages + 3) = 0;
-                //v11 = pMessageQueue_50CBD0->uNumMessages + 1;
-                //v13 = pMessageQueue_50CBD0->uNumMessages + 1 > 40;
-                //v12 = (signed int)pMessageQueue_50CBD0->uNumMessages - 39 < 0;
-                ++pMessageQueue_50CBD0->uNumMessages;
-                if ( v12 ^ v13 )
-                {
-                  pMessageQueue_50CBD0->pMessages[v11].eType = UIMSG_LoadGame;
-                  pMessageQueue_50CBD0->pMessages[pMessageQueue_50CBD0->uNumMessages].param = 0;
-                  *(&pMessageQueue_50CBD0->uNumMessages + 3 * pMessageQueue_50CBD0->uNumMessages + 3) = 0;
-                  ++pMessageQueue_50CBD0->uNumMessages;
-                }
-              }*/
             }
             uLoadGameUI_SelectedSlot = v10;
             dword_6BE138 = v10;
@@ -504,9 +487,9 @@
           stru_506E40.Release();
           continue;
         case UIMSG_SaveGame:
-          if ( pGUIWindow_CurrentMenu->field_40 == 1 )
-          {
-            pKeyActionMap->_459ED1(0);
+          if ( pGUIWindow_CurrentMenu->receives_keyboard_input_2 == WINDOW_INPUT_IN_PROGRESS)
+          {
+            pKeyActionMap->SetWindowInputStatus(WINDOW_INPUT_NONE);
             strcpy((char *)&pSavegameHeader[uLoadGameUI_SelectedSlot], (const char *)pKeyActionMap->pPressedKeysBuffer);
           }
           DoSavegame(uLoadGameUI_SelectedSlot);
@@ -515,7 +498,7 @@
         case UIMSG_Game_OpenSaveGameDialog:
           pGUIWindow_CurrentMenu->Release();
           pCurrentScreen = SCREEN_SAVEGAME;
-          GameUI_DrawSaveMenu();
+          SaveUI_Load();
           continue;
         case UIMSG_Game_OpenOptionsDialog://Open
           if ( pMessageQueue_50CBD0->uNumMessages )
@@ -624,16 +607,16 @@
           pGUIWindow_CurrentMenu->CreateButton(350u, 224u, 70u, 0x13u, 1, 0, UIMSG_ChangeKeyButton, 0xBu, 0, "", 0);
           pGUIWindow_CurrentMenu->CreateButton(350u, 243u, 70u, 0x13u, 1, 0, UIMSG_ChangeKeyButton, 0xCu, 0, "", 0);
           pGUIWindow_CurrentMenu->CreateButton(350u, 262u, 70u, 0x13u, 1, 0, UIMSG_ChangeKeyButton, 0xDu, 0, "", 0);
-          dword_506E68 = -1;
+          uGameMenuUI_CurentlySelectedKeyIdx = -1;
           KeyboardPageNum = 1;
-          memset(KeyButtonFlagChangesArray, 0, sizeof(KeyButtonFlagChangesArray));
+          memset(GameMenuUI_InvaligKeyBindingsFlags, 0, sizeof(GameMenuUI_InvaligKeyBindingsFlags));
           //*(_WORD *)KeyButtonArray[28] = 0;
           memcpy(pPrevVirtualCidesMapping, pKeyActionMap->pVirtualKeyCodesMapping, 0x78u);
           //v1 = "";
           //v0 = 1;
           continue;
         case UIMSG_ChangeKeyButton:
-          if ( dword_506E68 != -1 )
+          if ( uGameMenuUI_CurentlySelectedKeyIdx != -1 )
           {
             pAudioPlayer->PlaySound((SoundID)27, 0, 0, -1, 0, 0, 0, 0);
             continue;
@@ -641,7 +624,7 @@
           v14 = uMessageParam;
           if ( KeyboardPageNum != 1 )
             v14 = uMessageParam + 14;
-          dword_506E68 = v14;
+          uGameMenuUI_CurentlySelectedKeyIdx = v14;
           pKeyActionMap->EnterText(0, 1, pGUIWindow_CurrentMenu);
           continue;
         case UIMSG_ResetKeyMapping:
@@ -669,7 +652,7 @@
             v18 = uAction++;
             v13 = uAction > 28;
             v12 = uAction - 28 < 0;
-            KeyButtonFlagChangesArray[v18] = 0;
+            GameMenuUI_InvaligKeyBindingsFlags[v18] = 0;
           }
           while ( v12 ^ v13 );
           pAudioPlayer->PlaySound((SoundID)219, 0, 0, -1, 0, 0, 0, 0);
@@ -1199,22 +1182,25 @@
                       WriteWindowsRegistryInt("GammaPos", uGammaPos);
                       stru_506E40.Release();
                       break;
+
                     case SCREEN_KEYBOARD_OPTIONS://Return to game
                       v197 = 1;
                       v32 = 0;
-                      while ( KeyButtonFlagChangesArray[v32] != 1 )
+                      while ( !GameMenuUI_InvaligKeyBindingsFlags[v32])
                       {
                         ++v32;
                         if ( v32 >= 28 )
                         {
                           thisb = (signed int)&uTextureID_Optkb;
+                          assert(false && "Invalid condition values");
                           do
                           {
                             if ( *(int *)thisb )
                               pIcons_LOD->pTextures[*(int *)thisb].Release();
                             thisb += 4;
                           }
-                          while ( thisb < (signed int)&dword_507C08 );
+                          while ( thisb < (signed int)0x00507C08 );
+
                           memset(&uTextureID_Optkb, 0, 0x14u);
                           pIcons_LOD->SyncLoadedFilesCount();
                           uAction = 0;
@@ -1341,7 +1327,7 @@
                       pGUIWindow_CurrentMenu = 0;
                       pEventTimer->Resume();
                       pCurrentScreen = SCREEN_GAME;
-                      viewparams->bRedrawGameUI = 1;
+                      viewparams->bRedrawGameUI = true;
                       pIcons_LOD->_4355F7();
                       continue;
                     case SCREEN_INPUT_BLV://click escape
@@ -1352,34 +1338,34 @@
                       {
                         pParty->field_709 = 0;
                         LOBYTE(pNPCStats->pNewNPCData[dword_5B65CC].uFlags) &= 0x7Fu;
-                        Party__CountHirelings();
-                        viewparams->bRedrawGameUI = 1;
+                        pParty->CountHirelings();
+                        viewparams->bRedrawGameUI = true;
                         dword_5B65CC = 0;
                       }
                       DialogueEnding();
                       pCurrentScreen = SCREEN_GAME;
-                      viewparams->bRedrawGameUI = 1;
+                      viewparams->bRedrawGameUI = true;
                       continue;
                     case SCREEN_NPC_DIALOGUE://click escape
                       if ( dword_5B65CC )
                       {
                         pParty->field_709 = 0;
                         LOBYTE(pNPCStats->pNewNPCData[dword_5B65CC].uFlags) &= 0x7Fu;
-                        Party__CountHirelings();
-                        viewparams->bRedrawGameUI = 1;
+                        pParty->CountHirelings();
+                        viewparams->bRedrawGameUI = true;
                         dword_5B65CC = 0;
                       }
                       //goto LABEL_317;
                       DialogueEnding();
                       pCurrentScreen = SCREEN_GAME;
-                      viewparams->bRedrawGameUI = 1;
+                      viewparams->bRedrawGameUI = true;
                       continue;
                     case SCREEN_BRANCHLESS_NPC_DIALOG://click escape
                       memset(GameUI_Footer_TimedString, 0, 0xC8u);
                       sub_4452BB();
                       DialogueEnding();
                       pCurrentScreen = SCREEN_GAME;
-                      viewparams->bRedrawGameUI = 1;
+                      viewparams->bRedrawGameUI = true;
                       continue;
                     case SCREEN_CHANGE_LOCATION://click escape
                       if ( pParty->vPosition.x < -22528 )
@@ -1392,7 +1378,7 @@
                         pParty->vPosition.y = 22528;
                       DialogueEnding();
                       pCurrentScreen = SCREEN_GAME;
-                      viewparams->bRedrawGameUI = 1;
+                      viewparams->bRedrawGameUI = true;
                       continue;
                     case SCREEN_VIDEO:
                       pVideoPlayer->Unload();
@@ -1425,7 +1411,7 @@
                       pGUIWindow_CurrentMenu = 0;
                       pEventTimer->Resume();
                       pCurrentScreen = SCREEN_GAME;
-                      viewparams->bRedrawGameUI = 1;
+                      viewparams->bRedrawGameUI = true;
                       pIcons_LOD->_4355F7();
                       continue;
                     default:
@@ -1481,7 +1467,7 @@
                   pGUIWindow_CurrentMenu = 0;
                   pEventTimer->Resume();
                   pCurrentScreen = SCREEN_GAME;
-                  viewparams->bRedrawGameUI = 1;
+                  viewparams->bRedrawGameUI = true;
                   pIcons_LOD->_4355F7();
                   continue;
                 }
@@ -1513,7 +1499,7 @@
               pGUIWindow_CurrentMenu = 0;
               pEventTimer->Resume();
               pCurrentScreen = SCREEN_GAME;
-              viewparams->bRedrawGameUI = 1;
+              viewparams->bRedrawGameUI = true;
               pIcons_LOD->_4355F7();
               continue;
             }
@@ -1523,10 +1509,12 @@
               GUIWindow::Create(0x25Au, 0x1C2u, 0, 0, WINDOW_PressedButton2, (int)pBtn_GameSettings, 1);
               pEventTimer->Pause();
               pAudioPlayer->StopChannels(-1, -1);
+              pCurrentScreen = SCREEN_MENU;
+              
               ++pIcons_LOD->uTexturePacksCount;
-              pCurrentScreen = 1;
               if ( !pIcons_LOD->uNumPrevLoadedFiles )
                 pIcons_LOD->uNumPrevLoadedFiles = pIcons_LOD->uNumLoadedFiles;
+
               pGUIWindow_CurrentMenu = GUIWindow::Create(0, 0, 640, 480, WINDOW_OptionsButtons, 0, 0);
               uTextureID_Options = pIcons_LOD->LoadTexture("options", TEXTURE_16BIT_PALETTE);
               uTextureID_New1 = pIcons_LOD->LoadTexture("new1", TEXTURE_16BIT_PALETTE);
@@ -1662,12 +1650,12 @@
           pVideoPlayer->Unload();
           DialogueEnding();
           start_event_seq_number = 0;
-          viewparams->bRedrawGameUI = 1;
+          viewparams->bRedrawGameUI = true;
           continue;
         case UIMSG_CycleCharacters:
           v39 = GetAsyncKeyState(VK_SHIFT);
           uActiveCharacter = CycleCharacter(v39);
-          viewparams->bRedrawGameUI = 1;
+          viewparams->bRedrawGameUI = true;
           continue;
         case UIMSG_OnTravelByFoot:
           if ( pMessageQueue_50CBD0->uNumMessages )
@@ -2490,7 +2478,7 @@
           continue;
         case UIMSG_RentRoom:
           dword_506F14 = 2;
-          RestUI_Initialize();
+          RestUI_Load();
           v86 = 60 * (_494820_training_time(pParty->uCurrentHour) + 1) - pParty->uCurrentMinute;
           _506F18_num_hours_to_sleep = v86;
           if ( uMessageParam == 111 || uMessageParam == 114 || uMessageParam == 116 )
@@ -2531,7 +2519,7 @@
           }
           if ( !(pParty->uFlags & 0x88) )
           {
-            RestUI_Initialize();
+            RestUI_Load();
             continue;
           }
           if ( pParty->bTurnBasedModeOn == 1 )
@@ -3459,8 +3447,8 @@
           break;
         case UIMSG_SelectLoadSlot:
             //main menu save/load wnd   clicking on savegame lines
-          if (pGUIWindow_CurrentMenu->field_40 == 1)
-            pKeyActionMap->_459ED1(0);
+          if (pGUIWindow_CurrentMenu->receives_keyboard_input_2 == WINDOW_INPUT_IN_PROGRESS)
+            pKeyActionMap->SetWindowInputStatus(WINDOW_INPUT_NONE);
           if ( pCurrentScreen != SCREEN_SAVEGAME || uLoadGameUI_SelectedSlot != pParam + pSaveListPosition )
           {
             //load clicked line
@@ -4755,7 +4743,7 @@
     && (SHIDWORD(pMonster->pActorBuffs[20].uExpireTime) > (signed int)v41
      || LODWORD(pMonster->pActorBuffs[20].uExpireTime) > v41)
     && uDamageAmount != v41 )
-    player->ReceiveDamage(uDamageAmount, a2);
+    player->ReceiveDamage(uDamageAmount, (DAMAGE_TYPE)a2);
   v50 = 24;
   v59 = 20 * v61 / (signed int)pMonster->pMonsterInfo.uHP;
   if ( (player->_48EA46_calc_special_bonus_by_items(24) || hit_will_stun != v41)
@@ -5007,7 +4995,7 @@
 LABEL_43:
     if ( !(dword_6BE368_debug_settings_2 & 0x10) )
     {
-      v24 = v6->ReceiveDamage(v77, v22);
+      v24 = v6->ReceiveDamage(v77, (DAMAGE_TYPE)v22);
       if ( SHIDWORD(v6->pPlayerBuffs[10].uExpireTime) >= 0
         && (SHIDWORD(v6->pPlayerBuffs[10].uExpireTime) > 0 || LODWORD(v6->pPlayerBuffs[10].uExpireTime)) )
       {
@@ -5070,7 +5058,7 @@
     if ( !pParty->bTurnBasedModeOn )
     {
       v35 = v6->GetActualEndurance();
-      v36 = (double)(20 - v6->_48EA1B_get_static_effect(v35)) * flt_6BE3A4_debug_recmod1 * 2.133333333333333;
+      v36 = (double)(20 - v6->GetParameterBonus(v35)) * flt_6BE3A4_debug_recmod1 * 2.133333333333333;
       v6->SetRecoveryTime((signed __int64)v36);
     }
     if ( v77 )
@@ -5192,7 +5180,7 @@
 LABEL_133:
         if ( !(dword_6BE368_debug_settings_2 & 0x10) )
         {
-          v54 = v45->ReceiveDamage(v77, v50);
+          v54 = v45->ReceiveDamage(v77, (DAMAGE_TYPE)v50);
           if ( SHIDWORD(v45->pPlayerBuffs[10].uExpireTime) >= 0 )
           {
             if ( SHIDWORD(v45->pPlayerBuffs[10].uExpireTime) > 0 || LODWORD(v45->pPlayerBuffs[10].uExpireTime) )
@@ -5258,7 +5246,7 @@
         if ( !pParty->bTurnBasedModeOn )
         {
           v65 = v45->GetActualEndurance();
-          v66 = (double)(20 - v45->_48EA1B_get_static_effect(v65))
+          v66 = (double)(20 - v45->GetParameterBonus(v65))
               * flt_6BE3A4_debug_recmod1
               * 2.133333333333333;
           v45->SetRecoveryTime((signed __int64)v66);
@@ -5289,7 +5277,7 @@
       v68 = pParty->pPlayers[uActorID].CalculateRangedDamageTo(0);
       v69 = 0;
     }
-    a4b->ReceiveDamage(v68, v69);
+    a4b->ReceiveDamage(v68, (DAMAGE_TYPE)v69);
     if ( v38 == OBJECT_Player && !qword_A750D8 )
     {
       qword_A750D8 = 256i64;
@@ -5399,10 +5387,7 @@
   }
   else
   {
-    result = (flt_4E4A80[v2] - *(float *)&aAuthenticamd[4 * v2 + 12])
-           * (v3 - flt_4E4A80[v2 + 4])
-           / (flt_4E4A80[v2 + 5] - flt_4E4A80[v2 + 4])
-           + flt_4E4A80[v2];
+    result = (flt_4E4A80[v2] - flt_4E4A80[v2 - 3]) * (v3 - flt_4E4A80[v2 + 4]) / (flt_4E4A80[v2 + 5] - flt_4E4A80[v2 + 4]) + flt_4E4A80[v2];
   }
   return result;
 }
@@ -9751,149 +9736,6 @@
 }
 
 
-//----- (00411150) --------------------------------------------------------
-void DrawTownPortalScreen()
-{
-  //signed int v0; // edi@1
-  //__int16 v1; // dx@8
-  //POINT *v2; // edi@17
-  int v3; // edi@17
-  //__int16 v4; // dx@24
-  GUIWindow v6; // [sp+Ch] [bp-64h]@1
-  //POINT v7; // [sp+60h] [bp-10h]@17
-  POINT a2; // [sp+68h] [bp-8h]@17
-
-  pRenderer->ClearZBuffer(0, 479);
-  pRenderer->DrawTextureTransparent(8, 8, pTexture_CurrentBook);
-  pRenderer->DrawTextureTransparent(471, 445, pIcons_LOD->GetTexture(uExitCancelTextureId));
-
-  v6.uFrameX = game_viewport_x;
-  v6.uFrameY = game_viewport_y;
-  v6.uFrameWidth = game_viewport_width;
-  v6.uFrameHeight = game_viewport_height;
-  v6.uFrameZ = game_viewport_z;
-  v6.uFrameW = game_viewport_w;
-  
-  const uint fountain_bits_lut[] = {PARTY_QUEST_FOUNTAIN_HARMONDALE,
-                                    PARTY_QUEST_FOUNTAIN_PIERPONT,
-                                    PARTY_QUEST_FOUNTAIN_NIGHON,
-                                    PARTY_QUEST_FOUNTAIN_EVENMORN_ISLE,
-                                    PARTY_QUEST_FOUNTAIN_CELESTIA,
-                                    PARTY_QUEST_FOUNTAIN_THE_PIT};
-  for (uint i = 0; i < 6; ++i)
-  {
-
-    if (_449B57_test_bit(pParty->_quest_bits, fountain_bits_lut[i]))
-      pRenderer->DrawMaskToZBuffer(pTownPortalBook_xs[i],
-                                   pTownPortalBook_ys[i],
-                                   pTexture_TownPortalIcons[i], i + 1);
-  }
-
-/*  v0 = 0;
-  do
-  {
-    if ( !v0 )
-    {
-      v1 = 206;
-LABEL_14:
-      if ( !(unsigned __int16)_449B57_test_bit(pParty->_quest_bits, v1) )
-        goto LABEL_16;
-      goto LABEL_15;
-    }
-    if ( v0 == 1 )
-    {
-      v1 = 208;
-      goto LABEL_14;
-    }
-    if ( v0 == 2 )
-    {
-      v1 = 207;
-      goto LABEL_14;
-    }
-    if ( v0 == 3 )
-    {
-      v1 = 211;
-      goto LABEL_14;
-    }
-    if ( v0 == 4 )
-    {
-      v1 = 209;
-      goto LABEL_14;
-    }
-    if ( v0 == 5 )
-    {
-      v1 = 210;
-      goto LABEL_14;
-    }
-LABEL_15:
-    pRenderer->DrawMaskToZBuffer(
-      pTownPortalBook_xs[v0],
-      pTownPortalBook_ys[v0],
-      *(&pTexture_TownPortalHarmn + v0),
-      v0 + 1);
-LABEL_16:
-    ++v0;
-  }
-  while ( v0 < 6 );*/
-
-  pMouse->GetCursorPos(&a2);
-  //v2 = pMouse->GetCursorPos(&a2);
-  v3 = pRenderer->pActiveZBuffer[a2.x + pSRZBufferLineOffsets[a2.y]] & 0xFFFF;
-
-  if (v3)
-  {
-    if (_449B57_test_bit(pParty->_quest_bits, fountain_bits_lut[v3 - 1]))
-      pRenderer->DrawTextureIndexed(pTownPortalBook_xs[v3 - 1], pTownPortalBook_ys[v3 - 1], pTexture_TownPortalIcons[v3 - 1]);
-  }
-  v6.DrawTitleText(pBook2Font, 0, 22u, 0, pGlobalTXT_LocalizationStrings[10], 3u);
-
-
-/*  if ( !v3 )                                    // Town Portal
-  {
-    v6.DrawTitleText(pBook2Font, 0, 22, 0, pGlobalTXT_LocalizationStrings[10], 3);  // "Town Portal"
-    return;
-  }
-  if ( v3 == 1 )
-  {
-    v4 = 206;
-LABEL_30:
-    if ( (unsigned __int16)_449B57_test_bit(pParty->_quest_bits, v4) )
-      goto LABEL_31;
-    v6.DrawTitleText(pBook2Font, 0, 22u, 0, pGlobalTXT_LocalizationStrings[10], 3u);  // "Town Portal"
-    return;
-  }
-  if ( v3 == 2 )
-  {
-    v4 = 208;
-    goto LABEL_30;
-  }
-  if ( v3 == 3 )
-  {
-    v4 = 207;
-    goto LABEL_30;
-  }
-  if ( v3 == 4 )
-  {
-    v4 = 211;
-    goto LABEL_30;
-  }
-  if ( v3 == 5 )
-  {
-    v4 = 209;
-    goto LABEL_30;
-  }
-  if ( v3 == 6 )
-  {
-    v4 = 210;
-    goto LABEL_30;
-  }
-LABEL_31:
-  pRenderer->DrawTextureIndexed(word_4E1D3A[v3], pTownPortalBook_xs[v3 + 5], *(&pTex_tab_an_6b__zoom_on + v3));
-  v6.DrawTitleText(pBook2Font, 0, 22u, 0, pGlobalTXT_LocalizationStrings[10], 3u);*/
-}
-// 4E1D3A: using guessed type __int16 word_4E1D3A[];
-
-
 //----- (00413FF1) --------------------------------------------------------
 void SetMonthNames()
 {
@@ -9964,17 +9806,6 @@
 
 
 
-
-//----- (004141CA) --------------------------------------------------------
-void ModalWindow(const char *pStr, int a4)
-{
-  pEventTimer->Pause();
-  dword_506F0C[0] = pCurrentScreen;
-  ptr_507BDC = GUIWindow::Create(0, 0, 640, 480, WINDOW_FinalWindow, a4, (int)pStr);
-  pCurrentScreen = SCREEN_PRESS_ESCAPE_MESSAGE;
-}
-// 4E28F8: using guessed type int pCurrentScreen;
-
 //----- (0041420D) --------------------------------------------------------
 void __cdecl sub_41420D_press_esc()
 {
@@ -9998,13 +9829,7 @@
 
   v0 = ptr_507BDC;
   pMessageQueue_50CBD0->AddMessage((UIMessageType)(int)ptr_507BDC->ptr_1C, 0, 0);
-  /*if ( (signed int)pMessageQueue_50CBD0->uNumMessages < 40 )
-  {
-    pMessageQueue_50CBD0->pMessages[pMessageQueue_50CBD0->uNumMessages].eType = (UIMessageType)(int)ptr_507BDC->ptr_1C;
-    pMessageQueue_50CBD0->pMessages[pMessageQueue_50CBD0->uNumMessages].param = 0;
-    *(&pMessageQueue_50CBD0->uNumMessages + 3 * pMessageQueue_50CBD0->uNumMessages + 3) = 0;
-    ++pMessageQueue_50CBD0->uNumMessages;
-  }*/
+
   v0->Release();
   ptr_507BDC = 0;
   pCurrentScreen = dword_506F0C[0];
@@ -10051,10 +9876,10 @@
 
 
 //----- (004156F0) --------------------------------------------------------
-void __cdecl GUI_UpdateWindows() 
+void GUI_UpdateWindows() 
 {
   GUIWindow *pWindow; // esi@4
-  unsigned int pWindowType; // eax@4
+  //unsigned int pWindowType; // eax@4
   char *pHint; // edx@66
   GUIButton *pButtonPtr_1C; // ebp@79
   char *pHint1; // edx@80
@@ -10082,7 +9907,6 @@
   for ( i = 1; i <= uNumVisibleWindows; ++i )
   {
     pWindow = &pWindowList[pVisibleWindowsIdxs[i] - 1];
-    pWindowType = pWindow->eWindowType;
     switch (pWindow->eWindowType)
     {
       case WINDOW_OptionsButtons:
@@ -10099,7 +9923,7 @@
       }
       case WINDOW_Options:
       {
-        DrawGameOptions();
+        GameMenuUI_Options_Draw();
         continue;
       }
       case WINDOW_Book:
@@ -10109,7 +9933,7 @@
       }
       case WINDOW_Dialogue:
       {
-        DrawDialogueUI();
+        GameUI_DrawDialogue();
         continue;
       }
       case WINDOW_QuickReference:
@@ -10134,7 +9958,7 @@
       }
       case WINDOW_GreetingNPC:
       {
-        DrawBranchlessDialogueUI();
+        GameUI_DrawBranchlessDialogue();
         continue;
       }
       case WINDOW_Chest:
@@ -10154,12 +9978,12 @@
       }
       case WINDOW_SaveLoadButtons:
       {
-        sub_4606FE();
+        SaveUI_Draw();
         continue;
       }
       case WINDOW_MainMenu_Load:
       {
-        GameUI_MainMenu_DrawLoad();
+        LoadUI_Draw();
         continue;
       }
       case WINDOW_HouseInterior:
@@ -10208,7 +10032,7 @@
       case WINDOW_50:
       {
         v27 = TargetColor(255, 255, 255);
-        if ( ptr_507BD0->field_40 == 1 )
+        if ( ptr_507BD0->receives_keyboard_input_2 == WINDOW_INPUT_IN_PROGRESS)
         {
           ptr_507BD0->DrawMessageBox(0);
           ptr_507BD0->DrawText(pFontCreate, 30, 40, v27, (const char *)pKeyActionMap->pPressedKeysBuffer, 0, 0, 0);
@@ -10216,19 +10040,19 @@
           ptr_507BD0->DrawFlashingInputCursor(v31 + 30, 40, pFontCreate);
           continue;
         }
-        if ( ptr_507BD0->field_40 == 2 )
+        if ( ptr_507BD0->receives_keyboard_input_2 == WINDOW_INPUT_CONFIRMED)
         {
-          pWindow->field_40 = 0;
+          pWindow->receives_keyboard_input_2 = WINDOW_INPUT_NONE;
           pMessageQueue_50CBD0->AddMessage((UIMessageType)(int)ptr_507BD0->ptr_1C, 0, 0);
           pEventTimer->Resume();
           ptr_507BD0->Release();
-          pCurrentScreen = 0;
-          viewparams->bRedrawGameUI = 1;
+          pCurrentScreen = SCREEN_GAME;
+          viewparams->bRedrawGameUI = true;
           continue;
         }
-        if ( ptr_507BD0->field_40 == 3 )
+        if ( ptr_507BD0->receives_keyboard_input_2 == WINDOW_INPUT_CANCELLED)
         {
-          pWindow->field_40 = 0;
+          pWindow->receives_keyboard_input_2 = WINDOW_INPUT_NONE;
           pEventTimer->Resume();
           ptr_507BD0->Release();
           continue;
@@ -10245,7 +10069,7 @@
           pWindow->Release();
           pEventTimer->Resume();
           pCurrentScreen = 0;
-          viewparams->bRedrawGameUI = 1;
+          viewparams->bRedrawGameUI = true;
           v26 = atoi((const char *)pKeyActionMap->pPressedKeysBuffer);
           if ( v26 > 0 )
           {
@@ -10422,7 +10246,7 @@
         pButton = (GUIButton *)pWindow->ptr_1C;
         pRenderer->DrawTextureIndexed(pWindow->uFrameY,
                                       pWindow->uFrameX, pButton->pTextures[0]);
-        viewparams->bRedrawGameUI = 1;
+        viewparams->bRedrawGameUI = true;
         continue;
       }
       case WINDOW_CharacterWindow_Inventory:
@@ -10469,7 +10293,7 @@
 }
 
 //----- (00416196) --------------------------------------------------------
-void __cdecl identify_item()
+void identify_item()
 {
   Player *v0; // esi@2
   POINT *v1; // edi@2
@@ -10753,17 +10577,11 @@
     {
       v0->RemoveItemAtInventoryIndex(v18);
       v26 = rand();
-      v0->ReceiveDamage(v26 % 11 + 10, 0);
+      v0->ReceiveDamage(v26 % 11 + 10, DMGT_FIRE);
       pAudioPlayer->PlaySound(SOUND_8, 0, 0, -1, 0, 0, 0, 0);
 
       pMessageQueue_50CBD0->AddMessage(UIMSG_Escape, 0, 0);
-      /*if ( (signed int)pMessageQueue_50CBD0->uNumMessages < 40 )
-      {
-        pMessageQueue_50CBD0->pMessages[pMessageQueue_50CBD0->uNumMessages].eType = UIMSG_Escape;
-        pMessageQueue_50CBD0->pMessages[pMessageQueue_50CBD0->uNumMessages].param = 0;
-        *(&pMessageQueue_50CBD0->uNumMessages + 3 * pMessageQueue_50CBD0->uNumMessages + 3) = 0;
-        ++pMessageQueue_50CBD0->uNumMessages;
-      }*/
+
       v42 = (int *)&a2.y;
       v41 = (int *)&y.y;
       v40 = (int *)&pOut;
@@ -10775,7 +10593,7 @@
       {
         v0->RemoveItemAtInventoryIndex(v18);
         v25 = rand();
-        v0->ReceiveDamage(v25 % 71 + 30, 0);
+        v0->ReceiveDamage(v25 % 71 + 30, DMGT_FIRE);
         v23 = 1;
       }
       else
@@ -10784,7 +10602,7 @@
         {
           v0->RemoveItemAtInventoryIndex(v18);
           v24 = rand();
-          v0->ReceiveDamage(v24 % 201 + 50, 0);
+          v0->ReceiveDamage(v24 % 201 + 50, DMGT_FIRE);
           v23 = 5;
         }
         else
@@ -10835,13 +10653,7 @@
       pAudioPlayer->PlaySound(SOUND_8, 0, 0, -1, 0, 0, 0, 0);
 
       pMessageQueue_50CBD0->AddMessage(UIMSG_Escape, 0, 0);
-      /*if ( (signed int)pMessageQueue_50CBD0->uNumMessages < 40 )
-      {
-        pMessageQueue_50CBD0->pMessages[pMessageQueue_50CBD0->uNumMessages].eType = UIMSG_Escape;
-        pMessageQueue_50CBD0->pMessages[pMessageQueue_50CBD0->uNumMessages].param = 0;
-        *(&pMessageQueue_50CBD0->uNumMessages + 3 * pMessageQueue_50CBD0->uNumMessages + 3) = 0;
-        ++pMessageQueue_50CBD0->uNumMessages;
-      }*/
+
       v42 = (int *)&a2.y;
       v41 = (int *)&y.y;
       v40 = (int *)&pOut;
@@ -10907,134 +10719,6 @@
 }
 
 
-//----- (00416B01) --------------------------------------------------------
-void __thiscall sub_416B01(void *_this)//PopupWindowForBenefitAndJoinText
-{
-  int v1; // edi@2
-  int v2; // ecx@2
-  NPCData *v3; // eax@2
-  NPCData *v4; // esi@7
-  NPCData *v5; // eax@16
-  NPCData *v6; // esi@16
-  const CHAR *v7; // eax@18
-  unsigned int v8; // eax@25
-  unsigned int v9; // eax@25
-  const char *v10; // ST14_4@26
-  char *v11; // esi@26
-  const char *v12; // ST18_4@27
-  unsigned __int16 v13; // ax@28
-  char *v14; // eax@28
-  GUIWindow a1; // [sp+Ch] [bp-60h]@23
-  int a2; // [sp+60h] [bp-Ch]@16
-  void *v17; // [sp+64h] [bp-8h]@1
-  LPCSTR lpsz; // [sp+68h] [bp-4h]@6
-
-  v17 = _this;
-  if ( bNoNPCHiring != 1 )
-  {
-    v1 = 0;
-    v2 = 0;
-    v3 = pParty->pHirelings;
-    /*do
-    {
-      if ( v3->pName )
-        pTmpBuf[v1++] = v2;
-      ++v3;
-      ++v2;
-    }
-    while ( (signed int)v3 < (signed int)&pParty->pPickedItem );*/
-    for (int i = 0; i < 2; ++i)
-    {
-     if (pParty->pHirelings[i].pName)
-        pTmpBuf[v1++] = i;
-    }
-    lpsz = 0;
-    if ( (signed int)pNPCStats->uNumNewNPCs > 0 )
-    {
-      /*v4 = pNPCStats->pNewNPCData;
-      do
-      {
-        if ( v4->uFlags & 0x80
-          && (!pParty->pHirelings[0].pName || strcmp(v4->pName, pParty->pHirelings[0].pName))
-          && (!pParty->pHirelings[1].pName || strcmp(v4->pName, pParty->pHirelings[1].pName)) )
-          pTmpBuf[v1++] = (char)lpsz + 2;
-        ++lpsz;
-        ++v4;
-      }
-      while ( (signed int)lpsz < (signed int)pNPCStats->uNumNewNPCs );*/
-      for (int i = 0; i < pNPCStats->uNumNewNPCs; ++i)
-      {
-        if (pNPCStats->pNewNPCData[i].Hired())
-        {
-          if (!pParty->pHirelings[0].pName || strcmp((char *)pNPCStats->pNewNPCData[i].pName, (char *)pParty->pHirelings[0].pName))
-          {
-            if (!pParty->pHirelings[1].pName || strcmp((char *)pNPCStats->pNewNPCData[i].pName, (char *)pParty->pHirelings[1].pName))
-              pTmpBuf[v1++] = i + 2;
-          }
-        }
-      }
-    }
-    if ( (signed int)((char *)v17 + (unsigned __int8)pParty->field_709) < v1 )
-    {
-      sDialogue_SpeakingActorNPC_ID = -1 - (unsigned __int8)pParty->field_709 - (int)v17;
-      v5 = GetNewNPCData(sDialogue_SpeakingActorNPC_ID, (int)&a2);
-      v6 = v5;
-      if ( v5 )
-      {
-        if ( a2 == 57 )
-          v7 = pNPCTopics[512].pText; // Baby dragon
-        else
-          v7 = (const CHAR *)pNPCStats->pProfessions[v5->uProfession].pBenefits;
-        lpsz = v7;
-        if ( !v7 )
-        {
-          lpsz = (LPCSTR)pNPCStats->pProfessions[v5->uProfession].pJoinText;
-          if ( !lpsz )
-            lpsz = "";
-        }
-        a1.Hint = 0;
-        a1.uFrameX = 38;
-        a1.uFrameY = 60;
-        a1.uFrameWidth = 276;
-        a1.uFrameZ = 313;
-        a1.uFrameHeight = pFontArrus->CalcTextHeight(lpsz, &a1, 0, 0)
-                        + 2 * LOBYTE(pFontArrus->uFontHeight)
-                        + 24;
-        if ( (signed int)a1.uFrameHeight < 130 )
-          a1.uFrameHeight = 130;
-        a1.uFrameWidth = 400;
-        a1.uFrameZ = a1.uFrameX + 399;
-        a1.DrawMessageBox(0);
-        sprintf(pTmpBuf2, "NPC%03d", v6->uPortraitID);
-        v8 = pIcons_LOD->LoadTexture(pTmpBuf2, TEXTURE_16BIT_PALETTE);
-        pRenderer->DrawTextureIndexed(
-          a1.uFrameX + 22,
-          a1.uFrameY + 36,
-          (Texture *)(v8 != -1 ? &pIcons_LOD->pTextures[v8] : 0));
-        v9 = v6->uProfession;
-        if ( v9 )
-        {
-          v10 = v6->pName;
-          v11 = pTmpBuf;
-          sprintfex(pTmpBuf, pGlobalTXT_LocalizationStrings[429], v10, aNPCProfessionNames[v9]);
-        }
-        else
-        {
-          v12 = v6->pName;
-          v11 = pTmpBuf;
-          strcpy(pTmpBuf, v12);
-        }
-        v13 = TargetColor(0xFFu, 0xFFu, 0x9Bu);
-        a1.DrawTitleText(pFontArrus, 0, 0xCu, v13, v11, 3u);
-        a1.uFrameWidth -= 24;
-        a1.uFrameZ = a1.uFrameX + a1.uFrameWidth - 1;
-        v14 = BuilDialogueString((char *)lpsz, uActiveCharacter - 1, 0, 0, 0, 0);
-        a1.DrawText(pFontArrus, 100, 36, 0, v14, 0, 0, 0);
-      }
-    }
-  }
-}
-
 
 
 
@@ -11194,26 +10878,6 @@
   }
 }
 
-//----- (004178C4) --------------------------------------------------------
-void __cdecl sub_4178C4()
-{
-  if ( pArcomageGame->bGameInProgress == 1 )
-  {
-    if (pAsyncMouse)
-      pArcomageGame->stru1.field_0 = 7;
-  }
-}
-
-//----- (004178E1) --------------------------------------------------------
-void __cdecl sub_4178E1()
-{
-  if ( pArcomageGame->bGameInProgress == 1 )
-  {
-    if (pAsyncMouse)
-      pArcomageGame->stru1.field_0 = 8;
-  }
-}
-
 //----- (004178FE) --------------------------------------------------------
 unsigned int __fastcall UI_GetHealthManaStringColor(signed int a1, signed int a2)
 {