Mercurial > mm7
annotate GUI/UI/Books/QuestBook.cpp @ 2550:fb42e2662c38
Chest UI refactored to a class
author | a.parshin |
---|---|
date | Tue, 12 May 2015 11:28:22 +0200 |
parents | 87e5590d034b |
children | 0c67be4ec900 |
rev | line source |
---|---|
2548
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
1 #include "Engine/Engine.h" |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
2 #include "Engine/LOD.h" |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
3 #include "Engine/Party.h" |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
4 #include "Engine/Timer.h" |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
5 #include "Engine/Awards.h" |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
6 #include "Engine/texts.h" |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
7 #include "Engine/Graphics/IRender.h" |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
8 #include "Engine/Graphics/Viewport.h" |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
9 |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
10 #include "GUI/GUIFont.h" |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
11 #include "GUI/UI/Books/QuestBook.h" |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
12 |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
13 #include "Media/Audio/AudioPlayer.h" |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
14 |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
15 GUIWindow_QuestBook::GUIWindow_QuestBook() : |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
16 GUIWindow_Book() |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
17 { |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
18 this->ptr_1C = (void *)WINDOW_QuestBook; // inherited from GUIWindow::GUIWindow |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
19 BasicBookInitialization(); |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
20 |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
21 // -------------------------------- |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
22 // 004304E7 Game_EventLoop --- part |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
23 pEventTimer->Pause(); |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
24 pAudioPlayer->StopChannels(-1, -1); |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
25 pBooksButtonOverlay = new GUIWindow_BooksButtonOverlay(493u, 355u, 0, 0, (int)pBtn_Quests, 0); |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
26 bFlashQuestBook = 0; |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
27 |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
28 // ---------------------------------------------- |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
29 // 00411BFC GUIWindow::InitializeBookView -- part |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
30 pTexture_CurrentBook = pIcons_LOD->LoadTexturePtr("sbquiknot", TEXTURE_16BIT_PALETTE); |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
31 pSpellBookPagesTextr_10 = pIcons_LOD->LoadTexturePtr("divbar", TEXTURE_16BIT_PALETTE); |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
32 pTex_book_button1_on = pIcons_LOD->LoadTexturePtr("tab-an-6b", TEXTURE_16BIT_PALETTE); |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
33 pTex_book_button2_on = pIcons_LOD->LoadTexturePtr("tab-an-7b", TEXTURE_16BIT_PALETTE); |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
34 pTex_book_button1_off = pIcons_LOD->LoadTexturePtr("tab-an-6a", TEXTURE_16BIT_PALETTE); |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
35 pTex_book_button2_off = pIcons_LOD->LoadTexturePtr("tab-an-7a", TEXTURE_16BIT_PALETTE); |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
36 pBtn_Book_1 = CreateButton( |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
37 pViewport->uViewportTL_X + 398, pViewport->uViewportTL_Y + 1, |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
38 pTex_book_button1_on->uTextureWidth, pTex_book_button1_on->uTextureHeight, |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
39 1, 0, UIMSG_ClickBooksBtn, 0xBu, 0, pGlobalTXT_LocalizationStrings[192],// "Scroll Up" |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
40 pTex_book_button1_on, 0 |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
41 ); |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
42 pBtn_Book_2 = CreateButton( |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
43 pViewport->uViewportTL_X + 398, pViewport->uViewportTL_Y + 38, |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
44 pTex_book_button2_on->uTextureHeight, pTex_book_button2_on->uTextureHeight, |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
45 1, 0, UIMSG_ClickBooksBtn, 0xAu, 0, pGlobalTXT_LocalizationStrings[193],// "Scroll Down" |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
46 pTex_book_button2_on, 0 |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
47 ); |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
48 num_achieved_awards = 0; |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
49 memset(achieved_awards.data(), 0, 4000); |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
50 for (uint i = books_primary_item_per_page; i < 512; ++i) |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
51 { |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
52 if (_449B57_test_bit(pParty->_quest_bits, i) && pQuestTable[i]) |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
53 { |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
54 achieved_awards[num_achieved_awards] = (AwardType)i; |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
55 ++num_achieved_awards; |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
56 } |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
57 } |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
58 full_num_items_in_book = num_achieved_awards; |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
59 num_achieved_awards = 0; |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
60 } |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
61 |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
62 |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
63 |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
64 void GUIWindow_QuestBook::Update() |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
65 { |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
66 // ----------------------------------- |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
67 // 004156F0 GUI_UpdateWindows --- part |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
68 // { |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
69 // BookUI_Draw((WindowType)(int)ptr_1C); |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
70 // } |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
71 |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
72 // ----- (00413CC6) -------------------------------------------------------- |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
73 // void BookUI_Draw(WindowType book) --- part |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
74 // { |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
75 pRenderer->DrawTextureIndexed(471, 445, pIcons_LOD->GetTexture(uExitCancelTextureId)); |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
76 // BookUI_Questbook_Draw(); |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
77 |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
78 // ----- (00413126) -------------------------------------------------------- |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
79 // void BookUI_Questbook_Draw() |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
80 // { |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
81 int pTextHeight; // eax@19 |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
82 GUIWindow questbook_window; // [sp+Ch] [bp-54h]@9 |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
83 |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
84 pRenderer->DrawTextureIndexed(pViewport->uViewportTL_X, pViewport->uViewportTL_Y, pTexture_CurrentBook); |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
85 if (BtnUp_flag || !books_primary_item_per_page)//Bookmark Up(Закладка вверх) |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
86 pRenderer->DrawTextureIndexedAlpha(pViewport->uViewportTL_X + 407, pViewport->uViewportTL_Y + 2, pTex_book_button1_off); |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
87 else |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
88 pRenderer->DrawTextureIndexedAlpha(pViewport->uViewportTL_X + 398, pViewport->uViewportTL_Y + 1, pTex_book_button1_on); |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
89 |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
90 if (BtnDown_flag || books_primary_item_per_page + num_achieved_awards >= full_num_items_in_book)//Bookmark Down(Закладка вниз) |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
91 pRenderer->DrawTextureIndexedAlpha(pViewport->uViewportTL_X + 407, pViewport->uViewportTL_Y + 38, pTex_book_button2_off); |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
92 else |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
93 pRenderer->DrawTextureIndexedAlpha(pViewport->uViewportTL_X + 398, pViewport->uViewportTL_Y + 38, pTex_book_button2_on); |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
94 |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
95 //for title |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
96 questbook_window.uFrameWidth = game_viewport_width; |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
97 questbook_window.uFrameHeight = game_viewport_height; |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
98 questbook_window.uFrameX = game_viewport_x; |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
99 questbook_window.uFrameY = game_viewport_y; |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
100 questbook_window.uFrameZ = game_viewport_z; |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
101 questbook_window.uFrameW = game_viewport_w; |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
102 questbook_window.DrawTitleText(pBook2Font, 0, 22, ui_book_quests_title_color, pGlobalTXT_LocalizationStrings[174], 3); //"Current Quests" |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
103 |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
104 //for other text |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
105 questbook_window.uFrameX = 48; |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
106 questbook_window.uFrameY = 70; |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
107 questbook_window.uFrameWidth = 360; |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
108 questbook_window.uFrameHeight = 264; |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
109 questbook_window.uFrameZ = 407; |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
110 questbook_window.uFrameW = 333; |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
111 if (BtnDown_flag && books_primary_item_per_page + num_achieved_awards < full_num_items_in_book)//Click Bookmark Down(нажатие закладки вниз) |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
112 { |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
113 pAudioPlayer->PlaySound(SOUND_openbook, 0, 0, -1, 0, 0, 0, 0); |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
114 books_primary_item_per_page += num_achieved_awards; |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
115 books_num_items_per_page[books_page_number++] = num_achieved_awards; |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
116 } |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
117 if (BtnUp_flag && books_page_number)//Click Bookmark Up(Нажатие закладки вверх) |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
118 { |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
119 pAudioPlayer->PlaySound(SOUND_openbook, 0, 0, -1, 0, 0, 0, 0); |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
120 --books_page_number; |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
121 books_primary_item_per_page -= (unsigned __int8)books_num_items_per_page[books_page_number]; |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
122 } |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
123 if (!num_achieved_awards || !books_primary_item_per_page) |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
124 { |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
125 books_page_number = 0; |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
126 books_primary_item_per_page = 0; |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
127 } |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
128 BtnDown_flag = 0; |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
129 BtnUp_flag = 0; |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
130 num_achieved_awards = 0; |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
131 for (uint i = books_primary_item_per_page; i < full_num_items_in_book; ++i) |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
132 { |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
133 ++num_achieved_awards; |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
134 questbook_window.DrawText(pAutonoteFont, 1, 0, ui_book_quests_text_color, pQuestTable[achieved_awards[i]], 0, 0, 0); |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
135 pTextHeight = pAutonoteFont->CalcTextHeight(pQuestTable[achieved_awards[i]], &questbook_window, 1, 0); |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
136 if ((signed int)(questbook_window.uFrameY + pTextHeight) > (signed int)questbook_window.uFrameHeight) |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
137 break; |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
138 pRenderer->DrawTextureIndexedAlpha(100, (questbook_window.uFrameY + pTextHeight) + 12, pSpellBookPagesTextr_10); |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
139 questbook_window.uFrameY = (questbook_window.uFrameY + pTextHeight) + 24; |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
140 } |
87e5590d034b
All Books windows are refactored into respective classes
a.parshin
parents:
diff
changeset
|
141 } |