diff mm7_5.cpp @ 956:e9292c58644a

Слияние
author Ritor1
date Thu, 02 May 2013 11:03:26 +0600
parents 21cc2b274220 c0d0656aa662
children f8dd764fb7d7
line wrap: on
line diff
--- a/mm7_5.cpp	Thu May 02 11:02:48 2013 +0600
+++ b/mm7_5.cpp	Thu May 02 11:03:26 2013 +0600
@@ -32,11 +32,9 @@
 #include "Awards.h"
 #include "Autonotes.h"
 #include "stru160.h"
-#include "stru279.h"
 #include "TurnEngine.h"
-#include "stru277.h"
+#include "CastSpellInfo.h"
 #include "Weather.h"
-#include "stru272.h"
 #include "stru298.h"
 #include "StorylineTextTable.h"
 #include "Events2D.h"
@@ -531,78 +529,76 @@
           pGUIWindow_CurrentMenu->Release();
           viewparams->field_48 = v0;
           pCurrentScreen = SCREEN_OPTIONS;
-          uTextureID_ControlBG[0] = pIcons_LOD->LoadTexture("ControlBG", TEXTURE_16BIT_PALETTE);
-          uTextureID_ControlBG[3] = pIcons_LOD->LoadTexture("con_16x", TEXTURE_16BIT_PALETTE);
-          uTextureID_ControlBG[2] = pIcons_LOD->LoadTexture("con_32x", TEXTURE_16BIT_PALETTE);
-          uTextureID_ControlBG[4] = pIcons_LOD->LoadTexture("con_ArrL", TEXTURE_16BIT_PALETTE);
-          uTextureID_ControlBG[5] = pIcons_LOD->LoadTexture("con_ArrR", TEXTURE_16BIT_PALETTE);
-          uTextureID_ControlBG[1] = pIcons_LOD->LoadTexture("con_Smoo", TEXTURE_16BIT_PALETTE);
-          uTextureID_ControlBG[19] = pIcons_LOD->LoadTexture("convol00", TEXTURE_16BIT_PALETTE);
-          uTextureID_ControlBG[10] = pIcons_LOD->LoadTexture("convol10", TEXTURE_16BIT_PALETTE);
-          uTextureID_ControlBG[11] = pIcons_LOD->LoadTexture("convol20", TEXTURE_16BIT_PALETTE);
-          uTextureID_ControlBG[12] = pIcons_LOD->LoadTexture("convol30", TEXTURE_16BIT_PALETTE);
-          uTextureID_ControlBG[13] = pIcons_LOD->LoadTexture("convol40", TEXTURE_16BIT_PALETTE);
-          uTextureID_ControlBG[14] = pIcons_LOD->LoadTexture("convol50", TEXTURE_16BIT_PALETTE);
-          uTextureID_ControlBG[15] = pIcons_LOD->LoadTexture("convol60", TEXTURE_16BIT_PALETTE);
-          uTextureID_ControlBG[16] = pIcons_LOD->LoadTexture("convol70", TEXTURE_16BIT_PALETTE);
-          uTextureID_ControlBG[17] = pIcons_LOD->LoadTexture("convol80", TEXTURE_16BIT_PALETTE);
-          uTextureID_ControlBG[18] = pIcons_LOD->LoadTexture("convol90", TEXTURE_16BIT_PALETTE);
-          uTextureID_ControlBG[9] = pIcons_LOD->LoadTexture("option04", TEXTURE_16BIT_PALETTE);
-          uTextureID_ControlBG[20] = pIcons_LOD->LoadTexture("option03", TEXTURE_16BIT_PALETTE);
-          uTextureID_ControlBG[22] = pIcons_LOD->LoadTexture("option02", TEXTURE_16BIT_PALETTE);
-          uTextureID_ControlBG[21] = pIcons_LOD->LoadTexture("option01", TEXTURE_16BIT_PALETTE);
+
+          options_menu_skin.uTextureID_Background     = pIcons_LOD->LoadTexture("ControlBG", TEXTURE_16BIT_PALETTE);
+          options_menu_skin.uTextureID_TurnSpeed[2]   = pIcons_LOD->LoadTexture("con_16x", TEXTURE_16BIT_PALETTE);
+          options_menu_skin.uTextureID_TurnSpeed[1]   = pIcons_LOD->LoadTexture("con_32x", TEXTURE_16BIT_PALETTE);
+          options_menu_skin.uTextureID_TurnSpeed[0]   = pIcons_LOD->LoadTexture("con_Smoo", TEXTURE_16BIT_PALETTE);
+          options_menu_skin.uTextureID_ArrowLeft      = pIcons_LOD->LoadTexture("con_ArrL", TEXTURE_16BIT_PALETTE);
+          options_menu_skin.uTextureID_ArrowRight     = pIcons_LOD->LoadTexture("con_ArrR", TEXTURE_16BIT_PALETTE);
+          options_menu_skin.uTextureID_SoundLevels[0] = pIcons_LOD->LoadTexture("convol10", TEXTURE_16BIT_PALETTE);
+          options_menu_skin.uTextureID_SoundLevels[1] = pIcons_LOD->LoadTexture("convol20", TEXTURE_16BIT_PALETTE);
+          options_menu_skin.uTextureID_SoundLevels[2] = pIcons_LOD->LoadTexture("convol30", TEXTURE_16BIT_PALETTE);
+          options_menu_skin.uTextureID_SoundLevels[3] = pIcons_LOD->LoadTexture("convol40", TEXTURE_16BIT_PALETTE);
+          options_menu_skin.uTextureID_SoundLevels[4] = pIcons_LOD->LoadTexture("convol50", TEXTURE_16BIT_PALETTE);
+          options_menu_skin.uTextureID_SoundLevels[5] = pIcons_LOD->LoadTexture("convol60", TEXTURE_16BIT_PALETTE);
+          options_menu_skin.uTextureID_SoundLevels[6] = pIcons_LOD->LoadTexture("convol70", TEXTURE_16BIT_PALETTE);
+          options_menu_skin.uTextureID_SoundLevels[7] = pIcons_LOD->LoadTexture("convol80", TEXTURE_16BIT_PALETTE);
+          options_menu_skin.uTextureID_SoundLevels[8] = pIcons_LOD->LoadTexture("convol90", TEXTURE_16BIT_PALETTE);
+          options_menu_skin.uTextureID_SoundLevels[9] = pIcons_LOD->LoadTexture("convol00", TEXTURE_16BIT_PALETTE);
+          options_menu_skin.uTextureID_FlipOnExit     = pIcons_LOD->LoadTexture("option04", TEXTURE_16BIT_PALETTE);
+          options_menu_skin.uTextureID_AlwaysRun      = pIcons_LOD->LoadTexture("option03", TEXTURE_16BIT_PALETTE);
+          options_menu_skin.uTextureID_ShowDamage     = pIcons_LOD->LoadTexture("option02", TEXTURE_16BIT_PALETTE);
+          options_menu_skin.uTextureID_WalkSound      = pIcons_LOD->LoadTexture("option01", TEXTURE_16BIT_PALETTE);
+
           pGUIWindow_CurrentMenu = GUIWindow::Create(0, 0, 640, 480, WINDOW_Options, 0, 0);
           pGUIWindow_CurrentMenu->CreateButton(22, 270,
-                                               pIcons_LOD->GetTexture(uTextureID_ControlBG[3])->uTextureWidth,
-                                               pIcons_LOD->GetTexture(uTextureID_ControlBG[3])->uTextureHeight,
-                                               v0, 0,
-                                               UIMSG_SetTurnSpeed, 0x80,
-                                               0, v1, 0);
-          pGUIWindow_CurrentMenu->CreateButton(0x5Du, 270,
-                                               pIcons_LOD->GetTexture(uTextureID_ControlBG[2])->uTextureWidth,
-                                               pIcons_LOD->GetTexture(uTextureID_ControlBG[2])->uTextureHeight,
+                                               pIcons_LOD->GetTexture(options_menu_skin.uTextureID_TurnSpeed[2])->uTextureWidth,
+                                               pIcons_LOD->GetTexture(options_menu_skin.uTextureID_TurnSpeed[2])->uTextureHeight,
+                                               v0, 0, UIMSG_SetTurnSpeed, 0x80, 0, v1, 0);
+          pGUIWindow_CurrentMenu->CreateButton(93, 270,
+                                               pIcons_LOD->GetTexture(options_menu_skin.uTextureID_TurnSpeed[1])->uTextureWidth,
+                                               pIcons_LOD->GetTexture(options_menu_skin.uTextureID_TurnSpeed[1])->uTextureHeight,
                                                v0, 0, UIMSG_SetTurnSpeed, 0x40u, 0, v1, 0);
