diff GUI/GUIWindow.cpp @ 2548:87e5590d034b

All Books windows are refactored into respective classes
author a.parshin
date Tue, 12 May 2015 03:24:19 +0200
parents fed97f15d1e1
children 3121fb54a110
line wrap: on
line diff
--- a/GUI/GUIWindow.cpp	Tue May 12 01:45:31 2015 +0200
+++ b/GUI/GUIWindow.cpp	Tue May 12 03:24:19 2015 +0200
@@ -219,7 +219,7 @@
 GUIWindow_Spellbook::GUIWindow_Spellbook(unsigned int x, unsigned int y, unsigned int width, unsigned int height, int button, const char *hint) :
     GUIWindow(x, y, width, height, button, hint)
 {
-    InitializeBookTextures();
+    InitializeSpellBookTextures();
     OpenSpellBook();
 }
 
@@ -398,12 +398,6 @@
 
 
 
-void GUIWindow_Book::Release()
-{
-    OnCloseBook();
-
-    GUIWindow::Release();
-}
 
 void GUIWindow_Dialogue::Release()
 {
@@ -507,259 +501,6 @@
   return result;
 }
 
-//----- (00411BFC) --------------------------------------------------------
-void GUIWindow::InitializeBookView()
-{
-  char *pString; // eax@12
-  int pTextHeight; // eax@12
-  //__int64 page_count; // qax@12
-  unsigned int page_count; // esi@12
-  unsigned __int16 v18; // ax@38
-  signed int max_beacons; // [sp+10h] [bp-5Ch]@38
-  GUIWindow journal_window; // [sp+18h] [bp-54h]@8
-
-  pAudioPlayer->StopChannels(-1, -1);
-  InitializeBookFonts();
-  this->CreateButton(475, 445, 158, 34, 1, 0, UIMSG_Escape, 0, 0, pGlobalTXT_LocalizationStrings[79], 0); // Close
-  current_screen_type = SCREEN_BOOKS;
-  full_num_items_in_book = 0;
-  books_primary_item_per_page = 0;
-  books_page_number = 0;
-  num_achieved_awards = 0; 
-  switch (this->par1C)
-  {
-    case WINDOW_LloydsBeacon:
-    {
-      byte_506360 = 0;
-      pTexture_CurrentBook = pIcons_LOD->LoadTexturePtr("lb_bordr", TEXTURE_16BIT_PALETTE);
-      pTexture_LloydBeacons[0] = pIcons_LOD->LoadTexturePtr("sbmap", TEXTURE_16BIT_PALETTE);
-      pTexture_LloydBeacons[1] = pIcons_LOD->LoadTexturePtr("sbmap", TEXTURE_16BIT_PALETTE);
-      pTex_book_button1_on  = pIcons_LOD->LoadTexturePtr("tab-an-6b", TEXTURE_16BIT_PALETTE);
-      pTex_book_button1_off = pIcons_LOD->LoadTexturePtr("tab-an-6a", TEXTURE_16BIT_PALETTE);
-
-      pBtn_Book_1 = this->CreateButton(415, 13, 39, 36, 1, 0, UIMSG_LloydsBeacon_FlippingBtn, 0, 0, pGlobalTXT_LocalizationStrings[375], 0); // Set Beacon
-      pBtn_Book_2 = this->CreateButton(415, 48, 39, 36, 1, 0, UIMSG_LloydsBeacon_FlippingBtn, 1, 0, pGlobalTXT_LocalizationStrings[523], 0); // Recall Beacon
-
-      max_beacons = 1;
-      v18 = pParty->pPlayers[_506348_current_lloyd_playerid].pActiveSkills[PLAYER_SKILL_WATER];
-      if ( v18 & 0x100 || (v18 & 0x80) )
-          max_beacons = 5;
-      else if ( v18 & 0x40 )
-          max_beacons = 3;
-
-      for ( int i = 0; i < max_beacons; ++i )
-            CreateButton(pLloydsBeaconsPreviewXs[i], pLloydsBeaconsPreviewYs[i],
-                           92, 68, 1, 180, UIMSG_InstallBeacon, i, 0, "", 0);
-
-      for ( int i = 0; i < 5; ++i )
-      {
-        if (pParty->pPlayers[_506348_current_lloyd_playerid].pInstalledBeacons[i].uBeaconTime  >= (signed __int64)pParty->uTimePlayed)
-            LoadThumbnailLloydTexture(i, _506348_current_lloyd_playerid + 1);
-        else 
-          memset(&pParty->pPlayers[_506348_current_lloyd_playerid].pInstalledBeacons[i], 0, sizeof(LloydBeacon));
-      }
-    }
-    break;
-
-    case WINDOW_TownPortal:
-    {
-      pTexture_CurrentBook        = pIcons_LOD->LoadTexturePtr("townport", TEXTURE_16BIT_PALETTE);
-      pTexture_TownPortalIcons[0] = pIcons_LOD->LoadTexturePtr("tpharmndy", TEXTURE_16BIT_PALETTE);
-      pTexture_TownPortalIcons[1] = pIcons_LOD->LoadTexturePtr("tpelf", TEXTURE_16BIT_PALETTE);
-      pTexture_TownPortalIcons[2] = pIcons_LOD->LoadTexturePtr("tpwarlock", TEXTURE_16BIT_PALETTE);
-      pTexture_TownPortalIcons[3] = pIcons_LOD->LoadTexturePtr("tpisland", TEXTURE_16BIT_PALETTE);
-      pTexture_TownPortalIcons[4] = pIcons_LOD->LoadTexturePtr("tpheaven", TEXTURE_16BIT_PALETTE);
-      pTexture_TownPortalIcons[5] = pIcons_LOD->LoadTexturePtr("tphell", TEXTURE_16BIT_PALETTE);
-      
-      static int pTownPortalBook_ws[6] = { 80,  66,  68,  72,  67,  74};
-      static int pTownPortalBook_hs[6] = { 55,  56,  65,  67,  67,  59};
-      for ( uint i = 0; i < 6; ++i )
-        this->CreateButton(pTownPortalBook_xs[i], pTownPortalBook_ys[i], pTownPortalBook_ws[i], pTownPortalBook_hs[i], 1, 182, UIMSG_ClickTownInTP, i, 0, "", nullptr);
-      
-    }
-    break;
-
-  case WINDOW_QuestBook:
-  {
-      pTexture_CurrentBook    = pIcons_LOD->LoadTexturePtr("sbquiknot", TEXTURE_16BIT_PALETTE);
-      pSpellBookPagesTextr_10 = pIcons_LOD->LoadTexturePtr( "divbar", TEXTURE_16BIT_PALETTE);
-      pTex_book_button1_on = pIcons_LOD->LoadTexturePtr("tab-an-6b", TEXTURE_16BIT_PALETTE);
-      pTex_book_button2_on = pIcons_LOD->LoadTexturePtr("tab-an-7b", TEXTURE_16BIT_PALETTE);
-      pTex_book_button1_off = pIcons_LOD->LoadTexturePtr("tab-an-6a", TEXTURE_16BIT_PALETTE);
-      pTex_book_button2_off = pIcons_LOD->LoadTexturePtr("tab-an-7a", TEXTURE_16BIT_PALETTE);
-      pBtn_Book_1 = this->CreateButton(pViewport->uViewportTL_X + 398,         pViewport->uViewportTL_Y + 1,
-                                     pTex_book_button1_on->uTextureWidth, pTex_book_button1_on->uTextureHeight,
-                                     1, 0, UIMSG_ClickBooksBtn, 0xBu, 0, pGlobalTXT_LocalizationStrings[192],// "Scroll Up"
-                                     pTex_book_button1_on, 0);
-      pBtn_Book_2 = this->CreateButton(pViewport->uViewportTL_X + 398,          pViewport->uViewportTL_Y + 38,
-                                     pTex_book_button2_on->uTextureHeight, pTex_book_button2_on->uTextureHeight,
-                                     1, 0, UIMSG_ClickBooksBtn, 0xAu, 0, pGlobalTXT_LocalizationStrings[193],// "Scroll Down"
-                                     pTex_book_button2_on, 0);
-      num_achieved_awards = 0;
-      memset(achieved_awards.data(), 0, 4000);
-      for ( uint i = books_primary_item_per_page; i < 512; ++i )
-      {
-        if ( _449B57_test_bit(pParty->_quest_bits, i) && pQuestTable[i] )
-        {
-          achieved_awards[num_achieved_awards] = (AwardType)i;
-          ++num_achieved_awards;
-        }
-      }
-      full_num_items_in_book = num_achieved_awards;
-      num_achieved_awards = 0;
-    }
-    break;
-
-    case WINDOW_AutonotesBook:
-    {
-      pTexture_AutonotesBook   = pIcons_LOD->LoadTexturePtr("sbautnot", TEXTURE_16BIT_PALETTE);
-      pSpellBookPagesTextr_10  = pIcons_LOD->LoadTexturePtr("divbar", TEXTURE_16BIT_PALETTE);
-      pTex_book_button1_on  = pIcons_LOD->LoadTexturePtr("tab-an-6b", TEXTURE_16BIT_PALETTE);
-      pTex_book_button2_on  = pIcons_LOD->LoadTexturePtr("tab-an-7b", TEXTURE_16BIT_PALETTE);
-      pTex_book_button1_off = pIcons_LOD->LoadTexturePtr("tab-an-6a", TEXTURE_16BIT_PALETTE);
-      pTex_book_button2_off = pIcons_LOD->LoadTexturePtr("tab-an-7a", TEXTURE_16BIT_PALETTE);
-      pTex_book_button3_on = pIcons_LOD->LoadTexturePtr("tab-an-1b", TEXTURE_16BIT_PALETTE);
-      pTex_book_button3_off = pIcons_LOD->LoadTexturePtr("tab-an-1a", TEXTURE_16BIT_PALETTE);
-      pTex_book_button4_on = pIcons_LOD->LoadTexturePtr("tab-an-2b", TEXTURE_16BIT_PALETTE);
-      pTex_book_button4_off = pIcons_LOD->LoadTexturePtr("tab-an-2a", TEXTURE_16BIT_PALETTE);
-      pTex_book_button5_on = pIcons_LOD->LoadTexturePtr("tab-an-3b", TEXTURE_16BIT_PALETTE);
-      pTex_book_button5_off = pIcons_LOD->LoadTexturePtr("tab-an-3a", TEXTURE_16BIT_PALETTE);
-      pTex_book_button6_on = pIcons_LOD->LoadTexturePtr("tab-an-5b", TEXTURE_16BIT_PALETTE);
-      pTex_book_button6_off = pIcons_LOD->LoadTexturePtr("tab-an-5a", TEXTURE_16BIT_PALETTE);
-      pTex_book_button7_on = pIcons_LOD->LoadTexturePtr("tab-an-4b", TEXTURE_16BIT_PALETTE);
-      pTex_book_button7_off = pIcons_LOD->LoadTexturePtr("tab-an-4a", TEXTURE_16BIT_PALETTE);
-      pTex_book_button8_on = pIcons_LOD->LoadTexturePtr("tab-an-8b", TEXTURE_16BIT_PALETTE);
-      pTex_book_button8_off = pIcons_LOD->LoadTexturePtr("tab-an-8a", TEXTURE_16BIT_PALETTE);
-
-      pBtn_Book_1                = this->CreateButton(pViewport->uViewportTL_X + 398, pViewport->uViewportTL_Y + 1,   50, 34, 1, 0, 
-                                                    UIMSG_ClickBooksBtn, 11, 0, pGlobalTXT_LocalizationStrings[193], pTex_book_button1_on, 0);
-      pBtn_Book_2                = this->CreateButton(pViewport->uViewportTL_X + 398, pViewport->uViewportTL_Y + 38,  50, 34, 1, 0, 
-                                                    UIMSG_ClickBooksBtn, 10, 0, pGlobalTXT_LocalizationStrings[192], pTex_book_button2_on, 0);
-      pBtn_Book_3                = this->CreateButton(pViewport->uViewportTL_X + 398, pViewport->uViewportTL_Y + 113, 50, 34, 1, 0, 
-                                                    UIMSG_ClickBooksBtn,  2, 0, pGlobalTXT_LocalizationStrings[85], pTex_book_button3_on, 0); // "Potion Notes"
-      pBtn_Book_4                = this->CreateButton(pViewport->uViewportTL_X + 399, pViewport->uViewportTL_Y + 150, 50, 34, 1, 0, 
-                                                    UIMSG_ClickBooksBtn,  3, 0, pGlobalTXT_LocalizationStrings[137], pTex_book_button4_on, 0); // "Fountain Notes"
-      pBtn_Book_5                = this->CreateButton(pViewport->uViewportTL_X + 397, pViewport->uViewportTL_Y + 188, 50, 34, 1, 0, 
-                                                    UIMSG_ClickBooksBtn,  4, 0, pGlobalTXT_LocalizationStrings[8], pTex_book_button5_on, 0); // "Obelisk Notes"
-      pBtn_Book_6                = this->CreateButton(pViewport->uViewportTL_X + 397, pViewport->uViewportTL_Y + 226, 50, 34, 1, 0, 
-                                                    UIMSG_ClickBooksBtn,  5, 0, pGlobalTXT_LocalizationStrings[141], pTex_book_button6_on, 0); // "Seer Notes"
-      pBtn_Autonotes_Misc        = this->CreateButton(pViewport->uViewportTL_X + 397, pViewport->uViewportTL_Y + 264, 50, 34, 1, 0, 
-                                                    UIMSG_ClickBooksBtn,  6, 0, pGlobalTXT_LocalizationStrings[123], pTex_book_button7_on, 0); // "Miscellaneous Notes"
-      pBtn_Autonotes_Instructors = this->CreateButton(pViewport->uViewportTL_X + 397, pViewport->uViewportTL_Y + 302, 50, 34, 1, 0, 
-                                                    UIMSG_ClickBooksBtn,  7, 0, pGlobalTXT_LocalizationStrings[662], pTex_book_button8_on, 0); // "Instructors"
-
-      num_achieved_awards = 0;
-      for ( uint i = books_primary_item_per_page; i < 196; ++i )
-      {
-        if ( _506568_autonote_type == pAutonoteTxt[i].eType)//dword_72371C[2 * v10] )
-        {
-          if ( i )
-          {
-            if ( _449B57_test_bit(pParty->_autonote_bits, i) && pAutonoteTxt[i].pText )
-            {
-              achieved_awards[num_achieved_awards] = (AwardType)i;
-              ++num_achieved_awards;
-            }
-          }
-        }
-      }
-      full_num_items_in_book = num_achieved_awards;
-      num_achieved_awards = 0;
-    }
-    break;
-
-    case WINDOW_MapsBook:
-    {
-      dword_506364 = 1;
-      pSpellBookPagesTextr_12  = pIcons_LOD->LoadTexturePtr("sbmap", TEXTURE_16BIT_PALETTE);
-      pTex_book_button1_on  = pIcons_LOD->LoadTexturePtr("zoom-on", TEXTURE_16BIT_PALETTE);
-      pTex_book_button2_on  = pIcons_LOD->LoadTexturePtr("zoot-on", TEXTURE_16BIT_PALETTE);
-      pTex_book_button1_off = pIcons_LOD->LoadTexturePtr("zoom-off", TEXTURE_16BIT_PALETTE);
-      pTex_book_button2_off = pIcons_LOD->LoadTexturePtr("zoot-off", TEXTURE_16BIT_PALETTE);
-      pTex_book_button3_on = pIcons_LOD->LoadTexturePtr("tabNon", TEXTURE_16BIT_PALETTE);
-      pTex_book_button3_off = pIcons_LOD->LoadTexturePtr("tabNoff", TEXTURE_16BIT_PALETTE);
-      pTex_book_button4_on = pIcons_LOD->LoadTexturePtr("tabSon", TEXTURE_16BIT_PALETTE);
-      pTex_book_button4_off = pIcons_LOD->LoadTexturePtr("tabSoff", TEXTURE_16BIT_PALETTE);
-      pTex_book_button5_on = pIcons_LOD->LoadTexturePtr("tabEon", TEXTURE_16BIT_PALETTE);
-      pTex_book_button5_off = pIcons_LOD->LoadTexturePtr("tabEoff", TEXTURE_16BIT_PALETTE);
-      pTex_book_button6_on = pIcons_LOD->LoadTexturePtr("tabWon", TEXTURE_16BIT_PALETTE);
-      pTex_book_button6_off = pIcons_LOD->LoadTexturePtr("tabWoff", TEXTURE_16BIT_PALETTE);
-
-      pBtn_Book_1 = this->CreateButton(pViewport->uViewportTL_X + 398, pViewport->uViewportTL_Y + 1,   50, 34, 1, 0, 
-                                     UIMSG_ClickBooksBtn, 0, 0, pGlobalTXT_LocalizationStrings[251], pTex_book_button1_on, 0);// "Zoom In"
-      pBtn_Book_2 = this->CreateButton(pViewport->uViewportTL_X + 398, pViewport->uViewportTL_Y + 38,  50, 34, 1, 0, 
-                                     UIMSG_ClickBooksBtn, 1, 0, pGlobalTXT_LocalizationStrings[252], pTex_book_button2_on, 0);// "Zoom Out"
-      pBtn_Book_3 = this->CreateButton(pViewport->uViewportTL_X + 397, pViewport->uViewportTL_Y + 113, 50, 34, 1, 0, 
-                                     UIMSG_ClickBooksBtn, 2, 0, pGlobalTXT_LocalizationStrings[192], (Texture *)"", 0);// Scroll Up
-      pBtn_Book_4 = this->CreateButton(pViewport->uViewportTL_X + 397, pViewport->uViewportTL_Y + 150, 50, 34, 1, 0, 
-                                     UIMSG_ClickBooksBtn, 3, 0, pGlobalTXT_LocalizationStrings[193], (Texture *)"", 0);// Scroll Down
-      pBtn_Book_5 = this->CreateButton(pViewport->uViewportTL_X + 397, pViewport->uViewportTL_Y + 188, 50, 34, 1, 0, 
-                                     UIMSG_ClickBooksBtn, 4, 0, pGlobalTXT_LocalizationStrings[573], (Texture *)"", 0);// "Scroll Right"
-      pBtn_Book_6 = this->CreateButton(pViewport->uViewportTL_X + 397, pViewport->uViewportTL_Y + 226, 50, 34, 1, 0, 
-                                      UIMSG_ClickBooksBtn, 5, 0, pGlobalTXT_LocalizationStrings[572], (Texture *)"", 0);// "Scroll Left"
-    }
-    break;
-
-    case WINDOW_CalendarBook:
-    {
-      pSpellBookPagesTextr_13 = pIcons_LOD->LoadTexturePtr("sbdate-time", TEXTURE_16BIT_PALETTE);
-      pTex_moon_new = pIcons_LOD->LoadTexturePtr("moon_new", TEXTURE_16BIT_PALETTE);
-      pTex_moon_4   = pIcons_LOD->LoadTexturePtr("moon_4", TEXTURE_16BIT_PALETTE);
-      pTex_moon_2   = pIcons_LOD->LoadTexturePtr("moon_2", TEXTURE_16BIT_PALETTE);
-      pTex_moon_2_2 = pIcons_LOD->LoadTexturePtr("moon_2", TEXTURE_16BIT_PALETTE);
-      pTex_moon_ful = pIcons_LOD->LoadTexturePtr("moon_ful", TEXTURE_16BIT_PALETTE);
-    }
-    break;
-
-    case WINDOW_JournalBook:
-    {
-      pSpellBookPagesTextr_11  = pIcons_LOD->LoadTexturePtr("sbplayrnot", TEXTURE_16BIT_PALETTE);
-      pTex_book_button1_on  = pIcons_LOD->LoadTexturePtr("tab-an-6b", TEXTURE_16BIT_PALETTE);
-      pTex_book_button2_on  = pIcons_LOD->LoadTexturePtr("tab-an-7b", TEXTURE_16BIT_PALETTE);
-      pTex_book_button1_off = pIcons_LOD->LoadTexturePtr("tab-an-6a", TEXTURE_16BIT_PALETTE);
-      pTex_book_button2_off = pIcons_LOD->LoadTexturePtr("tab-an-7a", TEXTURE_16BIT_PALETTE);
-
-      pBtn_Book_1 = this->CreateButton(pViewport->uViewportTL_X + 398, pViewport->uViewportTL_Y + 1,  
-                      pTex_book_button1_on->uTextureWidth,  pTex_book_button1_on->uTextureHeight, 1, 0, 
-                      UIMSG_ClickBooksBtn, 11, 0, pGlobalTXT_LocalizationStrings[192], pTex_book_button1_on, 0);
-      pBtn_Book_2 = this->CreateButton(pViewport->uViewportTL_X + 398, pViewport->uViewportTL_Y + 38, pTex_book_button2_on->uTextureHeight,
-                                      pTex_book_button2_on->uTextureHeight, 1, 0, UIMSG_ClickBooksBtn, 10, 0, 
-                                      pGlobalTXT_LocalizationStrings[193], pTex_book_button2_on, 0);
-
-      num_achieved_awards = 0;
-      journal_window.uFrameX = 48;
-      journal_window.uFrameY = 70;
-      journal_window.uFrameWidth = 360;
-      journal_window.uFrameHeight = 264;
-      journal_window.uFrameZ = 407;
-      journal_window.uFrameHeight = (LOBYTE(pAutonoteFont->uFontHeight) - 3) * 264 / LOBYTE(pAutonoteFont->uFontHeight) - 3;
-      journal_window.uFrameW = journal_window.uFrameHeight + 69;
-      memset(&achieved_awards, 0, 4000);
-      memset(Journal_limitation_factor.data(), 0, 100);
-      if ( books_primary_item_per_page < 29 )
-      {
-        for ( int i = books_primary_item_per_page; i < books_primary_item_per_page + 29; i++ )
-        {
-          if ( pParty->PartyTimes.HistoryEventTimes[i] > 0 )
-          {
-            if ( pStorylineText->StoreLine[i + 1].pText )
-            {
-              pString = BuildDialogueString(pStorylineText->StoreLine[i + 1].pText, uActiveCharacter - 1, 0, 0, 0, &pParty->PartyTimes.HistoryEventTimes[i]);
-              pTextHeight = pAutonoteFont->CalcTextHeight(pString, &journal_window, 1, 0);
-              page_count = ((pTextHeight - (pAutonoteFont->uFontHeight - 3)) / (signed int)journal_window.uFrameHeight) + 1;
-              memset32((char *)&achieved_awards[num_achieved_awards] , i + 1, page_count);
-              for ( uint j = 0; j <= page_count - 1; ++j )
-                Journal_limitation_factor[num_achieved_awards++] = j;
-            }
-          }
-        }
-      }
-      full_num_items_in_book = num_achieved_awards;
-      num_achieved_awards = 0;
-    }
-    break;
-  }
-}
 
 //----- (00415551) --------------------------------------------------------
 void GUIWindow::DrawMessageBox(int arg0)
@@ -1614,15 +1355,7 @@
 }
 
 
-
-void GUIWindow_Book::Update()
-{
-// -----------------------------------
-// 004156F0 GUI_UpdateWindows --- part
-    BookUI_Draw((WindowType)(int)ptr_1C);
-}
-
-void GUIWindow_BooksWindow::Update()
+void GUIWindow_BooksButtonOverlay::Update()
 {
 // -----------------------------------
 // 004156F0 GUI_UpdateWindows --- part