-          pGUIWindow_CurrentMenu->CreateButton(0xA4u, 270,
-                                               pIcons_LOD->GetTexture(uTextureID_ControlBG[1])->uTextureWidth,
-                                               pIcons_LOD->GetTexture(uTextureID_ControlBG[1])->uTextureHeight,
+          pGUIWindow_CurrentMenu->CreateButton(164, 270,
+                                               pIcons_LOD->GetTexture(options_menu_skin.uTextureID_TurnSpeed[0])->uTextureWidth,
+                                               pIcons_LOD->GetTexture(options_menu_skin.uTextureID_TurnSpeed[0])->uTextureHeight,
                                                v0, 0, UIMSG_SetTurnSpeed, 0, 0, v1, 0);
-          pGUIWindow_CurrentMenu->CreateButton(0x14u, 0x12Fu,
-                                               pIcons_LOD->GetTexture(uTextureID_ControlBG[21])->uTextureWidth,
-                                               pIcons_LOD->GetTexture(uTextureID_ControlBG[21])->uTextureHeight,
+
+          pGUIWindow_CurrentMenu->CreateButton(20, 303,
+                                               pIcons_LOD->GetTexture(options_menu_skin.uTextureID_WalkSound)->uTextureWidth,
+                                               pIcons_LOD->GetTexture(options_menu_skin.uTextureID_WalkSound)->uTextureHeight,
                                                v0, 0, UIMSG_ToggleWalkSound, 0, 0, v1, 0);
-          pGUIWindow_CurrentMenu->CreateButton(0x80u, 0x12Fu,
-            (uTextureID_ControlBG[22] != -1 ? pIcons_LOD->pTextures[uTextureID_ControlBG[22]].uTextureWidth : 24),
-            (uTextureID_ControlBG[22] != -1 ? pIcons_LOD->pTextures[uTextureID_ControlBG[22]].uTextureHeight : 26),
-            v0, 0, UIMSG_ToggleShowDamage, 0, 0, v1, 0);
-          pGUIWindow_CurrentMenu->CreateButton(0x14u, 0x145u,
-            (uTextureID_ControlBG[20] != -1 ? pIcons_LOD->pTextures[uTextureID_ControlBG[20]].uTextureWidth : 24),
-            (uTextureID_ControlBG[20] != -1 ? pIcons_LOD->pTextures[uTextureID_ControlBG[20]].uTextureHeight : 26),
-            v0, 0, UIMSG_ToggleAlwaysRun, 0, 0, v1, 0);
-          pGUIWindow_CurrentMenu->CreateButton(0x80u, 0x145u,
-            (uTextureID_ControlBG[9] != -1 ? pIcons_LOD->pTextures[uTextureID_ControlBG[9]].uTextureWidth : 24),
-            (uTextureID_ControlBG[9] != -1 ? pIcons_LOD->pTextures[uTextureID_ControlBG[9]].uTextureHeight : 26),
-            v0, 0, UIMSG_ToggleFlipOnExit, 0, 0, v1, 0);
-          pBtn_SliderLeft = pGUIWindow_CurrentMenu->CreateButton(243, 162, 16, 16, v0, 0, UIMSG_ChangeSoundVolume, 4, 0, v1,
-                         &pIcons_LOD->pTextures[uTextureID_ControlBG[4]], 0);
-          pBtn_SliderRight = pGUIWindow_CurrentMenu->CreateButton(0x1B3u, 0xA2u, 0x10u, 0x10u, v0, 0, UIMSG_ChangeSoundVolume, 5, 0, v1,
-                         &pIcons_LOD->pTextures[uTextureID_ControlBG[5]], 0);
-          pGUIWindow_CurrentMenu->CreateButton(0x107u, 0xA2u, 0xACu, 0x11u, v0, 0, UIMSG_ChangeSoundVolume, 0, 0, v1, 0);
-          pBtn_SliderLeft = pGUIWindow_CurrentMenu->CreateButton(0xF3u, 0xD8u, 0x10u, 0x10u, v0, 0, UIMSG_ChangeMusicVolume, 4, 0, v1,
-                         &pIcons_LOD->pTextures[uTextureID_ControlBG[4]], 0);
-          pBtn_SliderRight = pGUIWindow_CurrentMenu->CreateButton(0x1B3u, 0xD8u, 0x10u, 0x10u, v0, 0, UIMSG_ChangeMusicVolume, 5, 0, v1,
-                         &pIcons_LOD->pTextures[uTextureID_ControlBG[5]], 0);
-          pGUIWindow_CurrentMenu->CreateButton(0x107u, 0xD8u, 0xACu, 0x11u, v0, 0, UIMSG_ChangeMusicVolume, 0, 0, v1, 0);
-          pBtn_SliderLeft = pGUIWindow_CurrentMenu->CreateButton(0xF3u, 0x10Eu, 0x10u, 0x10u, v0, 0, UIMSG_ChangeVoiceVolume, 4, 0, v1,
-                         &pIcons_LOD->pTextures[uTextureID_ControlBG[4]], 0);
-          pBtn_SliderRight = pGUIWindow_CurrentMenu->CreateButton(0x1B3u, 0x10Eu, 0x10u, 0x10u, v0, 0, UIMSG_ChangeVoiceVolume, 5u, 0, v1,
-                         &pIcons_LOD->pTextures[uTextureID_ControlBG[5]], 0);
-          pGUIWindow_CurrentMenu->CreateButton(0x107u, 0x10Eu, 0xACu, 0x11u, v0, 0, UIMSG_ChangeVoiceVolume, 0, 0, v1, 0);
-          pGUIWindow_CurrentMenu->CreateButton(0xF1u, 0x12Eu, 0xD6u, 0x28u, v0, 0, UIMSG_Escape, 0, 0,
-            pGlobalTXT_LocalizationStrings[619],// "Return to Game"
-            0);
-          pGUIWindow_CurrentMenu->CreateButton(0x13u, 0x8Cu, 0xD6u, 0x28u, v0, 0, UIMSG_OpenKeyMappingOptions, 0, 0x4Bu, v1, 0);
-          pGUIWindow_CurrentMenu->CreateButton(19, 194, 214, 40, v0, 0, UIMSG_OpenVideoOptions, 0, 86, v1, 0);
-          continue;
+          pGUIWindow_CurrentMenu->CreateButton(128, 303,
+                                               pIcons_LOD->GetTexture(options_menu_skin.uTextureID_ShowDamage)->uTextureWidth,
+                                               pIcons_LOD->GetTexture(options_menu_skin.uTextureID_ShowDamage)->uTextureHeight,
+                                               v0, 0, UIMSG_ToggleShowDamage, 0, 0, v1, 0);
+          pGUIWindow_CurrentMenu->CreateButton(20, 325,
+                                               pIcons_LOD->GetTexture(options_menu_skin.uTextureID_AlwaysRun)->uTextureWidth,
+                                               pIcons_LOD->GetTexture(options_menu_skin.uTextureID_AlwaysRun)->uTextureHeight,
+                                               v0, 0, UIMSG_ToggleAlwaysRun, 0, 0, v1, 0);
+          pGUIWindow_CurrentMenu->CreateButton(128, 325,
+                                               pIcons_LOD->GetTexture(options_menu_skin.uTextureID_FlipOnExit)->uTextureWidth,
+                                               pIcons_LOD->GetTexture(options_menu_skin.uTextureID_FlipOnExit)->uTextureHeight,
+                                               v0, 0, UIMSG_ToggleFlipOnExit, 0, 0, v1, 0);
+
+          pBtn_SliderLeft  = pGUIWindow_CurrentMenu->CreateButton(243, 162, 16, 16, v0, 0, UIMSG_ChangeSoundVolume, 4, 0, v1, pIcons_LOD->GetTexture(options_menu_skin.uTextureID_ArrowLeft), 0);
+          pBtn_SliderRight = pGUIWindow_CurrentMenu->CreateButton(435, 162, 16, 16, v0, 0, UIMSG_ChangeSoundVolume, 5, 0, v1, pIcons_LOD->GetTexture(options_menu_skin.uTextureID_ArrowRight), 0);
+          pGUIWindow_CurrentMenu->CreateButton(263, 162, 172, 17, v0, 0, UIMSG_ChangeSoundVolume, 0, 0, v1, 0);
+
+          pBtn_SliderLeft  = pGUIWindow_CurrentMenu->CreateButton(243, 216, 16, 16, v0, 0, UIMSG_ChangeMusicVolume, 4, 0, v1, pIcons_LOD->GetTexture(options_menu_skin.uTextureID_ArrowLeft), 0);
+          pBtn_SliderRight = pGUIWindow_CurrentMenu->CreateButton(435, 216, 16, 16, v0, 0, UIMSG_ChangeMusicVolume, 5, 0, v1, pIcons_LOD->GetTexture(options_menu_skin.uTextureID_ArrowRight), 0);
+          pGUIWindow_CurrentMenu->CreateButton(263, 216, 172, 17, v0, 0, UIMSG_ChangeMusicVolume, 0, 0, v1, 0);
+
+          pBtn_SliderLeft  = pGUIWindow_CurrentMenu->CreateButton(243, 270, 16, 16, v0, 0, UIMSG_ChangeVoiceVolume, 4, 0, v1, pIcons_LOD->GetTexture(options_menu_skin.uTextureID_ArrowLeft), 0);
+          pBtn_SliderRight = pGUIWindow_CurrentMenu->CreateButton(435, 270, 16, 16, v0, 0, UIMSG_ChangeVoiceVolume, 5, 0, v1, pIcons_LOD->GetTexture(options_menu_skin.uTextureID_ArrowRight), 0);
+          pGUIWindow_CurrentMenu->CreateButton(263, 270, 172, 17, v0, 0, UIMSG_ChangeVoiceVolume, 0, 0, v1, 0);
+
+          pGUIWindow_CurrentMenu->CreateButton(241, 302, 214, 40, v0, 0, UIMSG_Escape, 0, 0, pGlobalTXT_LocalizationStrings[619], 0); // "Return to Game"
+          pGUIWindow_CurrentMenu->CreateButton( 19, 140, 214, 40, v0, 0, UIMSG_OpenKeyMappingOptions, 0, 0x4Bu, v1, 0);
+          pGUIWindow_CurrentMenu->CreateButton( 19, 194, 214, 40, v0, 0, UIMSG_OpenVideoOptions, 0, 86, v1, 0);
+          continue;
+
         case UIMSG_OpenKeyMappingOptions://Open
           if ( pMessageQueue_50CBD0->uNumMessages )
             pMessageQueue_50CBD0->uNumMessages = pMessageQueue_50CBD0->pMessages[0].field_8 != 0;
@@ -1128,15 +1124,8 @@
                       pEventTimer->Resume();
                       continue;
                     case SCREEN_OPTIONS://Close
-                      thisa = (signed int)&uTextureID_ControlBG;
-                      do
-                      {
-                        if ( *(int *)thisa )
-                          pIcons_LOD->pTextures[*(int *)thisa].Release();
-                        thisa += 4;
-                      }
-                      while ( thisa < (signed int)&dword_507CBC );
-                      memset(&uTextureID_ControlBG, 0, 0x5Cu);
+                      options_menu_skin.Relaease();
+
                       pIcons_LOD->_40F9C5();
                       WriteWindowsRegistryInt("soundflag", (char)uSoundVolumeMultiplier);
                       WriteWindowsRegistryInt("musicflag", (char)uMusicVolimeMultiplier);
@@ -1657,7 +1646,7 @@
           {
             pParty->field_6E4 = 0;
             pParty->field_6E0 = 0;
-            pStru277->_427D48(v0);
+            pCastSpellInfo->_427D48(v0);
             sub_44603D();
             pEventTimer->Pause();
             pGameLoadingUI_ProgressBar->Initialize(GUIProgressBar::TYPE_Box);
@@ -3309,7 +3298,7 @@
       }
     }
   }
-  pStru277->_427E01_cast_spell();
+  pCastSpellInfo->_427E01_cast_spell();
 }
 
 //----- (004356FF) --------------------------------------------------------
@@ -3462,10 +3451,10 @@
         case UIMSG_PlayerCreation_FacePrev:
         {
             pPlayer = &pParty->pPlayers[uNum];
-            unsigned char v12 = (char)((int)pPlayer->uFace - 1) < 0;
-            --pPlayer->uFace;
-            if ( v12 )
+            if (!pPlayer->uFace)
               pPlayer->uFace = 19;
+            else
+              pPlayer->uFace -= 1;
             pPlayer->uVoiceID = pPlayer->uFace;
             pPlayer->SetInitialStats();
             pPlayer->SetSexByVoice();
@@ -4595,7 +4584,7 @@
   PlayerEquipment *v57; // [sp+48h] [bp-24h]@10
   //int v58; // [sp+4Ch] [bp-20h]@10
   int v59; // [sp+50h] [bp-1Ch]@1
-  //unsigned int uActorID_Monster_; // [sp+54h] [bp-18h]@1
+  unsigned int uActorID_Monster_; // [sp+54h] [bp-18h]@1
   int v61; // [sp+58h] [bp-14h]@1
   bool v62; // [sp+5Ch] [bp-10h]@1
   int uDamageAmount; // [sp+60h] [bp-Ch]@1
@@ -4604,7 +4593,7 @@
 
   //v3 = a1;
   v4 = 0;
-  //uActorID_Monster_ = uActorID_Monster;
+  uActorID_Monster_ = uActorID_Monster;
   //v54 = a1;
   uDamageAmount = 0;
   a4 = 0;
@@ -4626,7 +4615,7 @@
 
   assert(PID_ID(abs(a1)) < 4);
   auto player = &pParty->pPlayers[PID_ID(a1)];
-  pMonster = &pActors[uActorID_Monster];
+  pMonster = &pActors[uActorID_Monster_];
   //uPlayerID = pMonster->IsAlive();
   if (pMonster->IsNotAlive())
     return;
@@ -4675,10 +4664,10 @@
         break;
       }
     }
-    //v50 = pMonster->pMonsterInfo.uID;
+    v50 = pMonster->pMonsterInfo.uID;
     a2 = 4;
     //v27 = player->CalculateMeleeDamageTo(0, 0, v50);
-    uDamageAmount = player->CalculateMeleeDamageTo(0, 0, pMonster->pMonsterInfo.uID);
+    uDamageAmount = player->CalculateMeleeDamageTo(0, 0, v50);
     //if ( !v57 )
       goto LABEL_67;
     //goto LABEL_69;
@@ -4689,7 +4678,7 @@
   v61 = v4->field_60_distance_related_prolly_lod;
   if ( !v19 )
   {
-    //v9 = v4;
+    //v9 = (SpriteObject *)uDamageAmount;
 	v50 = pParty->vPosition.x - v4->vPosition.x;
     //v55 = abs(v50);
     pMonsterName = (char *)(pParty->vPosition.y - v4->vPosition.y);
@@ -4882,8 +4871,8 @@
   }
   if ( pMonster->sCurrentHP > 0 )
   {
-    Actor::Stun(uActorID_Monster, a1, 0);
-    Actor::AggroSurroundingPeasants(uActorID_Monster, 1);
+    Actor::Stun(uActorID_Monster_, a1, 0);
+    Actor::AggroSurroundingPeasants(uActorID_Monster_, 1);
     if ( bShowDamage )
     {
       v50 = uDamageAmount;
@@ -4927,9 +4916,9 @@
         }
       }
     }
-    Actor::Die(uActorID_Monster);
-    Actor::ApplyFineForKillingPeasant(uActorID_Monster);
-    Actor::AggroSurroundingPeasants(uActorID_Monster, 1);
+    Actor::Die(uActorID_Monster_);
+    Actor::ApplyFineForKillingPeasant(uActorID_Monster_);
+    Actor::AggroSurroundingPeasants(uActorID_Monster_, 1);
     if ( pMonster->pMonsterInfo.uExp )
       GivePartyExp(pMonsterStats->pInfos[pMonster->pMonsterInfo.uID].uExp);
     v40 = SPEECH_51;
@@ -5002,7 +4991,7 @@
     pMonster->vVelocity.y = 50 * LOWORD(pVelocity->y);
     pMonster->vVelocity.z = 50 * LOWORD(pVelocity->z);
   }
-  Actor::AddBloodsplatOnDamageOverlay(uActorID_Monster, 1, v61);
+  Actor::AddBloodsplatOnDamageOverlay(uActorID_Monster_, 1, v61);
 }
 // 4D864C: using guessed type char byte_4D864C;
 
@@ -9319,49 +9308,6 @@
   return v5;
 }
 
-//----- (00409BE8) --------------------------------------------------------
-void __cdecl sub_409BE8()
-{
-  void *v0; // eax@1
-  stru348 *v1; // eax@1
-  int v2; // ecx@1
-  int v3; // eax@1
-
-  v0 = window_SpeakInHouse->ptr_1C;
-  dword_4E1874 = 5;
-  v1 = &stru_4E1890[(int)((char *)v0 - 108)];
-  amuint_4E1860 = v1->field_4;
-  amuint_4E1864 = v1->field_6;
-  amuint_4E1868 = v1->field_8 - 1;
-  amuint_4E186C = v1->field_A - 1;
-  amuint_4E1870 = v1->field_C - 1;
-  amuint_505884 = v1->field_E;
-  amuint_505888 = v1->field_10;
-  amuint_50588C = v1->field_12;
-  dword_4E1878 = 1;
-  dword_4E187C = 1;
-  dword_4E1880 = 1;
-  dword_4E1884 = v1->field_0;
-  v2 = v1->field_2;
-  v3 = v1->field_14;
-  dword_4E1888 = v2;
-  dword_4DF3A4 = v3;
-}
-// 4DF3A4: using guessed type int dword_4DF3A4;
-// 4E1860: using guessed type int amuint_4E1860;
-// 4E1864: using guessed type int amuint_4E1864;
-// 4E1868: using guessed type int amuint_4E1868;
-// 4E186C: using guessed type int amuint_4E186C;
-// 4E1870: using guessed type int amuint_4E1870;
-// 4E1874: using guessed type int dword_4E1874;
-// 4E1878: using guessed type int dword_4E1878;
-// 4E187C: using guessed type int dword_4E187C;
-// 4E1880: using guessed type int dword_4E1880;
-// 4E1884: using guessed type int dword_4E1884;
-// 4E1888: using guessed type int dword_4E1888;
-// 505884: using guessed type int amuint_505884;
-// 505888: using guessed type int amuint_505888;
-// 50588C: using guessed type int amuint_50588C;
 
 //----- (0040D75D) --------------------------------------------------------
 char __fastcall pPrimaryWindow_draws_text(int a1, const char *pText, int *pXY)
@@ -9435,11 +9381,11 @@
 //----- (0040DEDB) --------------------------------------------------------
 unsigned int __stdcall R8G8B8_to_TargetFormat(int uColor)
 {
-  return GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat((unsigned __int8)uColor, BYTE1(uColor), BYTE2(uColor));
+  return TargetColor((unsigned __int8)uColor, BYTE1(uColor), BYTE2(uColor));
 }
 
 //----- (0040DEF3) --------------------------------------------------------
-unsigned short GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat( unsigned __int16 r, unsigned __int16 g, unsigned __int16 b )
+unsigned short TargetColor( unsigned __int16 r, unsigned __int16 g, unsigned __int16 b )
     {
   return ((unsigned int)b >> (8 - LOBYTE(pRenderer->uTargetBBits))) | pRenderer->uTargetGMask & (g << (LOBYTE(pRenderer->uTargetGBits) + 
                            LOBYTE(pRenderer->uTargetBBits) - 8)) | pRenderer->uTargetRMask & (r << (LOBYTE(pRenderer->uTargetGBits) + 
@@ -10204,7 +10150,7 @@
 
   v0 = pParty->uCurrentHour;
   v6 = pMapStats->GetMapInfo(pCurrentMapName);
-  a5 = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0x4Bu, 0x4Bu, 0x4Bu);
+  a5 = TargetColor(0x4Bu, 0x4Bu, 0x4Bu);
   pRenderer->DrawTextureIndexed(pViewport->uViewportTL_X, pViewport->uViewportTL_Y, pSpellBookPagesTextr_13);
   v7 = (unsigned __int8)pDayMoonPhase[pParty->uDaysPlayed];
   if ( (signed int)v0 <= 12 )
@@ -10326,13 +10272,13 @@
 //----- (00414162) --------------------------------------------------------
 void __cdecl uGameUIFontMain_initialize()
 {
-  uGameUIFontMain = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0xAu, 0, 0);
+  uGameUIFontMain = TargetColor(0xAu, 0, 0);
 }
 
 //----- (00414174) --------------------------------------------------------
 void __cdecl uGameUIFontShadow_initialize()
 {
-  uGameUIFontShadow = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0xE6u, 214u, 193u);
+  uGameUIFontShadow = TargetColor(0xE6u, 214u, 193u);
 }
 
 
@@ -10531,7 +10477,7 @@
 			}
 		case WINDOW_Book:
 			{
-			SellectDrawBook((unsigned int)pWindow->ptr_1C);
+			DrawCurrentBook((unsigned int)pWindow->ptr_1C);
 			break;
 			}
 		case WINDOW_QuickReference:
@@ -11284,7 +11230,7 @@
           v11 = pTmpBuf;
           strcpy(pTmpBuf, v12);
         }
-        v13 = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0xFFu, 0xFFu, 0x9Bu);
+        v13 = TargetColor(0xFFu, 0xFFu, 0x9Bu);
         a1.DrawTitleText(pFontArrus, 0, 0xCu, v13, v11, 3u);
         a1.uFrameWidth -= 24;
         a1.uFrameZ = a1.uFrameX + a1.uFrameWidth - 1;
@@ -11505,7 +11451,7 @@
     v2 = 255;
     v3 = 0;
   }
-  return GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(v3, v2, v6);
+  return TargetColor(v3, v2, v6);
 }
 
 //----- (00417939) --------------------------------------------------------
@@ -11519,9 +11465,9 @@
 
   v1 = uConditionIdx;
   v2 = 65535;
-  v3 = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0xE1u, 0xCDu, 0x23u);
-  v6 = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0xFFu, 0x23u, 0);
-  v4 = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0, 0xFFu, 0);
+  v3 = TargetColor(0xE1u, 0xCDu, 0x23u);
+  v6 = TargetColor(0xFFu, 0x23u, 0);
+  v4 = TargetColor(0, 0xFFu, 0);
   switch ( v1 )
   {
     case 0u:
@@ -11579,7 +11525,7 @@
   Dst.uFrameHeight -= 12;
   Dst.uFrameZ = Dst.uFrameX + Dst.uFrameWidth - 1;
   Dst.uFrameW = Dst.uFrameY + Dst.uFrameHeight - 1;
-  v4 = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0xFFu, 0xFFu, 0x9Bu);
+  v4 = TargetColor(0xFFu, 0xFFu, 0x9Bu);
   sprintf(pTmpBuf, format_4E2D80, v4, v3);
   Dst.DrawTitleText(pFontCreate, 0, 0, 0, pTmpBuf, 3u);
   return Dst.DrawText(pFontSmallnum, 1, LOBYTE(pFontLucida->uFontHeight), 0, v2, 0, 0, 0);
@@ -11594,9 +11540,9 @@
   unsigned int red; // [sp+10h] [bp-8h]@1
   unsigned int white; // [sp+14h] [bp-4h]@1
 
-  white = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0xFFu, 0xFFu, 0xFFu);
-  red = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0xFFu, 0, 0);
-  yellow = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0xFFu, 0xFFu, 0);
+  white = TargetColor(0xFFu, 0xFFu, 0xFFu);
+  red = TargetColor(0xFFu, 0, 0);
+  yellow = TargetColor(0xFFu, 0xFFu, 0);
   if ( !(uPlayerClass % 4) )
   {
     if ( byte_4ED970_skill_learn_ability_by_class_table[uPlayerClass][uPlayerSkillType] >= skill_level )