annotate GUI/UI/UiGame.cpp @ 2575:a76d408c5132 tip

DrawTranslucent -> DrawTextureGrayShade Removed old texture drawing stuff
author a.parshin
date Wed, 09 Mar 2016 01:39:52 +0200
parents dd36326a9994
children
rev   line source
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1 #define _CRTDBG_MAP_ALLOC
2546
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
2 #define _CRT_SECURE_NO_WARNINGS
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
3 #include <stdlib.h>
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
4 #include <crtdbg.h>
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
5
2541
a902abdfc7f2 1. Renamed class Game to class Engine.
a.parshin
parents: 2524
diff changeset
6 #include "Engine/Engine.h"
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
7 #include "Engine/AssetsManager.h"
2546
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
8 #include "Engine/Events.h"
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
9 #include "Engine/Graphics/Texture.h"
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
10 #include "Engine/Graphics/Vis.h"
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
11 #include "Engine/MapInfo.h"
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
12 #include "Engine/Party.h"
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
13 #include "Engine/Graphics/Outdoor.h"
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
14 #include "Engine/LOD.h"
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
15 #include "Engine/Objects/Actor.h"
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
16 #include "Engine/Graphics/Viewport.h"
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
17 #include "Engine/Objects/SpriteObject.h"
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
18 #include "Engine/Objects/ObjectList.h"
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
19 #include "Engine/Graphics/DecorationList.h"
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
20 #include "Engine/Tables/PlayerFrameTable.h"
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
21 #include "Engine/stru123.h"
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
22 #include "Engine/Timer.h"
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
23 #include "Engine/Tables/IconFrameTable.h"
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
24 #include "Engine/TurnEngine/TurnEngine.h"
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
25 #include "Engine/texts.h"
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
26 #include "Engine/Graphics/Sprites.h"
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
27 #include "Engine/Graphics/PaletteManager.h"
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
28 #include "Engine/Graphics/BSPModel.h"
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
29 #include "Engine/OurMath.h"
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
30 #include "Engine/Graphics/Level/Decoration.h"
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
31 #include "Engine/Objects/Chest.h"
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
32 #include "Engine/Graphics/Overlays.h"
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
33
2572
d87bfbd3bb3b Step towards unification of Texture and RGBTexture (class Image)
a.parshin
parents: 2566
diff changeset
34 #include "Game/Game.h"
d87bfbd3bb3b Step towards unification of Texture and RGBTexture (class Image)
a.parshin
parents: 2566
diff changeset
35
2546
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
36 #include "IO/Mouse.h"
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
37 #include "IO/Keyboard.h"
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
38
2546
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
39 #include "GUI/GUIWindow.h"
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
40 #include "GUI/GUIFont.h"
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
41 #include "GUI/UI/UIHouses.h"
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
42 #include "GUI/UI/UIGame.h"
2547
fed97f15d1e1 * SaveLoad
a.parshin
parents: 2546
diff changeset
43 #include "GUI/UI/UICharacter.h"
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
44
2546
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
45 #include "Media/Audio/AudioPlayer.h"
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
46
2546
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
47
2572
d87bfbd3bb3b Step towards unification of Texture and RGBTexture (class Image)
a.parshin
parents: 2566
diff changeset
48 Image *game_ui_statusbar = nullptr;
d87bfbd3bb3b Step towards unification of Texture and RGBTexture (class Image)
a.parshin
parents: 2566
diff changeset
49 Image *game_ui_rightframe = nullptr;
d87bfbd3bb3b Step towards unification of Texture and RGBTexture (class Image)
a.parshin
parents: 2566
diff changeset
50 Image *game_ui_topframe = nullptr;
d87bfbd3bb3b Step towards unification of Texture and RGBTexture (class Image)
a.parshin
parents: 2566
diff changeset
51 Image *game_ui_leftframe = nullptr;
d87bfbd3bb3b Step towards unification of Texture and RGBTexture (class Image)
a.parshin
parents: 2566
diff changeset
52 Image *game_ui_bottomframe = nullptr;
d87bfbd3bb3b Step towards unification of Texture and RGBTexture (class Image)
a.parshin
parents: 2566
diff changeset
53
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
54 Image *game_ui_monster_hp_green = nullptr;
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
55 Image *game_ui_monster_hp_yellow = nullptr;
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
56 Image *game_ui_monster_hp_red = nullptr;
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
57 Image *game_ui_monster_hp_background = nullptr;
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
58 Image *game_ui_monster_hp_border_left = nullptr;
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
59 Image *game_ui_monster_hp_border_right = nullptr;
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
60
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
61 Image *game_ui_minimap_frame = nullptr; // 5079D8
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
62 Image *game_ui_minimap_compass = nullptr; // 5079B4
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
63 std::array<Image *, 8> game_ui_minimap_dirs;
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
64
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
65 Image *game_ui_menu_quit = nullptr;
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
66 Image *game_ui_menu_resume = nullptr;
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
67 Image *game_ui_menu_controls = nullptr;
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
68 Image *game_ui_menu_save = nullptr;
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
69 Image *game_ui_menu_load = nullptr;
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
70 Image *game_ui_menu_new = nullptr;
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
71 Image *game_ui_menu_options = nullptr;
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
72
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
73 Image *game_ui_tome_storyline = nullptr;
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
74 Image *game_ui_tome_calendar = nullptr;
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
75 Image *game_ui_tome_maps = nullptr;
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
76 Image *game_ui_tome_autonotes = nullptr;
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
77 Image *game_ui_tome_quests = nullptr;
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
78
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
79 Image *game_ui_btn_rest = nullptr;
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
80 Image *game_ui_btn_cast = nullptr;
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
81 Image *game_ui_btn_zoomin = nullptr;
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
82 Image *game_ui_btn_zoomout = nullptr;
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
83 Image *game_ui_btn_quickref = nullptr;
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
84 Image *game_ui_btn_settings = nullptr;
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
85
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
86 Image *game_ui_dialogue_background = nullptr;
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
87
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
88 Image *game_ui_menu_options_video_background = nullptr;
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
89 Image *game_ui_menu_options_video_bloodsplats = nullptr;
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
90 Image *game_ui_menu_options_video_coloredlights = nullptr;
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
91 Image *game_ui_menu_options_video_tinting = nullptr;
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
92 std::array<Image *, 10> game_ui_menu_options_video_gamma_positions;
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
93 std::array<Image *, 5> game_ui_options_controls;
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
94
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
95 Image *game_ui_evtnpc = nullptr; // 50795C
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
96
2575
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
97 std::array< std::array<Image *, 56>, 4> game_ui_player_faces;
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
98 Image *game_ui_player_face_eradicated = nullptr;
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
99 Image *game_ui_player_face_dead = nullptr;
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
100
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
101 Image *game_ui_player_selection_frame = nullptr; // 50C98C
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
102 Image *game_ui_player_alert_yellow = nullptr; // 5079C8
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
103 Image *game_ui_player_alert_red = nullptr; // 5079CC
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
104 Image *game_ui_player_alert_green = nullptr; // 5079D0
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
105
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
106 Image *game_ui_bar_red = nullptr;
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
107 Image *game_ui_bar_yellow = nullptr;
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
108 Image *game_ui_bar_green = nullptr;
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
109 Image *game_ui_bar_blue = nullptr;
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
110
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
111 Image *game_ui_playerbuff_pain_reflection = nullptr;
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
112 Image *game_ui_playerbuff_hammerhands = nullptr;
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
113 Image *game_ui_playerbuff_preservation = nullptr;
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
114 Image *game_ui_playerbuff_bless = nullptr;
2572
d87bfbd3bb3b Step towards unification of Texture and RGBTexture (class Image)
a.parshin
parents: 2566
diff changeset
115
2546
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
116 GUIWindow_GameMenu::GUIWindow_GameMenu() :
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
117 GUIWindow(0, 0, window->GetWidth(), window->GetHeight(), 0, nullptr)
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
118 {
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
119 // -----------------------
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
120 // GameMenuUI_Load -- part
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
121 game_ui_menu_options = assets->GetImage_16BitAlpha(L"options");
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
122 game_ui_menu_new = assets->GetImage_16BitAlpha(L"new1");
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
123 game_ui_menu_load = assets->GetImage_16BitAlpha(L"load1");
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
124 game_ui_menu_save = assets->GetImage_16BitAlpha(L"save1");
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
125 game_ui_menu_controls = assets->GetImage_16BitAlpha(L"controls1");
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
126 game_ui_menu_resume = assets->GetImage_16BitAlpha(L"resume1");
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
127 game_ui_menu_quit = assets->GetImage_16BitAlpha(L"quit1");
2546
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
128
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
129 pBtn_NewGame = CreateButton(
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
130 0x13u, 0x9Bu, 0xD6u, 0x28u, 1, 0, UIMSG_StartNewGame, 0, 0x4Eu,
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
131 pGlobalTXT_LocalizationStrings[614],// "New Game"
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
132 game_ui_menu_new,
2546
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
133 0
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
134 );
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
135 pBtn_SaveGame = CreateButton(
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
136 0x13u, 0xD1u, 0xD6u, 0x28u, 1, 0, UIMSG_Game_OpenSaveGameDialog, 0, 0x53u,
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
137 pGlobalTXT_LocalizationStrings[615],// "Save Game"
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
138 game_ui_menu_save,
2546
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
139 0
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
140 );
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
141 pBtn_LoadGame = CreateButton(
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
142 19, 263, 0xD6u, 0x28u, 1, 0, UIMSG_Game_OpenLoadGameDialog, 0, 0x4Cu,
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
143 pGlobalTXT_LocalizationStrings[616],// "Load Game"
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
144 game_ui_menu_load,
2546
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
145 0
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
146 );
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
147 pBtn_GameControls = CreateButton(
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
148 241, 155, 214, 40, 1, 0, UIMSG_Game_OpenOptionsDialog, 0, 0x43u,
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
149 pGlobalTXT_LocalizationStrings[617],// ""Sound, Keyboard, Game Options:""
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
150 game_ui_menu_controls,
2546
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
151 0
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
152 );
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
153 pBtn_QuitGame = CreateButton(
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
154 241, 209, 214, 40, 1, 0, UIMSG_Quit, 0, 0x51u,
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
155 pGlobalTXT_LocalizationStrings[618],// "Quit"
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
156 game_ui_menu_quit,
2546
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
157 0
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
158 );
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
159 pBtn_Resume = CreateButton(
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
160 241, 263, 214, 40, 1, 0, UIMSG_GameMenu_ReturnToGame, 0, 0x52u,
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
161 pGlobalTXT_LocalizationStrings[619],// "Return to Game"
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
162 game_ui_menu_resume,
2546
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
163 0
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
164 );
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
165 _41D08F_set_keyboard_control_group(6, 1, 0, 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
166 }
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
167
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
168 void GUIWindow_GameMenu::Update()
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
169 {
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
170 // -----------------------------------
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
171 // 004156F0 GUI_UpdateWindows --- part
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
172 pRenderer->DrawTextureAlphaNew(
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
173 pViewport->uViewportTL_X/640.0f,
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
174 pViewport->uViewportTL_Y/480.0f,
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
175 game_ui_menu_options
2546
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
176 );
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
177
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
178 viewparams->bRedrawGameUI = true;
2546
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
179 }
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
180
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
181
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
182
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
183
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
184
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
185
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
186 std::array<bool, 28> GameMenuUI_InvaligKeyBindingsFlags; // 506E6C
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
187 //----- (00414D24) --------------------------------------------------------
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
188 static unsigned int GameMenuUI_GetKeyBindingColor(int key_index)
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
189 {
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
190 if (uGameMenuUI_CurentlySelectedKeyIdx == key_index)
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
191 {
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
192 if (GetTickCount() % 1000 < 500)
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
193 return ui_gamemenu_keys_key_selection_blink_color_1;
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
194 else
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
195 return ui_gamemenu_keys_key_selection_blink_color_2;
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
196 }
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
197 else if (GameMenuUI_InvaligKeyBindingsFlags[key_index])
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
198 {
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
199 int intensity;
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
200
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
201 int time = GetTickCount() % 800;
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
202 if (time < 400)
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
203 intensity = -70 + 70 * time / 400;
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
204 else
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
205 intensity = +70 - 70 * time / 800;
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
206
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
207 return Color16(185 + intensity, 40 + intensity / 4, 40 + intensity / 4);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
208 }
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
209
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
210 return ui_gamemenu_keys_key_default_color;
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
211 }
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
212
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
213
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
214
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
215 GUIWindow_GameKeyBindings::GUIWindow_GameKeyBindings():
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
216 GUIWindow(0, 0, window->GetWidth(), window->GetHeight(), 0, nullptr)
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
217 {
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
218 // ------------------------------------------
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
219 // GameMenuUI_OptionsKeymapping_Load --- part
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
220 game_ui_options_controls[0] = assets->GetImage_16BitColorKey(L"optkb", 0x7FF);
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
221 game_ui_options_controls[1] = assets->GetImage_16BitColorKey(L"optkb_h", 0x7FF);
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
222 game_ui_options_controls[2] = assets->GetImage_16BitColorKey(L"resume1", 0x7FF);
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
223 game_ui_options_controls[3] = assets->GetImage_16BitColorKey(L"optkb_1", 0x7FF);
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
224 game_ui_options_controls[4] = assets->GetImage_16BitColorKey(L"optkb_2", 0x7FF);
2546
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
225
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
226 CreateButton(241, 302, 214, 40, 1, 0, UIMSG_Escape, 0, 0, "", 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
227
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
228 CreateButton(19, 302, 108, 20, 1, 0, UIMSG_SelectKeyPage1, 0, 0, "", 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
229 CreateButton(127, 302, 108, 20, 1, 0, UIMSG_SelectKeyPage2, 0, 0, "", 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
230 CreateButton(127, 324, 108, 20, 1, 0, UIMSG_ResetKeyMapping, 0, 0, "", 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
231 CreateButton(19, 324, 108, 20, 1, 0, UIMSG_Game_OpenOptionsDialog, 0, 0, "", 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
232
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
233 CreateButton(129, 148, 70, 19, 1, 0, UIMSG_ChangeKeyButton, 0, 0, "", 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
234 CreateButton(129, 167, 70, 19, 1, 0, UIMSG_ChangeKeyButton, 1, 0, "", 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
235 CreateButton(129, 186, 70, 19, 1, 0, UIMSG_ChangeKeyButton, 2, 0, "", 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
236 CreateButton(129, 205, 70, 19, 1, 0, UIMSG_ChangeKeyButton, 3, 0, "", 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
237 CreateButton(129, 224, 70, 19, 1, 0, UIMSG_ChangeKeyButton, 4, 0, "", 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
238 CreateButton(129, 243, 70, 19, 1, 0, UIMSG_ChangeKeyButton, 5, 0, "", 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
239 CreateButton(129, 262, 70, 19, 1, 0, UIMSG_ChangeKeyButton, 6, 0, "", 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
240
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
241 CreateButton(350, 148, 70, 19, 1, 0, UIMSG_ChangeKeyButton, 7, 0, "", 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
242 CreateButton(350, 167, 70, 19, 1, 0, UIMSG_ChangeKeyButton, 8, 0, "", 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
243 CreateButton(350, 186, 70, 19, 1, 0, UIMSG_ChangeKeyButton, 9, 0, "", 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
244 CreateButton(350, 205, 70, 19, 1, 0, UIMSG_ChangeKeyButton, 10, 0, "", 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
245 CreateButton(350, 224, 70, 19, 1, 0, UIMSG_ChangeKeyButton, 11, 0, "", 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
246 CreateButton(350, 243, 70, 19, 1, 0, UIMSG_ChangeKeyButton, 12, 0, "", 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
247 CreateButton(350, 262, 70, 19, 1, 0, UIMSG_ChangeKeyButton, 13, 0, "", 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
248
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
249 uGameMenuUI_CurentlySelectedKeyIdx = -1;
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
250 KeyboardPageNum = 1;
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
251 memset(GameMenuUI_InvaligKeyBindingsFlags.data(), 0, sizeof(GameMenuUI_InvaligKeyBindingsFlags));
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
252 memcpy(pPrevVirtualCidesMapping.data(), pKeyActionMap->pVirtualKeyCodesMapping, 0x78u);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
253 }
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
254
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
255 //----- (004142D3) --------------------------------------------------------
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
256 void GUIWindow_GameKeyBindings::Update()
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
257 {
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
258 // -----------------------------------
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
259 // 004156F0 GUI_UpdateWindows --- part
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
260 signed int v4; // ecx@7
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
261 signed int v5; // eax@8
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
262
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
263 if (pGUIWindow_CurrentMenu->receives_keyboard_input_2 == WINDOW_INPUT_CONFIRMED)
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
264 {
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
265 pPrevVirtualCidesMapping[uGameMenuUI_CurentlySelectedKeyIdx] = pKeyActionMap->pPressedKeysBuffer[0];
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
266 memset(GameMenuUI_InvaligKeyBindingsFlags.data(), 0, sizeof(GameMenuUI_InvaligKeyBindingsFlags));
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
267 v4 = 0;
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
268 do
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
269 {
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
270 v5 = 0;
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
271 do
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
272 {
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
273 if (v4 != v5 && pPrevVirtualCidesMapping[v4] == pPrevVirtualCidesMapping[v5])
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
274 {
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
275 GameMenuUI_InvaligKeyBindingsFlags[v4] = true;
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
276 GameMenuUI_InvaligKeyBindingsFlags[v5] = true;
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
277 }
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
278 ++v5;
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
279 } while (v5 < 28);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
280 ++v4;
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
281 } while (v4 < 28);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
282 uGameMenuUI_CurentlySelectedKeyIdx = -1;
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
283 pGUIWindow_CurrentMenu->receives_keyboard_input_2 = WINDOW_INPUT_NONE;
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
284 }
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
285 pRenderer->DrawTextureAlphaNew(8/640.0f, 8/480.0f, game_ui_options_controls[0]);//draw base texture
2546
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
286 if (KeyboardPageNum == 1)
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
287 {
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
288 pRenderer->DrawTextureAlphaNew(19/640.0f, 302/480.0f, game_ui_options_controls[3]);
2546
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
289
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
290 pGUIWindow_CurrentMenu->DrawText(pFontLucida, 23, 142, ui_gamemenu_keys_action_name_color, "ÂÏÅШÄ", 0, 0, 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
291 pGUIWindow_CurrentMenu->DrawText(pFontLucida, 127, 142, GameMenuUI_GetKeyBindingColor(0), pKeyActionMap->GetVKeyDisplayName(pPrevVirtualCidesMapping[0]), 0, 0, 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
292 pGUIWindow_CurrentMenu->DrawText(pFontLucida, 23, 163, ui_gamemenu_keys_action_name_color, "ÍÀÇÀÄ", 0, 0, 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
293 pGUIWindow_CurrentMenu->DrawText(pFontLucida, 127, 163, GameMenuUI_GetKeyBindingColor(1), pKeyActionMap->GetVKeyDisplayName(pPrevVirtualCidesMapping[1]), 0, 0, 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
294 pGUIWindow_CurrentMenu->DrawText(pFontLucida, 23, 184, ui_gamemenu_keys_action_name_color, "ÂËÅÂÎ", 0, 0, 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
295 pGUIWindow_CurrentMenu->DrawText(pFontLucida, 127, 184, GameMenuUI_GetKeyBindingColor(2), pKeyActionMap->GetVKeyDisplayName(pPrevVirtualCidesMapping[2]), 0, 0, 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
296 pGUIWindow_CurrentMenu->DrawText(pFontLucida, 23, 205, ui_gamemenu_keys_action_name_color, "ÂÏÐÀÂÎ", 0, 0, 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
297 pGUIWindow_CurrentMenu->DrawText(pFontLucida, 127, 205, GameMenuUI_GetKeyBindingColor(3), pKeyActionMap->GetVKeyDisplayName(pPrevVirtualCidesMapping[3]), 0, 0, 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
298 pGUIWindow_CurrentMenu->DrawText(pFontLucida, 23, 226, ui_gamemenu_keys_action_name_color, "ÊÐÈÊ", 0, 0, 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
299 pGUIWindow_CurrentMenu->DrawText(pFontLucida, 127, 226, GameMenuUI_GetKeyBindingColor(4), pKeyActionMap->GetVKeyDisplayName(pPrevVirtualCidesMapping[4]), 0, 0, 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
300 pGUIWindow_CurrentMenu->DrawText(pFontLucida, 23, 247, ui_gamemenu_keys_action_name_color, "ÏÐÛÆÎÊ", 0, 0, 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
301 pGUIWindow_CurrentMenu->DrawText(pFontLucida, 127, 247, GameMenuUI_GetKeyBindingColor(5), pKeyActionMap->GetVKeyDisplayName(pPrevVirtualCidesMapping[5]), 0, 0, 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
302 pGUIWindow_CurrentMenu->DrawText(pFontLucida, 23, 268, ui_gamemenu_keys_action_name_color, "Ï.ÐÅÆÈÌ", 0, 0, 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
303 pGUIWindow_CurrentMenu->DrawText(pFontLucida, 127, 268, GameMenuUI_GetKeyBindingColor(6), pKeyActionMap->GetVKeyDisplayName(pPrevVirtualCidesMapping[6]), 0, 0, 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
304 pGUIWindow_CurrentMenu->DrawText(pFontLucida, 247, 142, ui_gamemenu_keys_action_name_color, "ÏÐÈÌ. ÇÀÊË.", 0, 0, 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
305 pGUIWindow_CurrentMenu->DrawText(pFontLucida, 350, 142, GameMenuUI_GetKeyBindingColor(7), pKeyActionMap->GetVKeyDisplayName(pPrevVirtualCidesMapping[7]), 0, 0, 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
306 pGUIWindow_CurrentMenu->DrawText(pFontLucida, 247, 163, ui_gamemenu_keys_action_name_color, "ÀÒÀÊÀ", 0, 0, 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
307 pGUIWindow_CurrentMenu->DrawText(pFontLucida, 350, 163, GameMenuUI_GetKeyBindingColor(8), pKeyActionMap->GetVKeyDisplayName(pPrevVirtualCidesMapping[8]), 0, 0, 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
308 pGUIWindow_CurrentMenu->DrawText(pFontLucida, 247, 184, ui_gamemenu_keys_action_name_color, "ÄÅÉÑÒÂ.", 0, 0, 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
309 pGUIWindow_CurrentMenu->DrawText(pFontLucida, 350, 184, GameMenuUI_GetKeyBindingColor(9), pKeyActionMap->GetVKeyDisplayName(pPrevVirtualCidesMapping[9]), 0, 0, 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
310 pGUIWindow_CurrentMenu->DrawText(pFontLucida, 247, 205, ui_gamemenu_keys_action_name_color, "ÇÀÊËÈÍ.", 0, 0, 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
311 pGUIWindow_CurrentMenu->DrawText(pFontLucida, 350, 205, GameMenuUI_GetKeyBindingColor(10), pKeyActionMap->GetVKeyDisplayName(pPrevVirtualCidesMapping[10]), 0, 0, 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
312 pGUIWindow_CurrentMenu->DrawText(pFontLucida, 247, 226, ui_gamemenu_keys_action_name_color, "ÈÃÐÎÊ", 0, 0, 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
313 pGUIWindow_CurrentMenu->DrawText(pFontLucida, 350, 226, GameMenuUI_GetKeyBindingColor(11), pKeyActionMap->GetVKeyDisplayName(pPrevVirtualCidesMapping[11]), 0, 0, 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
314 pGUIWindow_CurrentMenu->DrawText(pFontLucida, 247, 247, ui_gamemenu_keys_action_name_color, "ÑËÅÄ. ÈÃÐÎÊ", 0, 0, 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
315 pGUIWindow_CurrentMenu->DrawText(pFontLucida, 350, 247, GameMenuUI_GetKeyBindingColor(12), pKeyActionMap->GetVKeyDisplayName(pPrevVirtualCidesMapping[12]), 0, 0, 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
316 pGUIWindow_CurrentMenu->DrawText(pFontLucida, 247, 268, ui_gamemenu_keys_action_name_color, "ÇÀÄÀÍÈß", 0, 0, 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
317 pGUIWindow_CurrentMenu->DrawText(pFontLucida, 350, 268, GameMenuUI_GetKeyBindingColor(13), pKeyActionMap->GetVKeyDisplayName(pPrevVirtualCidesMapping[13]), 0, 0, 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
318 }
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
319 else
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
320 {
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
321 pRenderer->DrawTextureAlphaNew(127/640.0f, 302/480.0f, game_ui_options_controls[4]);
2546
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
322
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
323 pGUIWindow_CurrentMenu->DrawText(pFontLucida, 23, 142, ui_gamemenu_keys_action_name_color, "Á. ÑÏÐÀÂÊÀ", 0, 0, 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
324 pGUIWindow_CurrentMenu->DrawText(pFontLucida, 127, 142, GameMenuUI_GetKeyBindingColor(14), pKeyActionMap->GetVKeyDisplayName(pPrevVirtualCidesMapping[14]), 0, 0, 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
325 pGUIWindow_CurrentMenu->DrawText(pFontLucida, 23, 163, ui_gamemenu_keys_action_name_color, "ÎÒÄÛÕ", 0, 0, 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
326 pGUIWindow_CurrentMenu->DrawText(pFontLucida, 127, 163, GameMenuUI_GetKeyBindingColor(15), pKeyActionMap->GetVKeyDisplayName(pPrevVirtualCidesMapping[15]), 0, 0, 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
327 pGUIWindow_CurrentMenu->DrawText(pFontLucida, 23, 184, ui_gamemenu_keys_action_name_color, "ÒÅÊ. ÂÐÅÌß", 0, 0, 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
328 pGUIWindow_CurrentMenu->DrawText(pFontLucida, 127, 184, GameMenuUI_GetKeyBindingColor(16), pKeyActionMap->GetVKeyDisplayName(pPrevVirtualCidesMapping[16]), 0, 0, 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
329 pGUIWindow_CurrentMenu->DrawText(pFontLucida, 23, 205, ui_gamemenu_keys_action_name_color, "ÀÂÒÎÇÀÌÅÒÊÈ", 0, 0, 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
330 pGUIWindow_CurrentMenu->DrawText(pFontLucida, 127, 205, GameMenuUI_GetKeyBindingColor(17), pKeyActionMap->GetVKeyDisplayName(pPrevVirtualCidesMapping[17]), 0, 0, 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
331 pGUIWindow_CurrentMenu->DrawText(pFontLucida, 23, 226, ui_gamemenu_keys_action_name_color, "ÊÀÐÒÀ", 0, 0, 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
332 pGUIWindow_CurrentMenu->DrawText(pFontLucida, 127, 226, GameMenuUI_GetKeyBindingColor(18), pKeyActionMap->GetVKeyDisplayName(pPrevVirtualCidesMapping[18]), 0, 0, 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
333 pGUIWindow_CurrentMenu->DrawText(pFontLucida, 23, 247, ui_gamemenu_keys_action_name_color, "ÁÅÆÀÒÜ", 0, 0, 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
334 pGUIWindow_CurrentMenu->DrawText(pFontLucida, 127, 247, GameMenuUI_GetKeyBindingColor(19), pKeyActionMap->GetVKeyDisplayName(pPrevVirtualCidesMapping[19]), 0, 0, 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
335 pGUIWindow_CurrentMenu->DrawText(pFontLucida, 23, 268, ui_gamemenu_keys_action_name_color, "ÑÌ. ÂÂÅÐÕ", 0, 0, 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
336 pGUIWindow_CurrentMenu->DrawText(pFontLucida, 127, 268, GameMenuUI_GetKeyBindingColor(20), pKeyActionMap->GetVKeyDisplayName(pPrevVirtualCidesMapping[20]), 0, 0, 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
337 pGUIWindow_CurrentMenu->DrawText(pFontLucida, 247, 142, ui_gamemenu_keys_action_name_color, "ÑÌ. ÂÍÈÇ", 0, 0, 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
338 pGUIWindow_CurrentMenu->DrawText(pFontLucida, 350, 142, GameMenuUI_GetKeyBindingColor(21), pKeyActionMap->GetVKeyDisplayName(pPrevVirtualCidesMapping[21]), 0, 0, 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
339 pGUIWindow_CurrentMenu->DrawText(pFontLucida, 247, 163, ui_gamemenu_keys_action_name_color, "ÑÌ. ÂÏÅШÄ", 0, 0, 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
340 pGUIWindow_CurrentMenu->DrawText(pFontLucida, 350, 163, GameMenuUI_GetKeyBindingColor(22), pKeyActionMap->GetVKeyDisplayName(pPrevVirtualCidesMapping[22]), 0, 0, 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
341 pGUIWindow_CurrentMenu->DrawText(pFontLucida, 247, 184, ui_gamemenu_keys_action_name_color, "ÏÐÈÁËÈÇ", 0, 0, 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
342 pGUIWindow_CurrentMenu->DrawText(pFontLucida, 350, 184, GameMenuUI_GetKeyBindingColor(23), pKeyActionMap->GetVKeyDisplayName(pPrevVirtualCidesMapping[23]), 0, 0, 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
343 pGUIWindow_CurrentMenu->DrawText(pFontLucida, 247, 205, ui_gamemenu_keys_action_name_color, "ÎÒÄÀËÈÒÜ", 0, 0, 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
344 pGUIWindow_CurrentMenu->DrawText(pFontLucida, 350, 205, GameMenuUI_GetKeyBindingColor(24), pKeyActionMap->GetVKeyDisplayName(pPrevVirtualCidesMapping[24]), 0, 0, 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
345 pGUIWindow_CurrentMenu->DrawText(pFontLucida, 247, 226, ui_gamemenu_keys_action_name_color, "Ï. ÂÂÅÐÕ", 0, 0, 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
346 pGUIWindow_CurrentMenu->DrawText(pFontLucida, 350, 226, GameMenuUI_GetKeyBindingColor(25), pKeyActionMap->GetVKeyDisplayName(pPrevVirtualCidesMapping[25]), 0, 0, 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
347 pGUIWindow_CurrentMenu->DrawText(pFontLucida, 247, 247, ui_gamemenu_keys_action_name_color, "Ï. ÂÍÈÇ", 0, 0, 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
348 pGUIWindow_CurrentMenu->DrawText(pFontLucida, 350, 247, GameMenuUI_GetKeyBindingColor(26), pKeyActionMap->GetVKeyDisplayName(pPrevVirtualCidesMapping[26]), 0, 0, 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
349 pGUIWindow_CurrentMenu->DrawText(pFontLucida, 247, 268, ui_gamemenu_keys_action_name_color, "ÏÐÈÇÅÌË", 0, 0, 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
350 pGUIWindow_CurrentMenu->DrawText(pFontLucida, 350, 268, GameMenuUI_GetKeyBindingColor(27), pKeyActionMap->GetVKeyDisplayName(pPrevVirtualCidesMapping[27]), 0, 0, 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
351 }
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
352 }
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
353
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
354
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
355
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
356 GUIWindow_GameVideoOptions::GUIWindow_GameVideoOptions() :
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
357 GUIWindow(0, 0, window->GetWidth(), window->GetHeight(), 0, nullptr)
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
358 {
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
359 // -------------------------------------
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
360 // GameMenuUI_OptionsVideo_Load --- part
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
361 game_ui_menu_options_video_background = assets->GetImage_16BitColorKey(L"optvid", 0x7FF);
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
362 game_ui_menu_options_video_bloodsplats = assets->GetImage_16BitColorKey(L"opvdH-bs", 0x7FF);
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
363 game_ui_menu_options_video_coloredlights = assets->GetImage_16BitColorKey(L"opvdH-cl", 0x7FF);
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
364 game_ui_menu_options_video_tinting = assets->GetImage_16BitColorKey(L"opvdH-tn", 0x7FF);
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
365
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
366 game_ui_menu_options_video_gamma_positions[0] = assets->GetImage_16BitColorKey(L"convol10", 0x7FF);
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
367 game_ui_menu_options_video_gamma_positions[1] = assets->GetImage_16BitColorKey(L"convol20", 0x7FF);
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
368 game_ui_menu_options_video_gamma_positions[2] = assets->GetImage_16BitColorKey(L"convol30", 0x7FF);
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
369 game_ui_menu_options_video_gamma_positions[3] = assets->GetImage_16BitColorKey(L"convol40", 0x7FF);
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
370 game_ui_menu_options_video_gamma_positions[4] = assets->GetImage_16BitColorKey(L"convol50", 0x7FF);
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
371 game_ui_menu_options_video_gamma_positions[5] = assets->GetImage_16BitColorKey(L"convol60", 0x7FF);
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
372 game_ui_menu_options_video_gamma_positions[6] = assets->GetImage_16BitColorKey(L"convol70", 0x7FF);
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
373 game_ui_menu_options_video_gamma_positions[7] = assets->GetImage_16BitColorKey(L"convol80", 0x7FF);
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
374 game_ui_menu_options_video_gamma_positions[8] = assets->GetImage_16BitColorKey(L"convol90", 0x7FF);
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
375 game_ui_menu_options_video_gamma_positions[9] = assets->GetImage_16BitColorKey(L"convol00", 0x7FF);
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
376 //not_available_bloodsplats_texture_id = pIcons_LOD->LoadTexture("opvdG-bs", TEXTURE_16BIT_PALETTE);
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
377 //not_available_us_colored_lights_texture_id = pIcons_LOD->LoadTexture("opvdG-cl", TEXTURE_16BIT_PALETTE);
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
378 //not_available_tinting_texture_id = pIcons_LOD->LoadTexture("opvdG-tn", TEXTURE_16BIT_PALETTE);
2546
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
379
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
380 CreateButton(0xF1u, 0x12Eu, 0xD6u, 0x28u, 1, 0, UIMSG_Escape, 0, 0, "", 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
381 //if ( pRenderer->pRenderD3D )
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
382 {
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
383 CreateButton(0x13u, 0x118u, 0xD6u, 0x12u, 1, 0, UIMSG_ToggleBloodsplats, 0, 0, "", 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
384 CreateButton(0x13u, 0x12Eu, 0xD6u, 0x12u, 1, 0, UIMSG_ToggleColoredLights, 0, 0, "", 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
385 CreateButton(0x13u, 0x144u, 0xD6u, 0x12u, 1, 0, UIMSG_ToggleTint, 0, 0, "", 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
386 }
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
387 }
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
388
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
389
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
390
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
391 //----- (00414D9A) --------------------------------------------------------
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
392 void GUIWindow_GameVideoOptions::Update()
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
393 {
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
394 // -----------------------------------
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
395 // 004156F0 GUI_UpdateWindows --- part
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
396 GUIWindow msg_window; // [sp+8h] [bp-54h]@3
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
397
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
398 pRenderer->DrawTextureAlphaNew(8/640.0f, 8/480.0f, game_ui_menu_options_video_background);//draw base texture
2546
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
399 //if ( !pRenderer->bWindowMode && pRenderer->IsGammaSupported() )
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
400 {
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
401 pRenderer->DrawTextureAlphaNew(
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
402 (17 * uGammaPos + 42)/640.0f,
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
403 162/480.0f,
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
404 game_ui_menu_options_video_gamma_positions[uGammaPos]);
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
405
2572
d87bfbd3bb3b Step towards unification of Texture and RGBTexture (class Image)
a.parshin
parents: 2566
diff changeset
406 pRenderer->DrawTextureNew(274/640.0f, 169/480.0f, gamma_preview_image);
2546
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
407 msg_window.uFrameX = 22;
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
408 msg_window.uFrameY = 190;
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
409 msg_window.uFrameWidth = 211;
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
410 msg_window.uFrameHeight = 79;
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
411 msg_window.uFrameZ = 232;
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
412 msg_window.uFrameW = 268;
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
413 msg_window.DrawTitleText(pFontSmallnum, 0, 0, ui_gamemenu_video_gamma_title_color, pGlobalTXT_LocalizationStrings[226], 3); // "Gamma controls the relative ""brightness"" of the game. May vary depending on your monitor."
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
414 }
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
415
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
416
2546
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
417 if (pEngine->uFlags2 & GAME_FLAGS_2_DRAW_BLOODSPLATS)
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
418 pRenderer->DrawTextureAlphaNew(20/640.0f, 281/480.0f, game_ui_menu_options_video_bloodsplats);
2546
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
419 if (pRenderer->bUseColoredLights)
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
420 pRenderer->DrawTextureAlphaNew(20/640.0f, 303/480.0f, game_ui_menu_options_video_coloredlights);
2546
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
421 if (pRenderer->bTinting)
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
422 pRenderer->DrawTextureAlphaNew(20/640.0f, 325/480.0f, game_ui_menu_options_video_tinting);
2546
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
423 }
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
424
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
425
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
426
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
427
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
428
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
429
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
430
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
431
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
432
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
433
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
434
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
435
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
436
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
437
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
438 OptionsMenuSkin options_menu_skin; // 507C60
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
439 OptionsMenuSkin::OptionsMenuSkin() :
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
440 uTextureID_Background(0),
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
441 uTextureID_ArrowLeft(0),
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
442 uTextureID_ArrowRight(0),
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
443 uTextureID_unused_0(0), uTextureID_unused_1(0), uTextureID_unused_2(0),
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
444 uTextureID_FlipOnExit(0),
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
445 uTextureID_AlwaysRun(0),
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
446 uTextureID_WalkSound(0),
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
447 uTextureID_ShowDamage(0)
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
448 {
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
449 for (uint i = 0; i < 3; ++i) uTextureID_TurnSpeed[i] = 0;
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
450 for (uint i = 0; i < 10; ++i) uTextureID_SoundLevels[i] = 0;
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
451 }
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
452
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
453 void OptionsMenuSkin::Relaease()
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
454 {
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
455 #define RELEASE(img) \
2546
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
456 {\
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
457 if (img)\
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
458 {\
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
459 img->Release(); \
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
460 img = nullptr; \
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
461 }\
2546
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
462 }
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
463
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
464 RELEASE(uTextureID_Background);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
465 for (uint i = 0; i < 3; ++i)
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
466 RELEASE(uTextureID_TurnSpeed[i]);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
467 RELEASE(uTextureID_ArrowLeft);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
468 RELEASE(uTextureID_ArrowRight);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
469 RELEASE(uTextureID_FlipOnExit);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
470 for (uint i = 0; i < 10; ++i)
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
471 RELEASE(uTextureID_SoundLevels[i]);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
472 RELEASE(uTextureID_AlwaysRun);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
473 RELEASE(uTextureID_WalkSound);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
474 RELEASE(uTextureID_ShowDamage);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
475
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
476 #undef RELEASE
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
477 }
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
478
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
479
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
480 GUIWindow_GameOptions::GUIWindow_GameOptions() :
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
481 GUIWindow(0, 0, window->GetWidth(), window->GetHeight(), 0, nullptr)
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
482 {
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
483 // GameMenuUI_Options_Load -- part
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
484 options_menu_skin.uTextureID_Background = assets->GetImage_16BitColorKey(L"ControlBG", 0x7FF);
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
485 options_menu_skin.uTextureID_TurnSpeed[2] = assets->GetImage_16BitColorKey(L"con_16x", 0x7FF);
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
486 options_menu_skin.uTextureID_TurnSpeed[1] = assets->GetImage_16BitColorKey(L"con_32x", 0x7FF);
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
487 options_menu_skin.uTextureID_TurnSpeed[0] = assets->GetImage_16BitColorKey(L"con_Smoo", 0x7FF);
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
488 options_menu_skin.uTextureID_ArrowLeft = assets->GetImage_16BitAlpha(L"con_ArrL");
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
489 options_menu_skin.uTextureID_ArrowRight = assets->GetImage_16BitAlpha(L"con_ArrR");
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
490 options_menu_skin.uTextureID_SoundLevels[0] = assets->GetImage_16BitColorKey(L"convol10", 0x7FF);
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
491 options_menu_skin.uTextureID_SoundLevels[1] = assets->GetImage_16BitColorKey(L"convol20", 0x7FF);
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
492 options_menu_skin.uTextureID_SoundLevels[2] = assets->GetImage_16BitColorKey(L"convol30", 0x7FF);
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
493 options_menu_skin.uTextureID_SoundLevels[3] = assets->GetImage_16BitColorKey(L"convol40", 0x7FF);
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
494 options_menu_skin.uTextureID_SoundLevels[4] = assets->GetImage_16BitColorKey(L"convol50", 0x7FF);
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
495 options_menu_skin.uTextureID_SoundLevels[5] = assets->GetImage_16BitColorKey(L"convol60", 0x7FF);
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
496 options_menu_skin.uTextureID_SoundLevels[6] = assets->GetImage_16BitColorKey(L"convol70", 0x7FF);
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
497 options_menu_skin.uTextureID_SoundLevels[7] = assets->GetImage_16BitColorKey(L"convol80", 0x7FF);
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
498 options_menu_skin.uTextureID_SoundLevels[8] = assets->GetImage_16BitColorKey(L"convol90", 0x7FF);
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
499 options_menu_skin.uTextureID_SoundLevels[9] = assets->GetImage_16BitColorKey(L"convol00", 0x7FF);
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
500 options_menu_skin.uTextureID_FlipOnExit = assets->GetImage_16BitColorKey(L"option04", 0x7FF);
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
501 options_menu_skin.uTextureID_AlwaysRun = assets->GetImage_16BitColorKey(L"option03", 0x7FF);
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
502 options_menu_skin.uTextureID_ShowDamage = assets->GetImage_16BitColorKey(L"option02", 0x7FF);
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
503 options_menu_skin.uTextureID_WalkSound = assets->GetImage_16BitColorKey(L"option01", 0x7FF);
2546
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
504
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
505 CreateButton(22, 270,
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
506 options_menu_skin.uTextureID_TurnSpeed[2]->GetWidth(),
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
507 options_menu_skin.uTextureID_TurnSpeed[2]->GetHeight(),
2546
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
508 1, 0, UIMSG_SetTurnSpeed, 0x80, 0, "", 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
509 CreateButton(93, 270,
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
510 options_menu_skin.uTextureID_TurnSpeed[1]->GetWidth(),
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
511 options_menu_skin.uTextureID_TurnSpeed[1]->GetHeight(),
2546
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
512 1, 0, UIMSG_SetTurnSpeed, 0x40u, 0, "", 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
513 CreateButton(164, 270,
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
514 options_menu_skin.uTextureID_TurnSpeed[0]->GetWidth(),
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
515 options_menu_skin.uTextureID_TurnSpeed[0]->GetHeight(),
2546
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
516 1, 0, UIMSG_SetTurnSpeed, 0, 0, "", 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
517
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
518 CreateButton(20, 303,
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
519 options_menu_skin.uTextureID_WalkSound->GetWidth(),
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
520 options_menu_skin.uTextureID_WalkSound->GetHeight(),
2546
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
521 1, 0, UIMSG_ToggleWalkSound, 0, 0, "", 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
522 CreateButton(128, 303,
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
523 options_menu_skin.uTextureID_ShowDamage->GetWidth(),
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
524 options_menu_skin.uTextureID_ShowDamage->GetHeight(),
2546
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
525 1, 0, UIMSG_ToggleShowDamage, 0, 0, "", 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
526 CreateButton(20, 325,
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
527 options_menu_skin.uTextureID_AlwaysRun->GetWidth(),
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
528 options_menu_skin.uTextureID_AlwaysRun->GetHeight(),
2546
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
529 1, 0, UIMSG_ToggleAlwaysRun, 0, 0, "", 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
530 CreateButton(128, 325,
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
531 options_menu_skin.uTextureID_FlipOnExit->GetWidth(),
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
532 options_menu_skin.uTextureID_FlipOnExit->GetHeight(),
2546
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
533 1, 0, UIMSG_ToggleFlipOnExit, 0, 0, "", 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
534
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
535 pBtn_SliderLeft = CreateButton(243, 162, 16, 16, 1, 0, UIMSG_ChangeSoundVolume, 4, 0, "", options_menu_skin.uTextureID_ArrowLeft, 0);
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
536 pBtn_SliderRight = CreateButton(435, 162, 16, 16, 1, 0, UIMSG_ChangeSoundVolume, 5, 0, "", options_menu_skin.uTextureID_ArrowRight, 0);
2546
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
537 CreateButton(263, 162, 172, 17, 1, 0, UIMSG_ChangeSoundVolume, 0, 0, "", 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
538
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
539 pBtn_SliderLeft = CreateButton(243, 216, 16, 16, 1, 0, UIMSG_ChangeMusicVolume, 4, 0, "", options_menu_skin.uTextureID_ArrowLeft, 0);
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
540 pBtn_SliderRight = CreateButton(435, 216, 16, 16, 1, 0, UIMSG_ChangeMusicVolume, 5, 0, "", options_menu_skin.uTextureID_ArrowRight, 0);
2546
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
541 CreateButton(263, 216, 172, 17, 1, 0, UIMSG_ChangeMusicVolume, 0, 0, "", 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
542
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
543 pBtn_SliderLeft = CreateButton(243, 270, 16, 16, 1, 0, UIMSG_ChangeVoiceVolume, 4, 0, "", options_menu_skin.uTextureID_ArrowLeft, 0);
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
544 pBtn_SliderRight = CreateButton(435, 270, 16, 16, 1, 0, UIMSG_ChangeVoiceVolume, 5, 0, "", options_menu_skin.uTextureID_ArrowRight, 0);
2546
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
545 CreateButton(263, 270, 172, 17, 1, 0, UIMSG_ChangeVoiceVolume, 0, 0, "", 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
546
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
547 CreateButton(241, 302, 214, 40, 1, 0, UIMSG_Escape, 0, 0, pGlobalTXT_LocalizationStrings[619], 0); // "Return to Game"
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
548 CreateButton(19, 140, 214, 40, 1, 0, UIMSG_OpenKeyMappingOptions, 0, 0x4Bu, "", 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
549 CreateButton(19, 194, 214, 40, 1, 0, UIMSG_OpenVideoOptions, 0, 86, "", 0);
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
550 }
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
551
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
552
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
553
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
554
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
555 //----- (00414F82) --------------------------------------------------------
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
556 void GUIWindow_GameOptions::Update()
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
557 {
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
558 // -----------------------------------
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
559 // 004156F0 GUI_UpdateWindows --- part
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
560 pRenderer->DrawTextureAlphaNew(8/640.0f, 8/480.0f, game_ui_menu_options);
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
561 pRenderer->DrawTextureAlphaNew(8/640.0f, 132/480.0f, options_menu_skin.uTextureID_Background);
2546
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
562
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
563 switch (uTurnSpeed)
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
564 {
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
565 case 64: pRenderer->DrawTextureAlphaNew(BtnTurnCoord[1]/640.0f, 270/480.0f, options_menu_skin.uTextureID_TurnSpeed[1]); break;
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
566 case 128: pRenderer->DrawTextureAlphaNew(BtnTurnCoord[2]/640.0f, 270/480.0f, options_menu_skin.uTextureID_TurnSpeed[2]); break;
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
567 default: pRenderer->DrawTextureAlphaNew(BtnTurnCoord[0]/640.0f, 270/480.0f, options_menu_skin.uTextureID_TurnSpeed[0]); break;
2546
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
568 }
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
569
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
570 if (bWalkSound) pRenderer->DrawTextureAlphaNew(20/640.0f, 303/480.0f, options_menu_skin.uTextureID_WalkSound);
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
571 if (bShowDamage) pRenderer->DrawTextureAlphaNew(128/640.0f, 303/480.0f, options_menu_skin.uTextureID_ShowDamage);
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
572 if (bFlipOnExit) pRenderer->DrawTextureAlphaNew(128/640.0f, 325/480.0f, options_menu_skin.uTextureID_FlipOnExit);
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
573 if (bAlwaysRun) pRenderer->DrawTextureAlphaNew(20/640.0f, 325/480.0f, options_menu_skin.uTextureID_AlwaysRun);
2546
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
574
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
575 pRenderer->DrawTextureAlphaNew((265 + 17 * uSoundVolumeMultiplier)/640.0f, 162/480.0f, options_menu_skin.uTextureID_SoundLevels[uSoundVolumeMultiplier]);
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
576 pRenderer->DrawTextureAlphaNew((265 + 17 * uMusicVolimeMultiplier)/640.0f, 216/480.0f, options_menu_skin.uTextureID_SoundLevels[uMusicVolimeMultiplier]);
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
577 pRenderer->DrawTextureAlphaNew((265 + 17 * uVoicesVolumeMultiplier)/640.0f, 270/480.0f, options_menu_skin.uTextureID_SoundLevels[uVoicesVolumeMultiplier]);
2546
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
578 }
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
579
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
580
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
581
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
582
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
583
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
584
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
585
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
586
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
587
4087cbc62706 GameMenu logic moved to GUIWindow_GameMenu
a.parshin
parents: 2544
diff changeset
588
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
589 //----- (00421D00) --------------------------------------------------------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
590 void __fastcall GameUI_OnPlayerPortraitLeftClick(unsigned int uPlayerID)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
591 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
592 Player* player = &pParty->pPlayers[uPlayerID - 1];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
593 if (pParty->pPickedItem.uItemID)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
594 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
595 if (int slot = player->AddItem(-1, pParty->pPickedItem.uItemID))
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
596 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
597 memcpy(&player->pInventoryItemList[slot-1], &pParty->pPickedItem, 0x24u);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
598 viewparams->bRedrawGameUI = true;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
599 pMouse->RemoveHoldingItem();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
600 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
601 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
602
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
603 if (!player->CanAct())
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
604 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
605 player = pPlayers[uActiveCharacter];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
606 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
607 if( player->CanAct() || !pPlayers[uActiveCharacter]->CanAct() )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
608 player->PlaySound(SPEECH_NoRoom, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
609 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
610
2541
a902abdfc7f2 1. Renamed class Game to class Engine.
a.parshin
parents: 2524
diff changeset
611 if (current_screen_type == SCREEN_GAME)
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
612 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
613 viewparams->bRedrawGameUI = true;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
614 if ( uActiveCharacter != uPlayerID )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
615 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
616 if ( pPlayers[uPlayerID]->uTimeToRecovery )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
617 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
618
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
619 uActiveCharacter = uPlayerID;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
620 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
621 }
2547
fed97f15d1e1 * SaveLoad
a.parshin
parents: 2546
diff changeset
622 pGUIWindow_CurrentMenu = new GUIWindow_CharacterRecord(uActiveCharacter, SCREEN_CHARACTERS);//CharacterUI_Initialize(SCREEN_CHARACTERS);
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
623 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
624 }
2541
a902abdfc7f2 1. Renamed class Game to class Engine.
a.parshin
parents: 2524
diff changeset
625 if ( current_screen_type == SCREEN_SPELL_BOOK )
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
626 return;
2541
a902abdfc7f2 1. Renamed class Game to class Engine.
a.parshin
parents: 2524
diff changeset
627 if ( current_screen_type == SCREEN_CHEST )
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
628 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
629 viewparams->bRedrawGameUI = true;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
630 if ( uActiveCharacter == uPlayerID )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
631 {
2544
c674d547cc7c GUIWindow switch logic refactored into behaviour classes
a.parshin
parents: 2541
diff changeset
632 current_character_screen_window = WINDOW_CharacterWindow_Inventory;
2541
a902abdfc7f2 1. Renamed class Game to class Engine.
a.parshin
parents: 2524
diff changeset
633 current_screen_type = SCREEN_CHEST_INVENTORY;
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
634 uActiveCharacter = uPlayerID;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
635 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
636 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
637 if ( pPlayers[uPlayerID]->uTimeToRecovery )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
638 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
639 uActiveCharacter = uPlayerID;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
640 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
641 }
2541
a902abdfc7f2 1. Renamed class Game to class Engine.
a.parshin
parents: 2524
diff changeset
642 if ( current_screen_type != SCREEN_HOUSE )
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
643 {
2541
a902abdfc7f2 1. Renamed class Game to class Engine.
a.parshin
parents: 2524
diff changeset
644 if ( current_screen_type == SCREEN_E )
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
645 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
646 uActiveCharacter = uPlayerID;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
647 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
648 }
2541
a902abdfc7f2 1. Renamed class Game to class Engine.
a.parshin
parents: 2524
diff changeset
649 if ( current_screen_type != SCREEN_CHEST_INVENTORY )
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
650 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
651 viewparams->bRedrawGameUI = true;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
652 uActiveCharacter = uPlayerID;
2544
c674d547cc7c GUIWindow switch logic refactored into behaviour classes
a.parshin
parents: 2541
diff changeset
653 if (current_character_screen_window == WINDOW_CharacterWindow_Awards)
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
654 FillAwardsData();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
655 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
656 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
657 viewparams->bRedrawGameUI = true;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
658 if ( uActiveCharacter == uPlayerID )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
659 {
2544
c674d547cc7c GUIWindow switch logic refactored into behaviour classes
a.parshin
parents: 2541
diff changeset
660 current_character_screen_window = WINDOW_CharacterWindow_Inventory;
2541
a902abdfc7f2 1. Renamed class Game to class Engine.
a.parshin
parents: 2524
diff changeset
661 current_screen_type = SCREEN_CHEST_INVENTORY;
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
662 uActiveCharacter = uPlayerID;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
663 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
664 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
665 if ( pPlayers[uPlayerID]->uTimeToRecovery )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
666 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
667 uActiveCharacter = uPlayerID;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
668 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
669 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
670 if ( window_SpeakInHouse->receives_keyboard_input_2 == WINDOW_INPUT_IN_PROGRESS)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
671 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
672 viewparams->bRedrawGameUI = true;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
673 if ( uActiveCharacter != uPlayerID )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
674 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
675 uActiveCharacter = uPlayerID;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
676 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
677 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
678 if (dialog_menu_id == HOUSE_DIALOGUE_SHOP_BUY_STANDARD || dialog_menu_id == HOUSE_DIALOGUE_SHOP_6)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
679 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
680 __debugbreak(); // fix indexing
2544
c674d547cc7c GUIWindow switch logic refactored into behaviour classes
a.parshin
parents: 2541
diff changeset
681 current_character_screen_window = WINDOW_CharacterWindow_Inventory;
2547
fed97f15d1e1 * SaveLoad
a.parshin
parents: 2546
diff changeset
682 pGUIWindow_CurrentMenu = new GUIWindow_CharacterRecord(uActiveCharacter, SCREEN_E);//CharacterUI_Initialize(SCREEN_E);
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
683 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
684 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
685 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
686
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
687 //----- (00416B01) --------------------------------------------------------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
688 void GameUI_DrawNPCPopup(void *_this)//PopupWindowForBenefitAndJoinText
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
689 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
690 int v1; // edi@2
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
691 NPCData *pNPC; // eax@16
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
692 const CHAR *pText; // eax@18
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
693 char *v11; // esi@26
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
694 GUIWindow popup_window; // [sp+Ch] [bp-60h]@23
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
695 int a2; // [sp+60h] [bp-Ch]@16
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
696 LPCSTR lpsz; // [sp+68h] [bp-4h]@6
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
697
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
698 if ( bNoNPCHiring != 1 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
699 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
700 v1 = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
701 /*do
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
702 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
703 if ( v3->pName )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
704 pTmpBuf[v1++] = v2;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
705 ++v3;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
706 ++v2;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
707 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
708 while ( (signed int)v3 < (signed int)&pParty->pPickedItem );*/
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
709 for (int i = 0; i < 2; ++i)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
710 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
711 if (pParty->pHirelings[i].pName)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
712 pTmpBuf[v1++] = i;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
713 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
714 lpsz = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
715 if ( (signed int)pNPCStats->uNumNewNPCs > 0 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
716 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
717 /*v4 = pNPCStats->pNewNPCData;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
718 do
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
719 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
720 if ( v4->uFlags & 0x80
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
721 && (!pParty->pHirelings[0].pName || strcmp(v4->pName, pParty->pHirelings[0].pName))
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
722 && (!pParty->pHirelings[1].pName || strcmp(v4->pName, pParty->pHirelings[1].pName)) )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
723 pTmpBuf[v1++] = (char)lpsz + 2;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
724 ++lpsz;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
725 ++v4;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
726 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
727 while ( (signed int)lpsz < (signed int)pNPCStats->uNumNewNPCs );*/
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
728 for ( uint i = 0; i < pNPCStats->uNumNewNPCs; ++i )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
729 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
730 if (pNPCStats->pNewNPCData[i].Hired())
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
731 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
732 if (!pParty->pHirelings[0].pName || strcmp((char *)pNPCStats->pNewNPCData[i].pName, (char *)pParty->pHirelings[0].pName))
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
733 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
734 if (!pParty->pHirelings[1].pName || strcmp((char *)pNPCStats->pNewNPCData[i].pName, (char *)pParty->pHirelings[1].pName))
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
735 pTmpBuf[v1++] = i + 2;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
736 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
737 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
738 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
739 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
740 if ( (signed int)((char *)_this + pParty->hirelingScrollPosition) < v1 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
741 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
742 sDialogue_SpeakingActorNPC_ID = -1 - pParty->hirelingScrollPosition - (int)_this;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
743 pNPC = GetNewNPCData(sDialogue_SpeakingActorNPC_ID, &a2);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
744 if ( pNPC )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
745 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
746 if ( a2 == 57 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
747 pText = pNPCTopics[512].pText; // Baby dragon
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
748 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
749 pText = (const CHAR *)pNPCStats->pProfessions[pNPC->uProfession].pBenefits;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
750 lpsz = pText;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
751 if ( !pText )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
752 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
753 lpsz = (LPCSTR)pNPCStats->pProfessions[pNPC->uProfession].pJoinText;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
754 if ( !lpsz )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
755 lpsz = "";
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
756 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
757 popup_window.Hint = nullptr;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
758 popup_window.uFrameX = 38;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
759 popup_window.uFrameY = 60;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
760 popup_window.uFrameWidth = 276;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
761 popup_window.uFrameZ = 313;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
762 popup_window.uFrameHeight = pFontArrus->CalcTextHeight(lpsz, &popup_window, 0, 0) + 2 * LOBYTE(pFontArrus->uFontHeight) + 24;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
763 if ( (signed int)popup_window.uFrameHeight < 130 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
764 popup_window.uFrameHeight = 130;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
765 popup_window.uFrameWidth = 400;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
766 popup_window.uFrameZ = popup_window.uFrameX + 399;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
767 popup_window.DrawMessageBox(0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
768 sprintfex(pTmpBuf2.data(), "NPC%03d", pNPC->uPortraitID);
2575
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
769 pRenderer->DrawTextureAlphaNew(
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
770 (popup_window.uFrameX + 22)/640.0f,
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
771 (popup_window.uFrameY + 36)/480.0f,
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
772 assets->GetImage_16BitColorKey(pTmpBuf2.data(), 0x7FF)
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
773 );
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
774 if ( pNPC->uProfession )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
775 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
776 v11 = pTmpBuf.data();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
777 sprintfex(pTmpBuf.data(), pGlobalTXT_LocalizationStrings[429], pNPC->pName, aNPCProfessionNames[pNPC->uProfession]);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
778 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
779 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
780 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
781 v11 = pTmpBuf.data();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
782 strcpy(pTmpBuf.data(), pNPC->pName);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
783 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
784 popup_window.DrawTitleText(pFontArrus, 0, 12, Color16(0xFFu, 0xFFu, 0x9Bu), v11, 3);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
785 popup_window.uFrameWidth -= 24;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
786 popup_window.uFrameZ = popup_window.uFrameX + popup_window.uFrameWidth - 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
787 popup_window.DrawText(pFontArrus, 100, 36, 0, BuildDialogueString((char *)lpsz, uActiveCharacter - 1, 0, 0, 0, 0), 0, 0, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
788 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
789 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
790 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
791 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
792
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
793 //----- (00445D4A) --------------------------------------------------------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
794 void GameUI_InitializeDialogue(Actor *actor, int bPlayerSaysHello)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
795 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
796 NPCData *pNPCInfo; // ebp@1
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
797 int v9; // esi@8
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
798 int pNumberContacts; // eax@11
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
799 char pContainer[32]; // [sp+14h] [bp-28h]@3
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
800
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
801 dword_A74CDC = -1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
802 pNPCStats->dword_AE336C_LastMispronouncedNameFirstLetter = -1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
803 pEventTimer->Pause();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
804 pMiscTimer->Pause();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
805 pAudioPlayer->StopChannels(-1, -1);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
806 uDialogueType = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
807 sDialogue_SpeakingActorNPC_ID = actor->sNPC_ID;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
808 pDialogue_SpeakingActor = actor;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
809 pNPCInfo = GetNPCData(actor->sNPC_ID);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
810 if ( (pNPCInfo->uFlags & 3) != 2 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
811 pNPCInfo->uFlags = pNPCInfo->uFlags + 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
812
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
813 switch (pParty->alignment)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
814 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
815 case PartyAlignment_Good: sprintfex(pContainer, "evt%02d-b", const_2()); break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
816 case PartyAlignment_Neutral: sprintfex(pContainer, "evt%02d", const_2()); break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
817 case PartyAlignment_Evil: sprintfex(pContainer, "evt%02d-c", const_2()); break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
818 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
819
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
820 pDialogueNPCCount = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
821 uNumDialogueNPCPortraits = 1;
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
822
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
823 game_ui_dialogue_background = assets->GetImage_16Bit(pContainer);
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
824 sprintfex(pContainer, "npc%03u", pNPCInfo->uPortraitID);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
825 v9 = 0;
2575
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
826 pDialogueNPCPortraits[0] = assets->GetImage_16BitColorKey(pContainer, 0x7FF);
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
827 dword_591084 = areWeLoadingTexture;
2573
0c67be4ec900 DrawTextureIndexed renamed to DrawTextureTransparentColorKey
a.parshin
parents: 2572
diff changeset
828
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
829 if ( !pNPCInfo->Hired() && pNPCInfo->Location2D >= 0 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
830 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
831 if ( (signed int)pParty->GetPartyFame() <= pNPCInfo->fame
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
832 || (pNumberContacts = pNPCInfo->uFlags & 0xFFFFFF7F, (pNumberContacts & 0x80000000u) != 0) )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
833 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
834 v9 = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
835 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
836 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
837 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
838 if ( pNumberContacts > 1 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
839 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
840 if ( pNumberContacts == 2 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
841 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
842 v9 = 3;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
843 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
844 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
845 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
846 if ( pNumberContacts != 3 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
847 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
848 if ( pNumberContacts != 4 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
849 v9 = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
850 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
851 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
852 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
853 v9 = 2;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
854 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
855 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
856 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
857 else if ( pNPCInfo->rep )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
858 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
859 v9 = 2;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
860 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
861 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
862 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
863 if (sDialogue_SpeakingActorNPC_ID < 0)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
864 v9 = 4;
2544
c674d547cc7c GUIWindow switch logic refactored into behaviour classes
a.parshin
parents: 2541
diff changeset
865 pDialogueWindow = new GUIWindow_Dialogue(0, 0, window->GetWidth(), window->GetHeight(), 3, 0);//pNumberContacts = 1, v9 = 0; pNumberContacts = 2, v9 = 3;
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
866 if (pNPCInfo->Hired() && !pNPCInfo->bHasUsedTheAbility)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
867 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
868 if (pNPCInfo->uProfession == 10 || //Healer
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
869 pNPCInfo->uProfession == 11 || //Expert Healer
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
870 pNPCInfo->uProfession == 12 || //Master Healer
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
871 pNPCInfo->uProfession == 33 || //Cook
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
872 pNPCInfo->uProfession == 34 || //Chef
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
873 pNPCInfo->uProfession == 39 || //Wind Master
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
874 pNPCInfo->uProfession == 40 || //Water Master
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
875 pNPCInfo->uProfession == 41 || //Gate Master
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
876 pNPCInfo->uProfession == 42 || //Chaplain
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
877 pNPCInfo->uProfession == 43 || //Piper
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
878 pNPCInfo->uProfession == 52 //Fallen Wizard
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
879 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
880 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
881 pDialogueWindow->CreateButton(480, 250, 140, LOBYTE(pFontArrus->uFontHeight) - 3, 1, 0, UIMSG_SelectNPCDialogueOption, 9, 0, "", 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
882 pDialogueWindow->_41D08F_set_keyboard_control_group(4, 1, 0, 1);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
883 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
884 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
885
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
886 pDialogueWindow->CreateButton( 61, 424, 31, 40, 2, 94, UIMSG_SelectCharacter, 1, '1', "", 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
887 pDialogueWindow->CreateButton(177, 424, 31, 40, 2, 94, UIMSG_SelectCharacter, 2, '2', "", 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
888 pDialogueWindow->CreateButton(292, 424, 31, 40, 2, 94, UIMSG_SelectCharacter, 3, '3', "", 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
889 pDialogueWindow->CreateButton(407, 424, 31, 40, 2, 94, UIMSG_SelectCharacter, 4, '4', "", 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
890
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
891 if (bPlayerSaysHello && uActiveCharacter && !pNPCInfo->Hired())
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
892 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
893 if (pParty->uCurrentHour < 5 || pParty->uCurrentHour > 21)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
894 pPlayers[uActiveCharacter]->PlaySound(SPEECH_GoodEvening, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
895 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
896 pPlayers[uActiveCharacter]->PlaySound(SPEECH_GoodDay, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
897 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
898 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
899
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
900 //----- (00445350) --------------------------------------------------------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
901 void GameUI_DrawDialogue()
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
902 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
903 NPCData *pNPC; // ebx@2
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
904 int pGreetType; // eax@2
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
905 int pTextHeight; // esi@39
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
906 GUIButton *pButton; // eax@43
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
907 int all_text_height; // ebx@93
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
908 signed int index; // esi@99
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
909 int v42; // edi@102
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
910 int v45;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
911 unsigned __int16 pTextColor; // ax@104
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
912 GUIWindow window; // [sp+ACh] [bp-68h]@42
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
913 // GUIFont *pOutString; // [sp+10Ch] [bp-8h]@39
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
914 const char *pInString=nullptr; // [sp+110h] [bp-4h]@32
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
915
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
916 if ( !pDialogueWindow )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
917 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
918
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
919 // Window title(Çàãîëîâîê îêíà)----
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
920 memcpy(&window, pDialogueWindow, sizeof(window));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
921 pNPC = GetNPCData(sDialogue_SpeakingActorNPC_ID);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
922 pGreetType = GetGreetType(sDialogue_SpeakingActorNPC_ID);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
923 window.uFrameWidth -= 10;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
924 window.uFrameZ -= 10;
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
925 pRenderer->DrawTextureNew(477/640.0f, 0, game_ui_dialogue_background);
2573
0c67be4ec900 DrawTextureIndexed renamed to DrawTextureTransparentColorKey
a.parshin
parents: 2572
diff changeset
926 pRenderer->DrawTextureAlphaNew(468/640.0f, 0, game_ui_right_panel_frame);
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
927 pRenderer->DrawTextureAlphaNew((pNPCPortraits_x[0][0] - 4)/640.0f, (pNPCPortraits_y[0][0] - 4)/480.0f, game_ui_evtnpc);
2575
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
928 pRenderer->DrawTextureAlphaNew(pNPCPortraits_x[0][0]/640.0f, pNPCPortraits_y[0][0]/480.0f, pDialogueNPCPortraits[0]);
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
929
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
930 if (pNPC->uProfession)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
931 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
932 assert(pNPC->uProfession < sizeof(aNPCProfessionNames) / sizeof(*aNPCProfessionNames.data())); // sometimes buffer overflows; errors emerge both here and in dialogue text
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
933 sprintfex(pTmpBuf.data(), pGlobalTXT_LocalizationStrings[429], pNPC->pName, aNPCProfessionNames[pNPC->uProfession]);//^Pi[%s] %s
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
934 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
935 else if (pNPC->pName)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
936 strcpy(pTmpBuf.data(), pNPC->pName);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
937
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
938 window.DrawTitleText(pFontArrus, 483, 112, ui_game_dialogue_npc_name_color, pTmpBuf.data(), 3);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
939 pParty->GetPartyFame();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
940
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
941 pInString = nullptr;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
942 switch (uDialogueType)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
943 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
944 case DIALOGUE_13:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
945 pInString = BuildDialogueString(pNPCStats->pProfessions[pNPC->uProfession].pJoinText, uActiveCharacter - 1, 0, 0, 0, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
946 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
947
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
948 case DIALOGUE_PROFESSION_DETAILS:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
949 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
950 //auto prof = pNPCStats->pProfessions[pNPC->uProfession];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
951
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
952 if (dialogue_show_profession_details)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
953 pInString = BuildDialogueString(pNPCStats->pProfessions[pNPC->uProfession].pBenefits, uActiveCharacter - 1, 0, 0, 0, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
954 else if (pNPC->Hired())
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
955 pInString = BuildDialogueString(pNPCStats->pProfessions[pNPC->uProfession].pDismissText, uActiveCharacter - 1, 0, 0, 0, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
956 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
957 pInString = BuildDialogueString(pNPCStats->pProfessions[pNPC->uProfession].pJoinText, uActiveCharacter - 1, 0, 0, 0, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
958 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
959 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
960
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
961
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
962 case DIALOGUE_ARENA_WELCOME:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
963 pInString = pGlobalTXT_LocalizationStrings[574]; // "Welcome to the Arena of Life and Death. Remember, you are only allowed one arena combat per visit. To fight an arena battle, select the option that best describes your abilities and return to me- if you survive:"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
964 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
965
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
966 case DIALOGUE_ARENA_FIGHT_NOT_OVER_YET:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
967 pInString = pGlobalTXT_LocalizationStrings[577]; //"Get back in there you wimps:"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
968 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
969
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
970 case DIALOGUE_ARENA_REWARD:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
971 sprintfex(pTmpBuf.data(), pGlobalTXT_LocalizationStrings[576], gold_transaction_amount);// "Congratulations on your win: here's your stuff: %u gold."
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
972 pInString = pTmpBuf.data();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
973 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
974
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
975 case DIALOGUE_ARENA_ALREADY_WON:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
976 pInString = pGlobalTXT_LocalizationStrings[582]; // "You already won this trip to the Arena:"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
977 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
978
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
979 default:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
980 if (uDialogueType > DIALOGUE_18 && uDialogueType < DIALOGUE_EVT_E && !byte_5B0938[0])
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
981 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
982 pInString = (char *)current_npc_text;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
983 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
984 else if (pGreetType == 1)//QuestNPC_greet
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
985 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
986 if (pNPC->greet)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
987 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
988 if ((pNPC->uFlags & 3) == 2)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
989 pInString = pNPCStats->pNPCGreetings[pNPC->greet].pGreeting2;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
990 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
991 pInString = pNPCStats->pNPCGreetings[pNPC->greet].pGreeting1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
992 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
993 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
994 else if (pGreetType == 2)//HiredNPC_greet
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
995 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
996 NPCProfession* prof = &pNPCStats->pProfessions[pNPC->uProfession];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
997
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
998 if (pNPC->Hired())
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
999 pInString = BuildDialogueString(prof->pDismissText, uActiveCharacter - 1, 0, 0, 0, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1000 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1001 pInString = BuildDialogueString(prof->pJoinText, uActiveCharacter - 1, 0, 0, 0, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1002 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1003 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1004 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1005
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1006 // Message window(Îêíî ñîîáùåíèÿ)----
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1007 if (pInString)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1008 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1009 window.uFrameWidth = game_viewport_width;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1010 window.uFrameZ = 452;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1011 GUIFont* font = pFontArrus;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1012 pTextHeight = pFontArrus->CalcTextHeight(pInString, &window, 13, 0) + 7;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1013 if ( 352 - pTextHeight < 8 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1014 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1015 font = pFontCreate;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1016 pTextHeight = pFontCreate->CalcTextHeight(pInString, &window, 13, 0) + 7;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1017 }
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
1018
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
1019 if (ui_leather_mm7)
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
1020 pRenderer->DrawTextureCustomHeight(
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
1021 8/640.0f,
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
1022 (352 - pTextHeight)/480.0f,
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
1023 ui_leather_mm7,
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
1024 pTextHeight);
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
1025
2573
0c67be4ec900 DrawTextureIndexed renamed to DrawTextureTransparentColorKey
a.parshin
parents: 2572
diff changeset
1026 pRenderer->DrawTextureAlphaNew(8/640.0f, (347 - pTextHeight)/480.0f, _591428_endcap);
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1027 pDialogueWindow->DrawText(font, 13, 354 - pTextHeight, 0, FitTextInAWindow(pInString, font, &window, 13, 0), 0, 0, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1028 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1029 // Right panel(Ïðàâàÿ ïàíåëü)-------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1030 memcpy(&window, pDialogueWindow, sizeof(window));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1031 window.uFrameX = 483;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1032 window.uFrameWidth = 148;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1033 window.uFrameZ = 334;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1034 for (int i = window.pStartingPosActiveItem; i < window.pStartingPosActiveItem + window.pNumPresenceButton; ++i)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1035 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1036 pButton = window.GetControl(i);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1037 if ( !pButton )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1038 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1039
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1040 if ( pButton->msg_param > 88 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1041 pButton->pButtonName[0] = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1042 else if (pButton->msg_param == 88)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1043 strcpy(pButton->pButtonName, pGlobalTXT_LocalizationStrings[581]); // Lord
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1044 else if (pButton->msg_param == 87)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1045 strcpy(pButton->pButtonName, pGlobalTXT_LocalizationStrings[580]); // Knight
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1046 else if (pButton->msg_param == 86)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1047 strcpy(pButton->pButtonName, pGlobalTXT_LocalizationStrings[579]); // Squire
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1048 else if (pButton->msg_param == 85)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1049 strcpy(pButton->pButtonName, pGlobalTXT_LocalizationStrings[578]); // Page
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1050 else if (pButton->msg_param == 77)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1051 strcpy(pButton->pButtonName, pGlobalTXT_LocalizationStrings[407]); // Details
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1052 else if (pButton->msg_param == 76)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1053 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1054 if (pNPC->Hired())
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1055 sprintf(pButton->pButtonName, (const char*)pGlobalTXT_LocalizationStrings[408], pNPC->pName); // Release %s
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1056 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1057 strcpy(pButton->pButtonName, pGlobalTXT_LocalizationStrings[406]); // Hire
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1058 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1059 else if (pButton->msg_param == 24)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1060 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1061 __debugbreak(); // learn conditions of this event
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1062 if (!pNPC->evt_F)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1063 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1064 pButton->pButtonName[0] = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1065 pButton->msg_param = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1066 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1067 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1068 strcpy(pButton->pButtonName, pNPCTopics[pNPC->evt_F].pTopic);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1069 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1070 else if (pButton->msg_param == 9)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1071 strcpy(pButton->pButtonName, GetProfessionActionText(pNPC->uProfession));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1072 else if (pButton->msg_param == 19) // Scavenger Hunt
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1073 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1074 if (!pNPC->evt_A)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1075 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1076 pButton->pButtonName[0] = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1077 pButton->msg_param = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1078 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1079 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1080 strcpy(pButton->pButtonName, pNPCTopics[pNPC->evt_A].pTopic);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1081 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1082 else if (pButton->msg_param == 20) // Scavenger Hunt
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1083 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1084 if (!pNPC->evt_B)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1085 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1086 pButton->pButtonName[0] = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1087 pButton->msg_param = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1088 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1089 else strcpy(pButton->pButtonName, pNPCTopics[pNPC->evt_B].pTopic);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1090 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1091 else if (pButton->msg_param == 21)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1092 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1093 //__debugbreak(); // learn conditions of this event
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1094 if (!pNPC->evt_C)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1095 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1096 pButton->pButtonName[0] = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1097 pButton->msg_param = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1098 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1099 else strcpy(pButton->pButtonName, pNPCTopics[pNPC->evt_C].pTopic);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1100 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1101 else if (pButton->msg_param == 22)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1102 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1103 //__debugbreak(); // learn conditions of this event
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1104 if (!pNPC->evt_D)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1105 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1106 pButton->pButtonName[0] = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1107 pButton->msg_param = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1108 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1109 else strcpy(pButton->pButtonName, pNPCTopics[pNPC->evt_D].pTopic);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1110 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1111 else if (pButton->msg_param == 23)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1112 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1113 //__debugbreak(); // learn conditions of this event
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1114 if (!pNPC->evt_E)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1115 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1116 pButton->pButtonName[0] = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1117 pButton->msg_param = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1118 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1119 else strcpy(pButton->pButtonName, pNPCTopics[pNPC->evt_E].pTopic);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1120 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1121 else if (pButton->msg_param == 13)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1122 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1123 if (pNPC->Hired())
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1124 sprintf(pButton->pButtonName, pGlobalTXT_LocalizationStrings[408], pNPC->pName); // Release %s
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1125 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1126 strcpy(pButton->pButtonName, pGlobalTXT_LocalizationStrings[122]); // Join
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1127 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1128 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1129 pButton->pButtonName[0] = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1130
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1131 if (pParty->field_7B5_in_arena_quest && pParty->field_7B5_in_arena_quest != -1)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1132 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1133 int num_dead_actors = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1134 pInString = nullptr;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1135 for ( uint i = 0; i < uNumActors; ++i )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1136 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1137 if (pActors[i].uAIState == Dead || pActors[i].uAIState == Removed || pActors[i].uAIState == Disabled)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1138 ++num_dead_actors;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1139 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1140 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1141 int sumonner_type = PID_TYPE(pActors[i].uSummonerID);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1142 if (sumonner_type == OBJECT_Player)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1143 ++num_dead_actors;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1144 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1145 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1146 if (num_dead_actors == uNumActors)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1147 strcpy(pButton->pButtonName, pGlobalTXT_LocalizationStrings[658]); // Collect Prize
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1148 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1149 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1150
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1151 // Install Buttons(Óñòàíîâêà êíîïîê)--------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1152 index = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1153 all_text_height = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1154 for ( int i = pDialogueWindow->pStartingPosActiveItem;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1155 i < pDialogueWindow->pStartingPosActiveItem + pDialogueWindow->pNumPresenceButton; ++i )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1156 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1157 pButton = pDialogueWindow->GetControl(i);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1158 if ( !pButton )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1159 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1160 all_text_height += pFontArrus->CalcTextHeight(pButton->pButtonName, &window, 0, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1161 index++;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1162 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1163 if ( index )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1164 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1165 v45 = (174 - all_text_height) / index;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1166 if ( v45 > 32 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1167 v45 = 32;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1168 v42 = (174 - v45 * index - all_text_height)/ 2 - v45 / 2 + 138;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1169 for ( int i = pDialogueWindow->pStartingPosActiveItem;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1170 i < pDialogueWindow->pNumPresenceButton + pDialogueWindow->pStartingPosActiveItem; ++i )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1171 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1172 pButton = pDialogueWindow->GetControl(i);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1173 if ( !pButton )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1174 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1175 pButton->uY = (unsigned int)(v45 + v42);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1176 pTextHeight = pFontArrus->CalcTextHeight(pButton->pButtonName, &window, 0, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1177 pButton->uHeight = pTextHeight;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1178 v42 = pButton->uY + pTextHeight - 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1179 pButton->uW = v42;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1180 pTextColor = ui_game_dialogue_option_normal_color;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1181 if ( pDialogueWindow->pCurrentPosActiveItem == i )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1182 pTextColor = ui_game_dialogue_option_highlight_color;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1183 window.DrawTitleText(pFontArrus, 0, pButton->uY, pTextColor, pButton->pButtonName, 3);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1184 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1185 }
2573
0c67be4ec900 DrawTextureIndexed renamed to DrawTextureTransparentColorKey
a.parshin
parents: 2572
diff changeset
1186 pRenderer->DrawTextureAlphaNew(471/640.0f, 445/480.0f, ui_exit_cancel_button_background);
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1187 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1188
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1189 //----- (00444FBE) --------------------------------------------------------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1190 void GameUI_DrawBranchlessDialogue()
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1191 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1192 int pTextHeight; // esi@4
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1193 char Str[200]; // [sp+Ch] [bp-120h]@12
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1194 GUIWindow BranchlessDlg_window; // [sp+D4h] [bp-58h]@4
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1195 GUIFont *pFont; // [sp+128h] [bp-4h]@1
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1196
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1197 pFont = pFontArrus;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1198 if ( current_npc_text && !byte_5B0938[0] )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1199 strcpy(byte_5B0938.data(), current_npc_text);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1200 BranchlessDlg_window.uFrameWidth = game_viewport_width;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1201 BranchlessDlg_window.uFrameZ = 452;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1202 pTextHeight = pFontArrus->CalcTextHeight(byte_5B0938.data(), &BranchlessDlg_window, 12, 0) + 7;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1203 if ( 352 - pTextHeight < 8 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1204 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1205 pFont = pFontCreate;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1206 pTextHeight = pFontCreate->CalcTextHeight(byte_5B0938.data(), &BranchlessDlg_window, 12, 0) + 7;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1207 }
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
1208
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
1209 pRenderer->DrawTextureCustomHeight(
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
1210 8/640.0f,
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
1211 (352 - pTextHeight)/480.0f,
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
1212 ui_leather_mm7,
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
1213 pTextHeight);
2573
0c67be4ec900 DrawTextureIndexed renamed to DrawTextureTransparentColorKey
a.parshin
parents: 2572
diff changeset
1214 pRenderer->DrawTextureAlphaNew(8/640.0f, (347 - pTextHeight)/480.0f, _591428_endcap);
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1215 pGUIWindow2->DrawText(pFont, 12, 354 - pTextHeight, 0, FitTextInAWindow(byte_5B0938.data(), pFont, &BranchlessDlg_window, 12, 0), 0, 0, 0);
2572
d87bfbd3bb3b Step towards unification of Texture and RGBTexture (class Image)
a.parshin
parents: 2566
diff changeset
1216 pRenderer->DrawTextureNew(0, 352/480.0f, game_ui_statusbar);
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1217 if ( pGUIWindow2->receives_keyboard_input_2 != WINDOW_INPUT_IN_PROGRESS)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1218 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1219 if ( pGUIWindow2->receives_keyboard_input_2 == WINDOW_INPUT_CONFIRMED)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1220 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1221 pGUIWindow2->receives_keyboard_input_2 = WINDOW_INPUT_NONE;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1222 strcpy(GameUI_Footer_TimedString.data(), pKeyActionMap->pPressedKeysBuffer);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1223 sub_4452BB();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1224 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1225 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1226 if ( pGUIWindow2->receives_keyboard_input_2 != WINDOW_INPUT_CANCELLED)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1227 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1228 pGUIWindow2->receives_keyboard_input_2 = WINDOW_INPUT_NONE;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1229 memset(GameUI_Footer_TimedString.data(), 0, 0xC8u);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1230 sub_4452BB();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1231 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1232 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1233 if ( pGUIWindow2->ptr_1C == (void *)26 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1234 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1235 sprintf(Str, "%s %s", GameUI_Footer_TimedString, pKeyActionMap->pPressedKeysBuffer);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1236 pGUIWindow2->DrawText(pFontLucida, 13, 357, 0, Str, 0, 0, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1237 pGUIWindow2->DrawFlashingInputCursor(pFontLucida->GetLineWidth(Str) + 13, 357, pFontLucida);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1238 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1239 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1240 if ( pKeyActionMap->pPressedKeysBuffer[0] )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1241 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1242 pKeyActionMap->SetWindowInputStatus(WINDOW_INPUT_NONE);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1243 memset(GameUI_Footer_TimedString.data(), 0, 0xC8u);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1244 sub_4452BB();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1245 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1246 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1247 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1248
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1249 //----- (004443D5) --------------------------------------------------------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1250 const char *GameUI_GetMinimapHintText()
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1251 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1252 double v3; // st7@1
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1253 int v7; // eax@4
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1254 const char *v14; // eax@8
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1255 char *result; // eax@12
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1256 unsigned int pMapID; // eax@14
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1257 int global_coord_X; // [sp+10h] [bp-1Ch]@1
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1258 int global_coord_Y; // [sp+14h] [bp-18h]@1
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1259 unsigned int pY; // [sp+1Ch] [bp-10h]@1
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1260 unsigned int pX; // [sp+28h] [bp-4h]@1
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1261
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1262 result = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1263 pMouse->GetClickPos(&pX, &pY);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1264 v3 = 1.0 / (float)((signed int)viewparams->uMinimapZoom * 0.000015258789);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1265 global_coord_X = (signed __int64)((double)(pX - 557) * v3 + (double)pParty->vPosition.x);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1266 global_coord_Y = (signed __int64)((double)pParty->vPosition.y - (double)(pY - 74) * v3);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1267 if ( uCurrentlyLoadedLevelType != LEVEL_Outdoor || pOutdoor->uNumBModels <= 0 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1268 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1269 pMapID = pMapStats->GetMapInfo(pCurrentMapName);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1270 if ( pMapID == 0 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1271 result = "No Maze Info for this maze on file!";
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1272 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1273 result = pMapStats->pInfos[pMapID].pName;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1274 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1275 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1276 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1277 for ( uint j = 0; j < (uint)pOutdoor->uNumBModels; ++j )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1278 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1279 v7 = int_get_vector_length(abs((signed)pOutdoor->pBModels[j].vBoundingCenter.x - global_coord_X),
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1280 abs((signed)pOutdoor->pBModels[j].vBoundingCenter.y - global_coord_Y), 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1281 if ( v7 < 2 * pOutdoor->pBModels[j].sBoundingRadius )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1282 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1283 if ( pOutdoor->pBModels[j].uNumFaces )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1284 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1285 for ( uint i = 0; i < (uint)pOutdoor->pBModels[j].uNumFaces; ++i )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1286 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1287 if ( pOutdoor->pBModels[j].pFaces[i].sCogTriggeredID )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1288 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1289 if ( !(pOutdoor->pBModels[j].pFaces[i].uAttributes & FACE_HAS_EVENT) )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1290 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1291 v14 = GetEventHintString(pOutdoor->pBModels[j].pFaces[i].sCogTriggeredID);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1292 if ( v14 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1293 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1294 if ( _stricmp(v14, "") )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1295 result = (char *)v14;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1296 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1297 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1298 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1299 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1300 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1301 if ( result )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1302 return result;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1303 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1304 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1305 pMapID = pMapStats->GetMapInfo(pCurrentMapName);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1306 if ( pMapID == 0 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1307 result = "No Maze Info for this maze on file!";
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1308 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1309 result = pMapStats->pInfos[pMapID].pName;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1310 return result;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1311 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1312 return result;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1313 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1314
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1315 //----- (0041D3B7) --------------------------------------------------------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1316 void GameUI_CharacterQuickRecord_Draw(GUIWindow *window, Player *player)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1317 {
2575
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
1318 Image *v13; // eax@6
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1319 PlayerFrame *v15; // eax@12
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1320 unsigned int pTextColor; // eax@15
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1321 const char *v29; // eax@16
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1322 int v36; // esi@22
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1323 const char *v39; // eax@24
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1324 signed int uFramesetID; // [sp+20h] [bp-8h]@9
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1325 int uFramesetIDa; // [sp+20h] [bp-8h]@18
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1326
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1327 uint numActivePlayerBuffs = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1328 for (uint i = 0; i < 24; ++i)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1329 if (player->pPlayerBuffs[i].uExpireTime > 0)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1330 ++numActivePlayerBuffs;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1331
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1332 window->uFrameHeight = ((pFontArrus->uFontHeight + 162) + ((numActivePlayerBuffs - 1) * pFontArrus->uFontHeight));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1333 window->uFrameZ = window->uFrameWidth + window->uFrameX - 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1334 window->uFrameW = ((pFontArrus->uFontHeight + 162) + ((numActivePlayerBuffs - 1) * pFontArrus->uFontHeight)) + window->uFrameY - 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1335 window->DrawMessageBox(0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1336
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1337 if (player->IsEradicated())
2575
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
1338 v13 = game_ui_player_face_eradicated;
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1339 else if (player->IsDead())
2575
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
1340 v13 = game_ui_player_face_dead;
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1341 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1342 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1343 uFramesetID = pPlayerFrameTable->GetFrameIdByExpression(player->expression);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1344 if ( !uFramesetID )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1345 uFramesetID = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1346 if ( player->expression == CHARACTER_EXPRESSION_21)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1347 v15 = pPlayerFrameTable->GetFrameBy_y(&player->_expression21_frameset, &player->_expression21_animtime, pMiscTimer->uTimeElapsed);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1348 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1349 v15 = pPlayerFrameTable->GetFrameBy_x(uFramesetID, pMiscTimer->Time());
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1350 player->field_1AA2 = v15->uTextureID - 1;
2575
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
1351 v13 = game_ui_player_faces[(unsigned int)window->ptr_1C][v15->uTextureID - 1];
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1352 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1353
2575
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
1354 pRenderer->DrawTextureAlphaNew((window->uFrameX + 24)/640.0f, (window->uFrameY + 24)/480.0f, v13);
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1355
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1356 sprintfex(pTmpBuf.data(), "\f%05d", ui_character_header_text_color);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1357 sprintfex(pTmpBuf2.data(), pGlobalTXT_LocalizationStrings[429], player->pName, pClassNames[player->classType]); // "%s the %s"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1358 strcat(pTmpBuf.data(), pTmpBuf2.data());
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1359 strcat(pTmpBuf.data(), "\f00000\n");
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1360
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1361 pTextColor = UI_GetHealthManaAndOtherQualitiesStringColor(player->sHealth, player->GetMaxHealth());
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1362 sprintfex(pTmpBuf2.data(), "%s : \f%05u%d\f00000 / %d\n", pGlobalTXT_LocalizationStrings[108], // "Hit Points"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1363 pTextColor, player->sHealth, player->GetMaxHealth());
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1364 strcat(pTmpBuf.data(), pTmpBuf2.data());
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1365
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1366 pTextColor = UI_GetHealthManaAndOtherQualitiesStringColor(player->sMana, player->GetMaxMana());
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1367 sprintfex(pTmpBuf2.data(), "%s : \f%05u%d\f00000 / %d\n", pGlobalTXT_LocalizationStrings[212], // "Spell Points"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1368 pTextColor, player->sMana, player->GetMaxMana());
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1369 strcat(pTmpBuf.data(), pTmpBuf2.data());
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1370
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1371 pTextColor = player->GetMajorConditionIdx();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1372 sprintfex(pTmpBuf2.data(), "%s: \f%05d%s\f00000\n", pGlobalTXT_LocalizationStrings[47], // "Condition
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1373 GetConditionDrawColor(pTextColor), aCharacterConditionNames[pTextColor]);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1374 strcat(pTmpBuf.data(), pTmpBuf2.data());
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1375
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1376 if ( player->uQuickSpell )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1377 v29 = pSpellStats->pInfos[player->uQuickSpell].pShortName;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1378 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1379 v29 = pGlobalTXT_LocalizationStrings[153];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1380 sprintfex(pTmpBuf2.data(), "%s: %s", pGlobalTXT_LocalizationStrings[172], v29); // "Quick Spell"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1381 strcat(pTmpBuf.data(), pTmpBuf2.data());
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1382
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1383 window->DrawText(pFontArrus, 120, 22, 0, pTmpBuf.data(), 0, 0, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1384
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1385 uFramesetIDa = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1386 for (uint i = 0; i < 24; ++i)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1387 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1388 SpellBuff* buff = &player->pPlayerBuffs[i];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1389 if (buff->uExpireTime > 0)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1390 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1391 v36 = uFramesetIDa++ * pFontComic->uFontHeight + 134;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1392 window->DrawText(pFontComic, 52, v36, ui_game_character_record_playerbuff_colors[i], aSpellNames[20 + i], 0, 0, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1393 DrawBuff_remaining_time_string(v36, window, buff->uExpireTime - pParty->uTimePlayed, pFontComic);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1394 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1395 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1396
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1397 v39 = "";
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1398 if ( uFramesetIDa == 0 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1399 v39 = pGlobalTXT_LocalizationStrings[153]; // "None"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1400 sprintfex(pTmpBuf.data(), pGlobalTXT_LocalizationStrings[450], v39); // "Active Spells: %s"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1401 window->DrawText(pFontArrus, 14, 114, 0, pTmpBuf.data(), 0, 0, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1402 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1403
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1404 //----- (0041AD6E) --------------------------------------------------------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1405 void GameUI_DrawRightPanelItems()
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1406 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1407 if ( (unsigned long long)GameUI_RightPanel_BookFlashTimer > pParty->uTimePlayed )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1408 GameUI_RightPanel_BookFlashTimer = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1409
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1410 if ( pParty->uTimePlayed - GameUI_RightPanel_BookFlashTimer > 128 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1411 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1412 GameUI_RightPanel_BookFlashTimer = pParty->uTimePlayed;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1413
2572
d87bfbd3bb3b Step towards unification of Texture and RGBTexture (class Image)
a.parshin
parents: 2566
diff changeset
1414 static bool _50697C_book_flasher = false; // 50697C
d87bfbd3bb3b Step towards unification of Texture and RGBTexture (class Image)
a.parshin
parents: 2566
diff changeset
1415 _50697C_book_flasher = !_50697C_book_flasher;
d87bfbd3bb3b Step towards unification of Texture and RGBTexture (class Image)
a.parshin
parents: 2566
diff changeset
1416 if (_50697C_book_flasher && current_screen_type != SCREEN_REST )
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1417 {
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
1418 if (bFlashQuestBook) pRenderer->DrawTextureAlphaNew(493/640.0f, 355/480.0f, game_ui_tome_quests);
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
1419 if (bFlashAutonotesBook) pRenderer->DrawTextureAlphaNew(527/640.0f, 353/480.0f, game_ui_tome_autonotes);
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
1420 if (bFlashHistoryBook) pRenderer->DrawTextureAlphaNew(600/640.0f, 361/480.0f, game_ui_tome_storyline);
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1421 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1422 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1423 {
2572
d87bfbd3bb3b Step towards unification of Texture and RGBTexture (class Image)
a.parshin
parents: 2566
diff changeset
1424 pRenderer->DrawTextureNew(468/640.0f, 0, game_ui_rightframe);
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1425 GameUI_DrawHiredNPCs();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1426 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1427 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1428 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1429
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1430 //----- (0041AEBB) --------------------------------------------------------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1431 void GameUI_DrawFoodAndGold()
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1432 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1433 int text_y; // esi@2
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1434
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1435 if ( uGameState != GAME_STATE_FINAL_WINDOW )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1436 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1437 text_y = _44100D_should_alter_right_panel() != 0 ? 381 : 322;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1438 sprintf(pTmpBuf.data(), "\r087%lu", pParty->uNumFoodRations);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1439 pPrimaryWindow->DrawText(pFontSmallnum, 0, text_y, uGameUIFontMain, pTmpBuf.data(), 0, 0, uGameUIFontShadow);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1440 sprintf(pTmpBuf.data(), "\r028%lu", pParty->uNumGold);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1441 pPrimaryWindow->DrawText(pFontSmallnum, 0, text_y, uGameUIFontMain, pTmpBuf.data(), 0, 0, uGameUIFontShadow);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1442 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1443 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1444
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1445 //----- (0041B0C9) --------------------------------------------------------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1446 void GameUI_DrawLifeManaBars()
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1447 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1448 double v3; // st7@3
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1449 double v7; // st7@25
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1450
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1451 for (uint i = 0; i < 4; ++i)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1452 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1453 if (pParty->pPlayers[i].sHealth > 0)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1454 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1455 int v17 = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1456 if (i == 2 || i == 3)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1457 v17 = 2;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1458 v3 = (double)pParty->pPlayers[i].sHealth / (double)pParty->pPlayers[i].GetMaxHealth();
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
1459
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
1460 auto pTextureHealth = game_ui_bar_green;
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1461 if( v3 > 0.5 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1462 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1463 if ( v3 > 1.0 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1464 v3 = 1.0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1465 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1466 else if ( v3 > 0.25 )
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
1467 pTextureHealth = game_ui_bar_yellow;
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1468 else if ( v3 > 0.0 )
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
1469 pTextureHealth = game_ui_bar_red;
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1470 if( v3 > 0.0 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1471 {
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
1472 pRenderer->SetUIClipRect(
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
1473 v17 + pHealthBarPos[i],
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
1474 (signed __int64)((1.0 - v3) * pTextureHealth->GetHeight()) + 402,
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
1475 v17 + pHealthBarPos[i] + pTextureHealth->GetWidth(),
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
1476 pTextureHealth->GetHeight() + 402);
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
1477 pRenderer->DrawTextureAlphaNew((v17 + pHealthBarPos[i])/640.0f, 402/480.0f, pTextureHealth);
2524
c7264ab7132f Main menu rendered using d3d11
a.parshin
parents: 2516
diff changeset
1478 pRenderer->ResetUIClipRect();
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1479 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1480 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1481 if (pParty->pPlayers[i].sMana > 0)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1482 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1483 v7 = pParty->pPlayers[i].sMana / (double)pParty->pPlayers[i].GetMaxMana();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1484 if ( v7 > 1.0 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1485 v7 = 1.0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1486 int v17 = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1487 if (i == 2)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1488 v17 = 1;
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
1489 pRenderer->SetUIClipRect(
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
1490 v17 + pManaBarPos[i],
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
1491 (signed __int64)((1.0 - v7) * game_ui_bar_blue->GetHeight()) + 402,
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
1492 v17 + pManaBarPos[i] + game_ui_bar_blue->GetWidth(),
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
1493 game_ui_bar_blue->GetHeight() + 402);
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
1494 pRenderer->DrawTextureAlphaNew((v17 + pManaBarPos[i])/640.0f, 402/480.0f, game_ui_bar_blue);
2524
c7264ab7132f Main menu rendered using d3d11
a.parshin
parents: 2516
diff changeset
1495 pRenderer->ResetUIClipRect();
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1496 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1497 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1498 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1499
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1500 //----- (0041B3B6) --------------------------------------------------------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1501 void GameUI_DrawRightPanel()
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1502 {
2573
0c67be4ec900 DrawTextureIndexed renamed to DrawTextureTransparentColorKey
a.parshin
parents: 2572
diff changeset
1503 pRenderer->DrawTextureAlphaNew(pViewport->uViewportBR_X/640.0f, 0, game_ui_right_panel_frame);
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1504 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1505
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1506 //----- (0041B3E2) --------------------------------------------------------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1507 void GameUI_DrawRightPanelFrames()
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1508 {
2572
d87bfbd3bb3b Step towards unification of Texture and RGBTexture (class Image)
a.parshin
parents: 2566
diff changeset
1509 pRenderer->DrawTextureNew(0, 0, game_ui_topframe);
d87bfbd3bb3b Step towards unification of Texture and RGBTexture (class Image)
a.parshin
parents: 2566
diff changeset
1510 pRenderer->DrawTextureNew(0, 8/480.0f, game_ui_leftframe);
d87bfbd3bb3b Step towards unification of Texture and RGBTexture (class Image)
a.parshin
parents: 2566
diff changeset
1511 pRenderer->DrawTextureNew(468/640.0f, 0, game_ui_rightframe);
d87bfbd3bb3b Step towards unification of Texture and RGBTexture (class Image)
a.parshin
parents: 2566
diff changeset
1512 pRenderer->DrawTextureNew(0, 352 / 480.0f, game_ui_bottomframe);
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1513 GameUI_DrawFoodAndGold();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1514 GameUI_DrawRightPanelItems();
2572
d87bfbd3bb3b Step towards unification of Texture and RGBTexture (class Image)
a.parshin
parents: 2566
diff changeset
1515
d87bfbd3bb3b Step towards unification of Texture and RGBTexture (class Image)
a.parshin
parents: 2566
diff changeset
1516 //pRenderer->EndScene();
d87bfbd3bb3b Step towards unification of Texture and RGBTexture (class Image)
a.parshin
parents: 2566
diff changeset
1517 //pRenderer->Present();
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1518 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1519
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1520 //----- (0041C047) --------------------------------------------------------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1521 void GameUI_Footer_2()
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1522 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1523 char *v1; // edx@2
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1524 int v5; // eax@5
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1525
2572
d87bfbd3bb3b Step towards unification of Texture and RGBTexture (class Image)
a.parshin
parents: 2566
diff changeset
1526 pRenderer->DrawTextureNew(0, 352/480.0f, game_ui_statusbar);
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1527 if (GameUI_Footer_TimeLeft)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1528 v1 = GameUI_Footer_TimedString.data();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1529 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1530 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1531 if (!pFooterString[0])
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1532 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1533 v1 = pFooterString.data();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1534 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1535
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1536 v5 = pFontLucida->AlignText_Center(450, v1);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1537 pPrimaryWindow->DrawText(pFontLucida, v5 + 11, 357, uGameUIFontMain, v1, 0, 0, uGameUIFontShadow);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1538 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1539
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1540 //----- (0041C0B8) --------------------------------------------------------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1541 void GameUI_SetFooterString(const char *pStr)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1542 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1543 const char *v1; // esi@1
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1544
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1545 v1 = pStr;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1546 if ( pStr && strcmp(pStr, "test") && !IsBadStringPtrA(pStr, 1) && (*v1 || GameUI_Footer_TimeLeft) )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1547 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1548 if ( GameUI_Footer_TimeLeft )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1549 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1550 for ( int i = pFontLucida->GetLineWidth(GameUI_Footer_TimedString.data()); i > 450; i = pFontLucida->GetLineWidth(GameUI_Footer_TimedString.data()) )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1551 GameUI_Footer_TimedString[strlen(GameUI_Footer_TimedString.data()) - 1] = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1552 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1553 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1554 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1555 strcpy(pFooterString.data(), v1);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1556 for ( int j = pFontLucida->GetLineWidth(pFooterString.data()); j > 450; j = pFontLucida->GetLineWidth(pFooterString.data()) )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1557 pFooterString[strlen(pFooterString.data()) - 1] = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1558 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1559 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1560 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1561
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1562 //----- (0041C179) --------------------------------------------------------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1563 void GameUI_Footer()
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1564 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1565 char *v1; // edi@5
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1566 int v2; // eax@5
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1567 int v6; // eax@9
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1568 char v9; // zf@12
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1569
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1570 if ( pFooterString[0] || GameUI_Footer_TimeLeft || bForceDrawFooter )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1571 {
2572
d87bfbd3bb3b Step towards unification of Texture and RGBTexture (class Image)
a.parshin
parents: 2566
diff changeset
1572 pRenderer->DrawTextureNew(0, 352/480.0f, game_ui_statusbar);
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1573 if ( GameUI_Footer_TimeLeft )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1574 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1575 v1 = GameUI_Footer_TimedString.data();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1576 v2 = pFontLucida->GetLineWidth(GameUI_Footer_TimedString.data());
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1577 while ( v2 > 450 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1578 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1579 GameUI_Footer_TimedString[strlen(GameUI_Footer_TimedString.data()) - 1] = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1580 v2 = pFontLucida->GetLineWidth(GameUI_Footer_TimedString.data());
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1581 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1582 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1583 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1584 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1585 v1 = pFooterString.data();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1586 v6 = pFontLucida->GetLineWidth(pFooterString.data());
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1587 while ( v6 > 450 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1588 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1589 pFooterString[strlen(pFooterString.data()) - 1] = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1590 v6 = pFontLucida->GetLineWidth(pFooterString.data());
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1591 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1592 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1593 v9 = *v1 == 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1594 bForceDrawFooter = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1595 if ( !v9 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1596 pPrimaryWindow->DrawText(pFontLucida, pFontLucida->AlignText_Center(450, v1) + 11, 357, uGameUIFontMain, v1, 0, 0, uGameUIFontShadow);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1597 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1598 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1599 // 5C35BC: using guessed type int bForceDrawFooter;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1600 //----- (00420EFF) --------------------------------------------------------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1601 void GameUI_WritePointedObjectStatusString()
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1602 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1603 GUIWindow *pWindow; // edi@7
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1604 GUIButton *pButton; // ecx@11
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1605 int requiredSkillpoints; // ecx@19
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1606 enum UIMessageType pMessageType1; // esi@24
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1607 int v14; // eax@41
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1608 ItemGen *pItemGen; // ecx@44
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1609 int v16; // ecx@46
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1610 signed int pickedObjectPID; // eax@55
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1611 signed int v18b;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1612 signed int pickedObjectID; // ecx@63
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1613 BLVFace *pFace; // eax@69
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1614 const char *pText; // ecx@79
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1615 enum UIMessageType pMessageType2; // esi@110
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1616 enum UIMessageType pMessageType3; // edx@117
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1617 char Str1[200]; // [sp+Ch] [bp-D4h]@129
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1618 unsigned int pX; // [sp+D4h] [bp-Ch]@1
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1619 unsigned int pY; // [sp+D8h] [bp-8h]@1
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1620
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1621 pMouse->uPointingObjectID = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1622 pMouse->GetClickPos(&pX, &pY);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1623 if ( pX < 0 || pX > window->GetWidth() - 1 || pY < 0 || pY > window->GetHeight() - 1 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1624 return;
2541
a902abdfc7f2 1. Renamed class Game to class Engine.
a.parshin
parents: 2524
diff changeset
1625 if ( current_screen_type == SCREEN_GAME )
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1626 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1627 if ( pX <= (window->GetWidth() - 1) * 0.73125 && pY <= (window->GetHeight() - 1) * 0.73125 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1628 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1629 //if ( pRenderer->pRenderD3D ) // inlined mm8::4C1E01
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1630 {
2541
a902abdfc7f2 1. Renamed class Game to class Engine.
a.parshin
parents: 2524
diff changeset
1631 pickedObjectPID = pEngine->pVisInstance->get_picked_object_zbuf_val();
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1632 if ( pX < (unsigned int)pViewport->uScreen_TL_X || pX > (unsigned int)pViewport->uScreen_BR_X
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1633 || pY < (unsigned int)pViewport->uScreen_TL_Y || pY > (unsigned int)pViewport->uScreen_BR_Y )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1634 pickedObjectPID = -1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1635 if ( pickedObjectPID == -1 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1636 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1637 if ( uLastPointedObjectID != 0 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1638 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1639 pFooterString[0] = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1640 bForceDrawFooter = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1641 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1642 uLastPointedObjectID = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1643 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1644 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1645 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1646 /*else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1647 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1648 v18 = pRenderer->pActiveZBuffer[pX + pSRZBufferLineOffsets[pY]];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1649 }*/
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1650 pMouse->uPointingObjectID = (unsigned __int16)pickedObjectPID;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1651 pickedObjectID = (signed)PID_ID(pickedObjectPID);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1652 if ( PID_TYPE(pickedObjectPID) == OBJECT_Item )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1653 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1654 if ( pObjectList->pObjects[pSpriteObjects[pickedObjectID].uObjectDescID].uFlags & 0x10 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1655 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1656 pMouse->uPointingObjectID = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1657 pFooterString[0] = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1658 bForceDrawFooter = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1659 uLastPointedObjectID = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1660 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1661 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1662 if ( pickedObjectPID >= 0x2000000u || pParty->pPickedItem.uItemID )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1663 {
2566
30eb6dcac768 big spell fx overhaul
a.parshin
parents: 2554
diff changeset
1664 GameUI_SetFooterString(pSpriteObjects[pickedObjectID].containing_item.GetDisplayName());
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1665 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1666 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1667 {
2566
30eb6dcac768 big spell fx overhaul
a.parshin
parents: 2554
diff changeset
1668 sprintfex(pTmpBuf.data(), pGlobalTXT_LocalizationStrings[470], pSpriteObjects[pickedObjectID].containing_item.GetDisplayName());// "Get %s"
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1669 GameUI_SetFooterString(pTmpBuf.data());
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1670 } //intentional fallthrough
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1671 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1672 else if ( PID_TYPE(pickedObjectPID) == OBJECT_Decoration )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1673 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1674 if ( !pLevelDecorations[pickedObjectID].uEventID )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1675 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1676 if ( pLevelDecorations[pickedObjectID].IsInteractive() )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1677 pText = pNPCTopics[stru_5E4C90_MapPersistVars._decor_events[pLevelDecorations[pickedObjectID]._idx_in_stru123 - 75] + 380].pTopic;//íåâåðíî äëÿ êîñòðà
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1678 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1679 pText = pDecorationList->pDecorations[pLevelDecorations[pickedObjectID].uDecorationDescID].field_20;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1680 GameUI_SetFooterString(pText);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1681 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1682 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1683 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1684 char* hintString = GetEventHintString(pLevelDecorations[pickedObjectID].uEventID);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1685 if ( hintString != '\0' )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1686 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1687 GameUI_SetFooterString(hintString);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1688 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1689 } //intentional fallthrough
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1690 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1691 else if ( PID_TYPE(pickedObjectPID) == OBJECT_BModel )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1692 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1693 if ( pickedObjectPID < 0x2000000u )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1694 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1695 char* newString = nullptr;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1696 if ( uCurrentlyLoadedLevelType != LEVEL_Indoor )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1697 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1698 v18b = (signed int)(unsigned __int16)pickedObjectPID >> 9;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1699 short triggeredId = pOutdoor->pBModels[v18b].pFaces[pickedObjectID & 0x3F].sCogTriggeredID;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1700 if (triggeredId != 0)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1701 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1702 newString = GetEventHintString(pOutdoor->pBModels[v18b].pFaces[pickedObjectID & 0x3F].sCogTriggeredID);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1703 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1704 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1705 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1706 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1707 pFace = &pIndoor->pFaces[pickedObjectID];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1708 if ( pFace->uAttributes & FACE_INDICATE )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1709 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1710 unsigned short eventId = pIndoor->pFaceExtras[pFace->uFaceExtraID].uEventID;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1711 if (eventId != 0)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1712 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1713 newString = GetEventHintString(pIndoor->pFaceExtras[pFace->uFaceExtraID].uEventID);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1714 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1715 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1716 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1717 if (newString)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1718 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1719 GameUI_SetFooterString(newString);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1720 if ( pMouse->uPointingObjectID == 0 && uLastPointedObjectID != 0)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1721 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1722 pFooterString[0] = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1723 bForceDrawFooter = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1724 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1725 uLastPointedObjectID = pMouse->uPointingObjectID;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1726 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1727 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1728 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1729 pMouse->uPointingObjectID = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1730 pFooterString[0] = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1731 bForceDrawFooter = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1732 uLastPointedObjectID = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1733 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1734 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1735 else if ( PID_TYPE(pickedObjectPID) == OBJECT_Actor )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1736 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1737 if ( pickedObjectPID >= 0x2000000 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1738 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1739 pMouse->uPointingObjectID = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1740 if ( uLastPointedObjectID != 0 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1741 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1742 pFooterString[0] = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1743 bForceDrawFooter = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1744 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1745 uLastPointedObjectID = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1746 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1747 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1748 if ( pActors[pickedObjectID].dword_000334_unique_name )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1749 pText = pMonsterStats->pPlaceStrings[pActors[pickedObjectID].dword_000334_unique_name];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1750 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1751 pText = pMonsterStats->pInfos[pActors[pickedObjectID].pMonsterInfo.uID].pName;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1752 GameUI_SetFooterString(pText); //intentional fallthrough
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1753 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1754 if ( pMouse->uPointingObjectID == 0 && uLastPointedObjectID != 0)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1755 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1756 pFooterString[0] = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1757 bForceDrawFooter = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1758 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1759 uLastPointedObjectID = pMouse->uPointingObjectID;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1760 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1761 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1762 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1763 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1764 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1765 for (int i = uNumVisibleWindows; i > 0; --i)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1766 {
2544
c674d547cc7c GUIWindow switch logic refactored into behaviour classes
a.parshin
parents: 2541
diff changeset
1767 pWindow = pWindowList[pVisibleWindowsIdxs[i] - 1];
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1768 if ( (signed int)pX >= (signed int)pWindow->uFrameX && (signed int)pX <= (signed int)pWindow->uFrameZ
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1769 && (signed int)pY >= (signed int)pWindow->uFrameY && (signed int)pY <= (signed int)pWindow->uFrameW )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1770 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1771 for ( pButton = pWindow->pControlsHead; pButton != nullptr; pButton = pButton->pNext )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1772 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1773 switch ( pButton->uButtonType )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1774 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1775 case 1://for dialogue window
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1776 if ( (signed int)pX >= (signed int)pButton->uX && (signed int)pX <= (signed int)pButton->uZ
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1777 && (signed int)pY >= (signed int)pButton->uY && (signed int)pY <= (signed int)pButton->uW )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1778 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1779 pMessageType1 = (UIMessageType)pButton->field_1C;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1780 if ( pMessageType1 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1781 pMessageQueue_50CBD0->AddGUIMessage(pMessageType1, pButton->msg_param, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1782 GameUI_SetFooterString(pButton->pButtonName);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1783 uLastPointedObjectID = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1784 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1785 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1786 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1787 case 2://hovering over portraits
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1788 if (pButton->uWidth != 0 && pButton->uHeight != 0)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1789 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1790 uint distW = pX - pButton->uX;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1791 uint distY = pY - pButton->uY;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1792
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1793 double ratioX = 1.0 * (distW*distW) / (pButton->uWidth*pButton->uWidth);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1794 double ratioY = 1.0 * (distY*distY) / (pButton->uHeight*pButton->uHeight);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1795
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1796 if (ratioX + ratioY < 1.0)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1797 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1798 pMessageType2 = (UIMessageType)pButton->field_1C;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1799 if ( pMessageType2 != 0 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1800 pMessageQueue_50CBD0->AddGUIMessage(pMessageType2, pButton->msg_param, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1801 GameUI_SetFooterString(pButton->pButtonName); // for character name
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1802 uLastPointedObjectID = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1803 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1804 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1805 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1806 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1807 case 3:// click on skill
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1808 if ( pX >= pButton->uX && pX <= pButton->uZ
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1809 && pY >= pButton->uY && pY <= pButton->uW )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1810 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1811 requiredSkillpoints = (LOBYTE(pPlayers[uActiveCharacter]->pActiveSkills[pButton->msg_param]) & 0x3F) + 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1812 if ( pPlayers[uActiveCharacter]->uSkillPoints < requiredSkillpoints )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1813 sprintf(Str1, pGlobalTXT_LocalizationStrings[469], requiredSkillpoints - pPlayers[uActiveCharacter]->uSkillPoints);// "You need %d more Skill Points to advance here"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1814 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1815 sprintf(Str1, pGlobalTXT_LocalizationStrings[468], requiredSkillpoints);// "Clicking here will spend %d Skill Points"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1816 GameUI_SetFooterString(Str1);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1817 uLastPointedObjectID = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1818 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1819 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1820 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1821 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1822 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1823 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1824 if ( pWindow->uFrameHeight == 480 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1825 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1826 //DebugBreak(); //Why is this condition here (in the original too)? Might check fullscreen windows. Let Silvo know if you find out
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1827 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1828 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1829 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1830 //The game never gets to this point even in the original. It's also bugged(neither branch displays anything).
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1831 //TODO fix these and move them up before the window check loop.
2541
a902abdfc7f2 1. Renamed class Game to class Engine.
a.parshin
parents: 2524
diff changeset
1832 if ( current_screen_type == SCREEN_CHEST )
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1833 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1834 Chest::ChestUI_WritePointedObjectStatusString();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1835 if ( uLastPointedObjectID != 0 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1836 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1837 pFooterString[0] = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1838 bForceDrawFooter = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1839 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1840 uLastPointedObjectID = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1841 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1842 }
2541
a902abdfc7f2 1. Renamed class Game to class Engine.
a.parshin
parents: 2524
diff changeset
1843 else if ( current_screen_type == SCREEN_HOUSE )
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1844 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1845 if ( dialog_menu_id != HOUSE_DIALOGUE_SHOP_BUY_STANDARD
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1846 || (v16 = pRenderer->pActiveZBuffer[pX + pSRZBufferLineOffsets[pY]], v16 == 0)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1847 || v16 == -65536 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1848 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1849 if ( uLastPointedObjectID != 0 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1850 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1851 pFooterString[0] = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1852 bForceDrawFooter = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1853 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1854 uLastPointedObjectID = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1855 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1856 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1857 pItemGen = (ItemGen *)((char *)&pParty->pPickedItem + 36 * (v16 + 12 * (unsigned int)window_SpeakInHouse->ptr_1C) + 4);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1858 GameUI_SetFooterString(pItemGen->GetDisplayName());
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1859 pFooterString[0] = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1860 bForceDrawFooter = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1861 uLastPointedObjectID = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1862 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1863 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1864 if ( pY < 350 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1865 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1866 v14 = pRenderer->pActiveZBuffer[pX + pSRZBufferLineOffsets[pY]];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1867 if ( v14 == 0 || v14 == -65536 || v14 >= 5000 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1868 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1869 if ( pMouse->uPointingObjectID == 0 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1870 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1871 if ( uLastPointedObjectID != 0 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1872 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1873 pFooterString[0] = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1874 bForceDrawFooter = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1875 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1876 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1877 uLastPointedObjectID = pMouse->uPointingObjectID;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1878 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1879 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1880 pItemGen = (ItemGen *)&pPlayers[uActiveCharacter]->pInventoryItemList[v14-1];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1881 GameUI_SetFooterString(pItemGen->GetDisplayName());
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1882 pFooterString[0] = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1883 bForceDrawFooter = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1884 uLastPointedObjectID = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1885 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1886 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1887 }
2544
c674d547cc7c GUIWindow switch logic refactored into behaviour classes
a.parshin
parents: 2541
diff changeset
1888 if ( (signed int)pX >= (signed int)pWindowList[0]->uFrameX && (signed int)pX <= (signed int)pWindowList[0]->uFrameZ
c674d547cc7c GUIWindow switch logic refactored into behaviour classes
a.parshin
parents: 2541
diff changeset
1889 && (signed int)pY >= (signed int)pWindowList[0]->uFrameY && (signed int)pY <= (signed int)pWindowList[0]->uFrameW )
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1890 {
2544
c674d547cc7c GUIWindow switch logic refactored into behaviour classes
a.parshin
parents: 2541
diff changeset
1891 for ( pButton = pWindowList[0]->pControlsHead; pButton != nullptr; pButton = pButton->pNext )
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1892 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1893 switch (pButton->uButtonType)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1894 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1895 case 1:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1896 if ( (signed int)pX >= (signed int)pButton->uX && (signed int)pX <= (signed int)pButton->uZ
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1897 && (signed int)pY >= (signed int)pButton->uY && (signed int)pY <= (signed int)pButton->uW )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1898 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1899 pMessageType3 = (UIMessageType)pButton->field_1C;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1900 if ( pMessageType3 == 0 ) // For books
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1901 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1902 GameUI_SetFooterString(pButton->pButtonName);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1903 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1904 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1905 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1906 pMessageQueue_50CBD0->AddGUIMessage(pMessageType3, pButton->msg_param, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1907 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1908 uLastPointedObjectID = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1909 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1910 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1911 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1912 case 2://hovering over portraits
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1913 if (pButton->uWidth != 0 && pButton->uHeight != 0)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1914 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1915 uint distW = pX - pButton->uX;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1916 uint distY = pY - pButton->uY;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1917
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1918 double ratioX = 1.0 * (distW*distW) / (pButton->uWidth*pButton->uWidth);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1919 double ratioY = 1.0 * (distY*distY) / (pButton->uHeight*pButton->uHeight);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1920
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1921 if (ratioX + ratioY < 1.0)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1922 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1923 pMessageType2 = (UIMessageType)pButton->field_1C;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1924 if ( pMessageType2 != 0 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1925 pMessageQueue_50CBD0->AddGUIMessage(pMessageType2, pButton->msg_param, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1926 GameUI_SetFooterString(pButton->pButtonName); // for character name
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1927 uLastPointedObjectID = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1928 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1929 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1930 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1931 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1932 case 3:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1933 if ( pX >= pButton->uX && pX <= pButton->uZ
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1934 && pY >= pButton->uY && pY <= pButton->uW )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1935 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1936 requiredSkillpoints = (LOBYTE(pPlayers[uActiveCharacter]->pActiveSkills[pButton->msg_param]) & 0x3F) + 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1937 if ( pPlayers[uActiveCharacter]->uSkillPoints < requiredSkillpoints )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1938 sprintf(Str1, pGlobalTXT_LocalizationStrings[469], requiredSkillpoints - pPlayers[uActiveCharacter]->uSkillPoints);// "You need %d more Skill Points to advance here"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1939 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1940 sprintf(Str1, pGlobalTXT_LocalizationStrings[468], requiredSkillpoints);// "Clicking here will spend %d Skill Points"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1941 GameUI_SetFooterString(Str1);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1942 uLastPointedObjectID = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1943 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1944 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1945 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1946 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1947 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1948 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1949 //pMouse->uPointingObjectID = sub_46A99B(); //for software
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1950 if ( uLastPointedObjectID != 0 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1951 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1952 pFooterString[0] = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1953 bForceDrawFooter = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1954 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1955 uLastPointedObjectID = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1956 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1957 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1958
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1959 //----- (0044158F) --------------------------------------------------------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1960 void GameUI_DrawCharacterSelectionFrame()
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1961 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1962 if ( uActiveCharacter )
2575
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
1963 pRenderer->DrawTextureAlphaNew(
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
1964 (pPlayerPortraitsXCoords_For_PlayerBuffAnimsDrawing[uActiveCharacter - 1] - 9)/640.0f,
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
1965 380/480.0f,
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
1966 game_ui_player_selection_frame);
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1967 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1968
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1969 //----- (0044162D) --------------------------------------------------------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1970 void GameUI_DrawPartySpells()
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1971 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1972 unsigned int v0; // ebp@1
2575
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
1973 Image *spell_texture; // [sp-4h] [bp-1Ch]@12
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
1974 //Texture_MM7 *v9; // [sp-4h] [bp-1Ch]@21
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1975
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1976 v0 = (signed __int64)((double)GetTickCount() * 0.050000001);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1977 //v1 = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1978 for (uint i = 0; i < 14; ++i)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1979 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1980 //v2 = byte_4E5DD8[v1];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1981 if (pParty->pPartyBuffs[byte_4E5DD8[i]].uExpireTime)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1982 {
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
1983 Texture_MM7* tex = pIcons_LOD->GetTexture(pTextureIDs_PartyBuffIcons[i]);
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1984 //v3 = pTextureIDs_PartyBuffIcons[i];
2575
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
1985 pRenderer->_4A65CC(
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
1986 pPartySpellbuffsUI_XYs[i][0],
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
1987 pPartySpellbuffsUI_XYs[i][1], tex, tex,
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
1988 v0 + 20 * pPartySpellbuffsUI_smthns[i], 0, 63
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
1989 );
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1990 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1991 //++v1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1992 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1993 //while ( v1 < 14 );
2541
a902abdfc7f2 1. Renamed class Game to class Engine.
a.parshin
parents: 2524
diff changeset
1994 if (current_screen_type == SCREEN_GAME || current_screen_type == SCREEN_NPC_DIALOGUE)
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1995 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1996 if (pParty->FlyActive())
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1997 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1998 if ( pParty->bFlying )
2575
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
1999 spell_texture = pIconsFrameTable->GetFrame(uIconIdx_FlySpell, v0)->texture;
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2000 else
2575
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
2001 spell_texture = pIconsFrameTable->GetFrame(uIconIdx_FlySpell, 0)->texture;
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2002 //if ( pRenderer->pRenderD3D )
2575
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
2003 pRenderer->DrawTextureAlphaNew(8/640.0f, 8/480.0f, spell_texture);
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2004 /*else
2524
c7264ab7132f Main menu rendered using d3d11
a.parshin
parents: 2516
diff changeset
2005 pRenderer->DrawTextureIndexedAlpha(8, 8, v7);*/
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2006 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2007 if ( pParty->WaterWalkActive() )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2008 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2009 if ( pParty->uFlags & PARTY_FLAGS_1_STANDING_ON_WATER )
2575
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
2010 spell_texture = pIconsFrameTable->GetFrame(uIconIdx_WaterWalk, v0)->texture;
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2011 else
2575
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
2012 spell_texture = pIconsFrameTable->GetFrame(uIconIdx_WaterWalk, 0)->texture;
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2013 //if ( pRenderer->pRenderD3D )
2575
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
2014 pRenderer->DrawTextureAlphaNew(396/640.0f, 8/480.0f, spell_texture);
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2015 /*else
2524
c7264ab7132f Main menu rendered using d3d11
a.parshin
parents: 2516
diff changeset
2016 pRenderer->DrawTextureIndexedAlpha(396, 8, v9);*/
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2017 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2018 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2019 for (uint i = 0; i < 4; ++i)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2020 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2021 if ( pParty->pPlayers[i].pPlayerBuffs[PLAYER_BUFF_HAMMERHANDS].uExpireTime )
2575
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
2022 pRenderer->DrawTextureAlphaNew((pPlayerPortraitsXCoords_For_PlayerBuffAnimsDrawing[i] + 72)/640.0f, 427/480.0f, game_ui_playerbuff_hammerhands);
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2023 if ( pParty->pPlayers[i].pPlayerBuffs[PLAYER_BUFF_BLESS].uExpireTime )
2575
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
2024 pRenderer->DrawTextureAlphaNew((pPlayerPortraitsXCoords_For_PlayerBuffAnimsDrawing[i] + 72)/640.0f, 393/480.0f, game_ui_playerbuff_bless);
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2025 if ( pParty->pPlayers[i].pPlayerBuffs[PLAYER_BUFF_PRESERVATION].uExpireTime )
2575
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
2026 pRenderer->DrawTextureAlphaNew((pPlayerPortraitsXCoords_For_PlayerBuffAnimsDrawing[i] + 72)/640.0f, 410/480.0f, game_ui_playerbuff_preservation);
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2027 if ( pParty->pPlayers[i].pPlayerBuffs[PLAYER_BUFF_PAIN_REFLECTION].uExpireTime )
2575
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
2028 pRenderer->DrawTextureAlphaNew((pPlayerPortraitsXCoords_For_PlayerBuffAnimsDrawing[i] + 72)/640.0f, 444/480.0f, game_ui_playerbuff_pain_reflection);
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2029 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2030 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2031
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2032 //----- (004921C1) --------------------------------------------------------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2033 void GameUI_DrawPortraits(unsigned int _this)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2034 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2035 unsigned int face_expression_ID; // eax@17
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2036 PlayerFrame *pFrame; // eax@21
2575
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
2037 Image *pPortrait; // [sp-4h] [bp-1Ch]@27
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2038
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2039 if ( _A750D8_player_speech_timer )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2040 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2041 _A750D8_player_speech_timer -= (signed int)pMiscTimer->uTimeElapsed;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2042 if ( _A750D8_player_speech_timer <= 0 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2043 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2044 if ( pPlayers[uSpeakingCharacter]->CanAct() )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2045 pPlayers[uSpeakingCharacter]->PlaySound(PlayerSpeechID, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2046 _A750D8_player_speech_timer = 0i64;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2047 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2048 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2049
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2050 for (uint i = 0; i < 4; ++i)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2051 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2052 Player* pPlayer = &pParty->pPlayers[i];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2053 if ( pPlayer->IsEradicated() )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2054 {
2575
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
2055 pPortrait = game_ui_player_face_eradicated;
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2056 if ( pParty->pPartyBuffs[PARTY_BUFF_INVISIBILITY].uExpireTime )
2575
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
2057 pRenderer->DrawTextureGrayShade(pPlayerPortraitsXCoords_For_PlayerBuffAnimsDrawing[i]/640.0f, 388/480.0f, pPortrait);
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2058 else
2575
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
2059 pRenderer->DrawTextureAlphaNew((pPlayerPortraitsXCoords_For_PlayerBuffAnimsDrawing[i] + 1)/640.0f, 388/480.0f, pPortrait);
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2060 if ( pPlayer->pPlayerBuffs[PLAYER_BUFF_BLESS].uExpireTime | pPlayer->pPlayerBuffs[PLAYER_BUFF_HASTE].uExpireTime
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2061 | pPlayer->pPlayerBuffs[PLAYER_BUFF_HEROISM].uExpireTime | pPlayer->pPlayerBuffs[PLAYER_BUFF_SHIELD].uExpireTime
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2062 | pPlayer->pPlayerBuffs[PLAYER_BUFF_STONESKIN].uExpireTime )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2063 sub_441A4E(i);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2064 continue;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2065 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2066 if (pPlayer->IsDead())
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2067 {
2575
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
2068 pPortrait = game_ui_player_face_dead;
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2069 if ( pParty->pPartyBuffs[PARTY_BUFF_INVISIBILITY].uExpireTime )
2575
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
2070 pRenderer->DrawTextureGrayShade(pPlayerPortraitsXCoords_For_PlayerBuffAnimsDrawing[i]/640.0f, 388/480.0f, pPortrait);
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2071 else
2575
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
2072 pRenderer->DrawTextureAlphaNew((pPlayerPortraitsXCoords_For_PlayerBuffAnimsDrawing[i] + 1)/640.0f, 388/480.0f, pPortrait);
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2073 if ( pPlayer->pPlayerBuffs[PLAYER_BUFF_BLESS].uExpireTime | pPlayer->pPlayerBuffs[PLAYER_BUFF_HASTE].uExpireTime
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2074 | pPlayer->pPlayerBuffs[PLAYER_BUFF_HEROISM].uExpireTime | pPlayer->pPlayerBuffs[PLAYER_BUFF_SHIELD].uExpireTime
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2075 | pPlayer->pPlayerBuffs[PLAYER_BUFF_STONESKIN].uExpireTime )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2076 sub_441A4E(i);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2077 continue;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2078 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2079 face_expression_ID = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2080 for ( uint j = 0; j < pPlayerFrameTable->uNumFrames; ++j )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2081 if ( pPlayerFrameTable->pFrames[j].expression == pPlayer->expression )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2082 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2083 face_expression_ID = j;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2084 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2085 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2086 if ( face_expression_ID == 0 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2087 face_expression_ID = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2088 if (pPlayer->expression == CHARACTER_EXPRESSION_21)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2089 pFrame = pPlayerFrameTable->GetFrameBy_y(&pPlayer->_expression21_frameset, &pPlayer->_expression21_animtime, pMiscTimer->uTimeElapsed);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2090 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2091 pFrame = pPlayerFrameTable->GetFrameBy_x(face_expression_ID, pPlayer->uExpressionTimePassed);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2092 if (pPlayer->field_1AA2 != pFrame->uTextureID - 1 || _this )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2093 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2094 pPlayer->field_1AA2 = pFrame->uTextureID - 1;
2575
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
2095 pPortrait = game_ui_player_faces[i][pPlayer->field_1AA2];//pFace = (Texture_MM7 *)game_ui_player_faces[i][pFrame->uTextureID];
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2096 if ( pParty->pPartyBuffs[PARTY_BUFF_INVISIBILITY].uExpireTime )
2575
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
2097 pRenderer->DrawTextureGrayShade(pPlayerPortraitsXCoords_For_PlayerBuffAnimsDrawing[i]/640.0f, 388/480.0f, pPortrait);
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2098 else
2575
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
2099 pRenderer->DrawTextureAlphaNew((pPlayerPortraitsXCoords_For_PlayerBuffAnimsDrawing[i] + 1)/640.0f, 388/480.0f, pPortrait);
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2100 if ( pPlayer->pPlayerBuffs[PLAYER_BUFF_BLESS].uExpireTime | pPlayer->pPlayerBuffs[PLAYER_BUFF_HASTE].uExpireTime
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2101 | pPlayer->pPlayerBuffs[PLAYER_BUFF_HEROISM].uExpireTime | pPlayer->pPlayerBuffs[PLAYER_BUFF_SHIELD].uExpireTime
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2102 | pPlayer->pPlayerBuffs[PLAYER_BUFF_STONESKIN].uExpireTime )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2103 sub_441A4E(i);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2104 continue;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2105 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2106 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2107 if ( pParty->bTurnBasedModeOn == 1 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2108 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2109 if ( pTurnEngine->turn_stage != TE_WAIT )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2110 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2111 if (PID_TYPE(pTurnEngine->pQueue[0].uPackedID) == OBJECT_Player)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2112 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2113 if ( pTurnEngine->uActorQueueSize > 0 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2114 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2115 for (uint i = 0; i < (uint)pTurnEngine->uActorQueueSize; ++i)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2116 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2117 if (PID_TYPE(pTurnEngine->pQueue[i].uPackedID) != OBJECT_Player)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2118 break;
2572
d87bfbd3bb3b Step towards unification of Texture and RGBTexture (class Image)
a.parshin
parents: 2566
diff changeset
2119
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
2120 auto alert_texture = game_ui_player_alert_green;
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
2121 if (pParty->GetRedAlert())
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
2122 alert_texture = game_ui_player_alert_red;
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
2123 else if (pParty->GetYellowAlert())
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
2124 alert_texture = game_ui_player_alert_yellow;
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
2125
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
2126 pRenderer->DrawTextureAlphaNew(
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
2127 (pPlayerPortraitsXCoords_For_PlayerBuffAnimsDrawing[PID_ID(pTurnEngine->pQueue[i].uPackedID)] - 4)/640.0f,
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
2128 385/480.0f,
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
2129 alert_texture
2572
d87bfbd3bb3b Step towards unification of Texture and RGBTexture (class Image)
a.parshin
parents: 2566
diff changeset
2130 );
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2131 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2132 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2133 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2134 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2135 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2136 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2137 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2138 for (uint i = 0; i < 4; ++i)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2139 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2140 if (pParty->pPlayers[i].CanAct() && !pParty->pPlayers[i].uTimeToRecovery)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2141 {
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
2142 auto alert_texture = game_ui_player_alert_green;
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
2143 if (pParty->GetRedAlert())
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
2144 alert_texture = game_ui_player_alert_red;
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
2145 else if (pParty->GetYellowAlert())
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
2146 alert_texture = game_ui_player_alert_yellow;
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
2147
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
2148 pRenderer->DrawTextureAlphaNew(
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
2149 (pPlayerPortraitsXCoords_For_PlayerBuffAnimsDrawing[i] - 4)/640.0f,
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
2150 385/480.0f,
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
2151 alert_texture);
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2152 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2153 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2154 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2155 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2156
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2157 //----- (00441D38) --------------------------------------------------------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2158 void GameUI_DrawMinimap(unsigned int uX, unsigned int uY, unsigned int uZ, unsigned int uW, unsigned int uZoom, unsigned int bRedrawOdmMinimap)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2159 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2160 int uHeight; // ebx@6
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2161 signed int pW; // ebx@23
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2162 int v15; // eax@23
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2163 double v20; // st7@30
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2164 signed int v27; // eax@37
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2165 //unsigned __int16 *v28; // ecx@37
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2166 signed int v29; // edi@40
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2167 int pPoint_X; // edi@72
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2168 int pPoint_Y; // ebx@72
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2169 unsigned int lPitch; // [sp+20h] [bp-34h]@1
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2170 signed int pY; // [sp+20h] [bp-34h]@23
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2171 signed int pX; // [sp+24h] [bp-30h]@23
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2172 signed int v70; // [sp+24h] [bp-30h]@37
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2173 signed int uBluea; // [sp+28h] [bp-2Ch]@37
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2174 int v73; // [sp+2Ch] [bp-28h]@30
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2175 signed int uCenterY; // [sp+48h] [bp-Ch]@1
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2176 signed int uCenterX; // [sp+4Ch] [bp-8h]@1
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2177 signed int uWidth; // [sp+5Ch] [bp+8h]@30
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2178 signed int pZ; // [sp+60h] [bp+Ch]@23
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2179 float uWb; // [sp+60h] [bp+Ch]@30
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2180 unsigned int pColor;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2181
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2182 uCenterX = (uX + uZ) / 2;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2183 uCenterY = (uY + uW) / 2;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2184 lPitch = pRenderer->uTargetSurfacePitch;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2185 bool bWizardEyeActive = pParty->WizardEyeActive();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2186 int uWizardEyeSkillLevel = pParty->WizardEyeSkillLevel();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2187 if ( CheckHiredNPCSpeciality(Cartographer) )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2188 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2189 bWizardEyeActive = true;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2190 uWizardEyeSkillLevel = 2;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2191 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2192
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2193 if ( wizard_eye )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2194 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2195 bWizardEyeActive = true;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2196 uWizardEyeSkillLevel = 3;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2197 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2198 pRenderer->SetRasterClipRect(uX, uY, uZ - 1, uW - 1);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2199 uHeight = uW - uY;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2200 uWidth = uZ - uX;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2201
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2202 if ( uCurrentlyLoadedLevelType == LEVEL_Outdoor)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2203 {
2572
d87bfbd3bb3b Step towards unification of Texture and RGBTexture (class Image)
a.parshin
parents: 2566
diff changeset
2204 uchar* pMapLod0 = pIcons_LOD->pTextures[viewparams->uTextureID_LocationMap].paletted_pixels;
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2205 ushort* pPal = pIcons_LOD->pTextures[viewparams->uTextureID_LocationMap].pPalette16;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2206 v73 = (1 << (pIcons_LOD->pTextures[viewparams->uTextureID_LocationMap].uWidthLn2 + 16)) / (signed int)uZoom;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2207 v20 = (double)(pParty->vPosition.x + 32768) / (double)(1 << (16 - pIcons_LOD->pTextures[viewparams->uTextureID_LocationMap].uWidthLn2));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2208 uWb = (double)(32768 - pParty->vPosition.y) / (double)(1 << (16 - pIcons_LOD->pTextures[viewparams->uTextureID_LocationMap].uWidthLn2));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2209 switch (uZoom)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2210 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2211 case 512:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2212 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2213 v20 = v20 - (double)(uWidth / 2);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2214 uWb = uWb - (double)(uHeight / 2);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2215 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2216 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2217 case 1024:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2218 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2219 v20 = v20 - (double)(uWidth / 4);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2220 uWb = uWb - (double)(uHeight / 4);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2221 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2222 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2223 case 2048:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2224 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2225 v20 = v20 - (double)(uWidth / 8);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2226 uWb = uWb - (double)(uHeight / 8);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2227 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2228 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2229 default: assert(false);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2230 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2231
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2232 static unsigned __int16 pOdmMinimap[117][137];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2233 assert(sizeof(pOdmMinimap) == 137 * 117 * sizeof(short));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2234
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2235 v70 = floorf(v20 * 65536.0 + 0.5f);//LODWORD(v24);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2236 uBluea = floorf(uWb * 65536.0 + 0.5f);//LODWORD(v25);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2237 v27 = uBluea >> 16;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2238 //v28 = &pRenderer->pTargetSurface[uX + uY * lPitch];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2239
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2240 if (pMapLod0 && bRedrawOdmMinimap)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2241 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2242 assert(uWidth == 137 && uHeight == 117);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2243 //auto pMinimap = (unsigned __int16 *)pOdmMinimap;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2244
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2245 ushort mapWidth = pIcons_LOD->pTextures[viewparams->uTextureID_LocationMap].uTextureWidth;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2246
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2247 v29 = v70 >> 16;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2248 for (int y = 0; y < uHeight; ++y)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2249 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2250 uchar* pMapLod0Line = &pMapLod0[v27 * mapWidth];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2251 for (int x = 0; x < uWidth; ++x)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2252 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2253 //*pMinimap++ = pPal[pMapLod0Line[v29]];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2254 pRenderer->WritePixel16(uX + x, uY + y, pPal[pMapLod0Line[v29]]);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2255 v29 = (v70 + x * v73) >> 16;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2256 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2257 uBluea += v73;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2258 v27 = uBluea >> 16;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2259 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2260
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2261 /*v29 = v70 >> 16;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2262 for (int y = 0; y < uHeight; ++y)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2263 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2264 uchar* pMapLod0Line = &pMapLod0[v27 * mapWidth];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2265 for (int x = 0; x < uWidth; ++x)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2266 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2267 //*pMinimap++ = pPal[pMapLod0Line[v29]];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2268 pOdmMinimap[y][x] = pPal[pMapLod0Line[v29]];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2269 v29 = (v70 + x * v73) >> 16;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2270 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2271 v29 = v70 >> 16;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2272 v28 += 137 - uWidth;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2273 uBluea += v73;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2274 v27 = uBluea >> 16;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2275 }*/
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2276 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2277
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2278 /*for (int y = 0; y < 117; ++y)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2279 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2280 for (int x = 0; x < 137; ++x)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2281 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2282 *v28++ = pOdmMinimap[y][x];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2283 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2284 v28 += lPitch - 137;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2285 }*/
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2286 uNumBlueFacesInBLVMinimap = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2287 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2288 else// uCurrentlyLoadedLevelType == LEVEL_Indoor
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2289 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2290 pRenderer->FillRectFast(uX, uY, uZ - uX, uHeight, 0xF);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2291 uNumBlueFacesInBLVMinimap = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2292
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2293 for (uint i = 0; i < (uint)pIndoor->pMapOutlines->uNumOutlines; ++i)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2294 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2295 BLVMapOutline* pOutline = &pIndoor->pMapOutlines->pOutlines[i];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2296 //BLVFace* pFace1 = &pIndoor->pFaces[pOutline->uFace1ID];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2297 //BLVFace* pFace2 = &pIndoor->pFaces[pOutline->uFace2ID];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2298 if (pIndoor->pFaces[pOutline->uFace1ID].Visible() && pIndoor->pFaces[pOutline->uFace2ID].Visible())
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2299 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2300 if ( pOutline->uFlags & 1 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2301 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2302 if (bWizardEyeActive && uWizardEyeSkillLevel >= 3 &&
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2303 (pIndoor->pFaces[pOutline->uFace1ID].Clickable() || pIndoor->pFaces[pOutline->uFace2ID].Clickable()) &&
2508
491f0babd563 use_music_folder
Ritor1
parents: 2502
diff changeset
2304 (pIndoor->pFaceExtras[pIndoor->pFaces[pOutline->uFace1ID].uFaceExtraID].uEventID
491f0babd563 use_music_folder
Ritor1
parents: 2502
diff changeset
2305 || pIndoor->pFaceExtras[pIndoor->pFaces[pOutline->uFace2ID].uFaceExtraID].uEventID))
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2306 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2307 if (uNumBlueFacesInBLVMinimap < 49)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2308 pBlueFacesInBLVMinimapIDs[uNumBlueFacesInBLVMinimap++] = i;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2309 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2310 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2311 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2312 pX = uCenterX + ((signed int)(((unsigned int)(fixpoint_mul(uZoom, pIndoor->pVertices[pIndoor->pMapOutlines->pOutlines[i].uVertex1ID].x)) << 16) - uZoom * pParty->vPosition.x) >> 16);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2313 pY = uCenterY - ((signed int)(((unsigned int)(fixpoint_mul(uZoom, pIndoor->pVertices[pIndoor->pMapOutlines->pOutlines[i].uVertex1ID].y)) << 16) - uZoom * pParty->vPosition.y) >> 16);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2314 pZ = uCenterX + ((signed int)(((unsigned int)(fixpoint_mul(uZoom, pIndoor->pVertices[pIndoor->pMapOutlines->pOutlines[i].uVertex2ID].x)) << 16) - uZoom * pParty->vPosition.x) >> 16);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2315 pW = uCenterY - ((signed int)(((unsigned int)(fixpoint_mul(uZoom, pIndoor->pVertices[pIndoor->pMapOutlines->pOutlines[i].uVertex2ID].y)) << 16) - uZoom * pParty->vPosition.y) >> 16);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2316 v15 = abs(pOutline->sZ - pParty->vPosition.z) / 8;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2317 if ( v15 > 100 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2318 v15 = 100;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2319 pRenderer->RasterLine2D(pX, pY, pZ, pW, viewparams->pPalette[-v15 + 200]);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2320 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2321 continue;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2322 }
2508
491f0babd563 use_music_folder
Ritor1
parents: 2502
diff changeset
2323 if (pIndoor->pFaces[pOutline->uFace1ID].uAttributes & FACE_UNKNOW7
491f0babd563 use_music_folder
Ritor1
parents: 2502
diff changeset
2324 || pIndoor->pFaces[pOutline->uFace2ID].uAttributes & FACE_UNKNOW7)
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2325 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2326 pOutline->uFlags = pOutline->uFlags | 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2327 pIndoor->_visible_outlines[i >> 3] |= 1 << (7 - i % 8);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2328 if (bWizardEyeActive && uWizardEyeSkillLevel >= 3 &&
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2329 (pIndoor->pFaces[pOutline->uFace1ID].Clickable() || pIndoor->pFaces[pOutline->uFace2ID].Clickable()) &&
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2330 (pIndoor->pFaceExtras[pIndoor->pFaces[pOutline->uFace1ID].uFaceExtraID].uEventID || pIndoor->pFaceExtras[pIndoor->pFaces[pOutline->uFace2ID].uFaceExtraID].uEventID))
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2331 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2332 if (uNumBlueFacesInBLVMinimap < 49)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2333 pBlueFacesInBLVMinimapIDs[uNumBlueFacesInBLVMinimap++] = i;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2334 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2335 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2336 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2337 pX = uCenterX + ((signed int)(((unsigned int)(fixpoint_mul(uZoom, pIndoor->pVertices[pIndoor->pMapOutlines->pOutlines[i].uVertex1ID].x)) << 16) - uZoom * pParty->vPosition.x) >> 16);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2338 pY = uCenterY - ((signed int)(((unsigned int)(fixpoint_mul(uZoom, pIndoor->pVertices[pIndoor->pMapOutlines->pOutlines[i].uVertex1ID].y)) << 16) - uZoom * pParty->vPosition.y) >> 16);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2339 pZ = uCenterX + ((signed int)(((unsigned int)(fixpoint_mul(uZoom, pIndoor->pVertices[pIndoor->pMapOutlines->pOutlines[i].uVertex2ID].x)) << 16) - uZoom * pParty->vPosition.x) >> 16);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2340 pW = uCenterY - ((signed int)(((unsigned int)(fixpoint_mul(uZoom, pIndoor->pVertices[pIndoor->pMapOutlines->pOutlines[i].uVertex2ID].y)) << 16) - uZoom * pParty->vPosition.y) >> 16);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2341 v15 = abs(pOutline->sZ - pParty->vPosition.z) / 8;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2342 if ( v15 > 100 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2343 v15 = 100;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2344 pRenderer->RasterLine2D(pX, pY, pZ, pW, viewparams->pPalette[-v15 + 200]);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2345 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2346 continue;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2347 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2348 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2349 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2350
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2351 for (uint i = 0; i < uNumBlueFacesInBLVMinimap; ++i)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2352 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2353 BLVMapOutline* pOutline = &pIndoor->pMapOutlines->pOutlines[pBlueFacesInBLVMinimapIDs[i]];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2354 pX = uCenterX + ((signed int)(((unsigned int)(fixpoint_mul(uZoom, pIndoor->pVertices[pOutline->uVertex1ID].x)) << 16) - uZoom * pParty->vPosition.x) >> 16);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2355 pY = uCenterY - ((signed int)(((unsigned int)(fixpoint_mul(uZoom, pIndoor->pVertices[pOutline->uVertex1ID].y)) << 16) - uZoom * pParty->vPosition.y) >> 16);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2356 pZ = uCenterX + ((signed int)(((unsigned int)(fixpoint_mul(uZoom, pIndoor->pVertices[pOutline->uVertex2ID].x)) << 16) - uZoom * pParty->vPosition.x) >> 16);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2357 pW = uCenterY - ((signed int)(((unsigned int)(fixpoint_mul(uZoom, pIndoor->pVertices[pOutline->uVertex2ID].y)) << 16) - uZoom * pParty->vPosition.y) >> 16);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2358 pRenderer->RasterLine2D(pX, pY, pZ, pW, ui_game_minimap_outline_color);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2359 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2360 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2361
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2362 //draw arrow on the minimap(include. Ritor1)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2363 uint arrow_idx;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2364 unsigned int rotate = pParty->sRotationY & stru_5C6E00->uDoublePiMask;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2365 if ( (signed int)rotate <= 1920 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2366 arrow_idx = 6;
2516
Ritor1
parents: 2508
diff changeset
2367 if ( (signed int)rotate < 1664 )
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2368 arrow_idx = 5;
2516
Ritor1
parents: 2508
diff changeset
2369 if ( (signed int)rotate <= 1408 )
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2370 arrow_idx = 4;
2516
Ritor1
parents: 2508
diff changeset
2371 if ( (signed int)rotate < 1152 )
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2372 arrow_idx = 3;
2516
Ritor1
parents: 2508
diff changeset
2373 if ( (signed int)rotate <= 896 )
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2374 arrow_idx = 2;
2516
Ritor1
parents: 2508
diff changeset
2375 if ( (signed int)rotate < 640 )
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2376 arrow_idx = 1;
2516
Ritor1
parents: 2508
diff changeset
2377 if ( (signed int)rotate <= 384 )
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2378 arrow_idx = 0;
2516
Ritor1
parents: 2508
diff changeset
2379 if ( (signed int)rotate < 128 || (signed int)rotate > 1920 )
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2380 arrow_idx = 7;
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
2381 pRenderer->DrawTextureAlphaNew(
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
2382 (uCenterX - 3)/640.0f,
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
2383 (uCenterY - 3)/480.0f,
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
2384 game_ui_minimap_dirs[arrow_idx]);
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2385
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2386 //draw objects on the minimap
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2387 if ( bWizardEyeActive )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2388 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2389 if ( uWizardEyeSkillLevel >= 2 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2390 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2391 for ( uint i = 0; i < uNumSpriteObjects; ++i )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2392 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2393 if ( !pSpriteObjects[i].uType || !pSpriteObjects[i].uObjectDescID )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2394 continue;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2395 //if (uWizardEyeSkillLevel == 1
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2396 pPoint_X = uCenterX + fixpoint_mul((pSpriteObjects[i].vPosition.x - pParty->vPosition.x), uZoom);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2397 pPoint_Y = uCenterY - fixpoint_mul((pSpriteObjects[i].vPosition.y - pParty->vPosition.y), uZoom);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2398 //if ( pPoint_X >= pRenderer->raster_clip_x && pPoint_X <= pRenderer->raster_clip_z &&
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2399 // pPoint_Y >= pRenderer->raster_clip_y && pPoint_Y <= pRenderer->raster_clip_w)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2400 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2401 if (pObjectList->pObjects[pSpriteObjects[i].uObjectDescID].uFlags & OBJECT_DESC_UNPICKABLE)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2402 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2403 pRenderer->RasterLine2D(pPoint_X, pPoint_Y, pPoint_X, pPoint_Y, ui_game_minimap_projectile_color);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2404 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2405 else if ( uZoom > 512 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2406 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2407 pRenderer->RasterLine2D(pPoint_X - 2, pPoint_Y, pPoint_X - 2, pPoint_Y + 1, ui_game_minimap_treasure_color);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2408 pRenderer->RasterLine2D(pPoint_X - 1, pPoint_Y - 1, pPoint_X - 1, pPoint_Y + 1, ui_game_minimap_treasure_color);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2409 pRenderer->RasterLine2D(pPoint_X, pPoint_Y - 2, pPoint_X, pPoint_Y + 1, ui_game_minimap_treasure_color);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2410 pRenderer->RasterLine2D(pPoint_X + 1, pPoint_Y - 1, pPoint_X + 1, pPoint_Y + 1, ui_game_minimap_treasure_color);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2411 pRenderer->RasterLine2D(pPoint_X + 2, pPoint_Y, pPoint_X + 2, pPoint_Y + 1, ui_game_minimap_treasure_color);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2412 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2413 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2414 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2415 pRenderer->RasterLine2D(pPoint_X - 1, pPoint_Y - 1, pPoint_X - 1, pPoint_Y, ui_game_minimap_treasure_color);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2416 pRenderer->RasterLine2D(pPoint_X, pPoint_Y - 1, pPoint_X, pPoint_Y, ui_game_minimap_treasure_color);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2417 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2418 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2419 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2420 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2421 for ( uint i = 0; i < uNumActors; ++i )//draw actors(îòðèñîâêà ìîíñòðîâ è íïñ)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2422 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2423 if ( pActors[i].uAIState != Removed && pActors[i].uAIState != Disabled
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2424 && (pActors[i].uAIState == Dead || pActors[i].ActorNearby()) )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2425 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2426 pPoint_X = uCenterX + (fixpoint_mul((pActors[i].vPosition.x - pParty->vPosition.x), uZoom));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2427 pPoint_Y = uCenterY - (fixpoint_mul((pActors[i].vPosition.y - pParty->vPosition.y), uZoom));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2428 //if ( pPoint_X >= pRenderer->raster_clip_x && pPoint_X <= pRenderer->raster_clip_z
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2429 // && pPoint_Y >= pRenderer->raster_clip_y && pPoint_Y <= pRenderer->raster_clip_w )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2430 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2431 pColor = ui_game_minimap_actor_friendly_color;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2432 if ( pActors[i].uAttributes & ACTOR_HOSTILE )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2433 pColor = ui_game_minimap_actor_hostile_color;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2434 if ( pActors[i].uAIState == Dead)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2435 pColor = ui_game_minimap_actor_corpse_color;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2436 if ( uZoom > 1024 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2437 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2438 pRenderer->RasterLine2D(pPoint_X - 2, pPoint_Y - 1, pPoint_X - 2, pPoint_Y + 1, pColor);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2439 pRenderer->RasterLine2D(pPoint_X - 1, pPoint_Y - 2, pPoint_X - 1, pPoint_Y + 2, pColor);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2440 pRenderer->RasterLine2D(pPoint_X, pPoint_Y - 2, pPoint_X, pPoint_Y + 2, pColor);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2441 pRenderer->RasterLine2D(pPoint_X + 1, pPoint_Y - 2, pPoint_X + 1, pPoint_Y + 2, pColor);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2442 pRenderer->RasterLine2D(pPoint_X + 2, pPoint_Y - 1, pPoint_X + 2, pPoint_Y + 1, pColor);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2443 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2444 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2445 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2446 pRenderer->RasterLine2D(pPoint_X - 1, pPoint_Y - 1, pPoint_X - 1, pPoint_Y, pColor);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2447 pRenderer->RasterLine2D(pPoint_X, pPoint_Y - 1, pPoint_X, pPoint_Y, pColor);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2448 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2449 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2450 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2451 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2452 for ( uint i = 0; i < (signed int)uNumLevelDecorations; ++i )//draw items(îòðèñîâêà ïðåäìåòîâ)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2453 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2454 if ( pLevelDecorations[i].uFlags & 8 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2455 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2456 pPoint_X = uCenterX + (fixpoint_mul((pLevelDecorations[i].vPosition.x - pParty->vPosition.x), uZoom));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2457 pPoint_Y = uCenterY - (fixpoint_mul((pLevelDecorations[i].vPosition.y - pParty->vPosition.y), uZoom));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2458 //if ( pPoint_X >= pRenderer->raster_clip_x && pPoint_X <= pRenderer->raster_clip_z
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2459 // && pPoint_Y >= pRenderer->raster_clip_y && pPoint_Y <= pRenderer->raster_clip_w )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2460 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2461 if ( (signed int)uZoom > 512 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2462 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2463 pRenderer->RasterLine2D(pPoint_X - 1, pPoint_Y - 1, pPoint_X - 1, pPoint_Y + 1, ui_game_minimap_decoration_color_1);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2464 pRenderer->RasterLine2D(pPoint_X, pPoint_Y - 1, pPoint_X, pPoint_Y + 1, ui_game_minimap_decoration_color_1);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2465 pRenderer->RasterLine2D(pPoint_X + 1, pPoint_Y - 1, pPoint_X + 1, pPoint_Y + 1, ui_game_minimap_decoration_color_1);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2466 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2467 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2468 pRenderer->RasterLine2D(pPoint_X, pPoint_Y, pPoint_X, pPoint_Y, ui_game_minimap_decoration_color_1);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2469 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2470 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2471 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2472 }
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
2473 pRenderer->DrawTextureAlphaNew(468/640.0f, 0, game_ui_minimap_frame);
2524
c7264ab7132f Main menu rendered using d3d11
a.parshin
parents: 2516
diff changeset
2474 pRenderer->SetUIClipRect(541, 0, 567, 480);
2574
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
2475 pRenderer->DrawTextureAlphaNew(
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
2476 (floorf(((double)pParty->sRotationY * 0.1171875) + 0.5f) + 285)/640.0f,
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
2477 136/480.0f,
dd36326a9994 More texture refactoring
a.parshin
parents: 2573
diff changeset
2478 game_ui_minimap_compass);
2524
c7264ab7132f Main menu rendered using d3d11
a.parshin
parents: 2516
diff changeset
2479 pRenderer->ResetUIClipRect();
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2480 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2481
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2482 //----- (00441498) --------------------------------------------------------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2483 void GameUI_DrawTorchlightAndWizardEye()
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2484 {
2541
a902abdfc7f2 1. Renamed class Game to class Engine.
a.parshin
parents: 2524
diff changeset
2485 if (current_screen_type == SCREEN_GAME
a902abdfc7f2 1. Renamed class Game to class Engine.
a.parshin
parents: 2524
diff changeset
2486 || current_screen_type == SCREEN_MENU
a902abdfc7f2 1. Renamed class Game to class Engine.
a.parshin
parents: 2524
diff changeset
2487 || current_screen_type == SCREEN_OPTIONS
a902abdfc7f2 1. Renamed class Game to class Engine.
a.parshin
parents: 2524
diff changeset
2488 || current_screen_type == SCREEN_REST
a902abdfc7f2 1. Renamed class Game to class Engine.
a.parshin
parents: 2524
diff changeset
2489 || current_screen_type == SCREEN_SPELL_BOOK
a902abdfc7f2 1. Renamed class Game to class Engine.
a.parshin
parents: 2524
diff changeset
2490 || current_screen_type == SCREEN_CHEST
a902abdfc7f2 1. Renamed class Game to class Engine.
a.parshin
parents: 2524
diff changeset
2491 || current_screen_type == SCREEN_SAVEGAME
a902abdfc7f2 1. Renamed class Game to class Engine.
a.parshin
parents: 2524
diff changeset
2492 || current_screen_type == SCREEN_LOADGAME
a902abdfc7f2 1. Renamed class Game to class Engine.
a.parshin
parents: 2524
diff changeset
2493 || current_screen_type == SCREEN_CHEST_INVENTORY
a902abdfc7f2 1. Renamed class Game to class Engine.
a.parshin
parents: 2524
diff changeset
2494 || current_screen_type == SCREEN_BOOKS
a902abdfc7f2 1. Renamed class Game to class Engine.
a.parshin
parents: 2524
diff changeset
2495 || current_screen_type == SCREEN_BRANCHLESS_NPC_DIALOG )
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2496 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2497 if (pParty->TorchlightActive())
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2498 {
2575
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
2499 pRenderer->DrawTextureAlphaNew(
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
2500 pUIAnum_Torchlight->x/640.0f,
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
2501 pUIAnum_Torchlight->y/480.0f,
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
2502 pIconsFrameTable->GetFrame(pUIAnum_Torchlight->icon->id, pEventTimer->Time())->texture
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
2503 );
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2504 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2505 if (pParty->WizardEyeActive())
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2506 {
2575
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
2507 pRenderer->DrawTextureAlphaNew(
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
2508 pUIAnim_WizardEye->x/640.0f,
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
2509 pUIAnim_WizardEye->y/480.0f,
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
2510 pIconsFrameTable->GetFrame(pUIAnim_WizardEye->icon->id, pEventTimer->Time())->texture
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
2511 );
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2512 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2513 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2514 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2515
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2516
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2517 //----- (00491F87) --------------------------------------------------------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2518 void GameUI_DrawHiredNPCs()
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2519 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2520 unsigned int v13; // eax@23
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2521 char pContainer[20]; // [sp+Ch] [bp-30h]@18
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2522 signed int uFrameID; // [sp+24h] [bp-18h]@19
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2523 int v22; // [sp+34h] [bp-8h]@2
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2524 unsigned __int8 pNPC_limit_ID; // [sp+3Bh] [bp-1h]@2
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2525
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2526 if ( bNoNPCHiring != 1 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2527 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2528 pNPC_limit_ID = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2529 v22 = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2530 if (pParty->pHirelings[0].pName)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2531 pTmpBuf[v22++] = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2532 if (pParty->pHirelings[1].pName)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2533 pTmpBuf[v22++] = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2534
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2535 for (uint i = 0; i < pNPCStats->uNumNewNPCs; ++i)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2536 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2537 if (pNPCStats->pNewNPCData[i].uFlags & 128)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2538 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2539 if (!pParty->pHirelings[0].pName || strcmp(pNPCStats->pNewNPCData[i].pName, pParty->pHirelings[0].pName))
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2540 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2541 if (!pParty->pHirelings[1].pName || strcmp(pNPCStats->pNewNPCData[i].pName, pParty->pHirelings[1].pName))
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2542 pTmpBuf[v22++] = i + 2;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2543 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2544 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2545 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2546
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2547 for ( int i = pParty->hirelingScrollPosition; i < v22 && pNPC_limit_ID < 2; i++ )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2548 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2549 if ( (unsigned __int8)pTmpBuf[i] >= 2 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2550 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2551 sprintf(pContainer, "NPC%03d", pNPCStats->pNPCData[(unsigned __int8)pTmpBuf[i] + 499].uPortraitID);
2575
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
2552 pRenderer->DrawTextureAlphaNew(
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
2553 pHiredNPCsIconsOffsetsX[pNPC_limit_ID]/640.0f,
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
2554 pHiredNPCsIconsOffsetsY[pNPC_limit_ID]/480.0f,
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
2555 //pIcons_LOD->GetTexture(pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE))
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
2556 assets->GetImage_16BitColorKey(pContainer, 0x7FF)
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
2557 );
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2558 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2559 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2560 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2561 sprintf(pContainer, "NPC%03d", pParty->pHirelings[(unsigned __int8)pTmpBuf[i]].uPortraitID);
2575
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
2562 pRenderer->DrawTextureAlphaNew(
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
2563 pHiredNPCsIconsOffsetsX[pNPC_limit_ID]/640.0f,
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
2564 pHiredNPCsIconsOffsetsY[pNPC_limit_ID]/480.0f,
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
2565 //pIcons_LOD->GetTexture(pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE))
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
2566 assets->GetImage_16BitColorKey(pContainer, 0x7FF)
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
2567 );
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2568 if ( pParty->pHirelings[(unsigned __int8)pTmpBuf[i]].evt_A == 1 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2569 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2570 uFrameID = pParty->pHirelings[(unsigned __int8)pTmpBuf[i]].evt_B;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2571 v13 = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2572 if (pIconsFrameTable->uNumIcons)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2573 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2574 for ( v13 = 0; v13 < pIconsFrameTable->uNumIcons; ++v13 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2575 {
2575
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
2576 if ( !_stricmp("spell96", pIconsFrameTable->pIcons[v13].GetAnimationName()) )
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2577 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2578 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2579 }
2575
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
2580 pRenderer->DrawTextureAlphaNew(
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
2581 pHiredNPCsIconsOffsetsX[pNPC_limit_ID]/640.0f,
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
2582 pHiredNPCsIconsOffsetsY[pNPC_limit_ID]/480.0f,
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
2583 //&pIcons_LOD->pTextures[pIconsFrameTable->GetFrame(v13, uFrameID)->uTextureID]
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
2584 pIconsFrameTable->GetFrame(v13, uFrameID)->texture
a76d408c5132 DrawTranslucent -> DrawTextureGrayShade
a.parshin
parents: 2574
diff changeset
2585 );
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2586 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2587 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2588 ++pNPC_limit_ID;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2589 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2590 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2591 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2592
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2593 //----- (004178FE) --------------------------------------------------------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2594 unsigned int UI_GetHealthManaAndOtherQualitiesStringColor(signed int current_pos, signed int base_pos)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2595 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2596 unsigned __int16 R, G, B;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2597
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2598 if ( current_pos <= base_pos )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2599 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2600 if ( current_pos == base_pos )//White
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2601 return 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2602 if ( 100 * current_pos / base_pos >= 25 )//Yellow( current_pos > 1/4 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2603 R = 255, G = 255, B = 100;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2604 else//Red( current_pos < 1/4 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2605 R = 255, G = 0, B = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2606 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2607 else//Green
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2608 R = 0, G = 255, B = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2609 return Color16(R, G, B);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2610 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2611
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2612 //----- (00417939) --------------------------------------------------------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2613 int GetConditionDrawColor(unsigned int uConditionIdx)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2614 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2615 switch (uConditionIdx)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2616 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2617 case Condition_Zombie:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2618 case Condition_Good:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2619 return ui_character_condition_normal_color;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2620
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2621 case Condition_Cursed:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2622 case Condition_Weak:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2623 case Condition_Fear:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2624 case Condition_Drunk:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2625 case Condition_Insane:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2626 case Condition_Poison_Weak:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2627 case Condition_Disease_Weak:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2628 return ui_character_condition_light_color;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2629
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2630 case Condition_Sleep:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2631 case Condition_Poison_Medium:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2632 case Condition_Disease_Medium:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2633 case Condition_Paralyzed:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2634 case Condition_Unconcious:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2635 return ui_character_condition_moderate_color;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2636
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2637 case Condition_Poison_Severe:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2638 case Condition_Disease_Severe:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2639 case Condition_Dead:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2640 case Condition_Pertified:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2641 case Condition_Eradicated:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2642 return ui_character_condition_severe_color;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2643 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2644 Error("Invalid condition (%u)", uConditionIdx);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2645 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2646
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2647 //----- (00495430) --------------------------------------------------------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2648 const char * GetReputationString(signed int a1)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2649 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2650 if (a1 >= 25)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2651 return pGlobalTXT_LocalizationStrings[379]; // Hated
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2652 else if (a1 >= 6)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2653 return pGlobalTXT_LocalizationStrings[392]; // Unfriendly
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2654 else if (a1 >= -5)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2655 return pGlobalTXT_LocalizationStrings[399]; // Neutral;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2656 else if (a1 >= -24)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2657 return pGlobalTXT_LocalizationStrings[402]; // Friendly
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2658 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2659 return pGlobalTXT_LocalizationStrings[434]; // Respected;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2660 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2661
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2662 //----- (00441A4E) --------------------------------------------------------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2663 __int16 __fastcall sub_441A4E(int a1)//for blessing
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2664 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2665 __int16 result; // ax@1
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2666 int v2; // ebx@1
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2667 // char *v3; // esi@1
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2668 // int v4; // edi@4
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2669 bool v5; // ecx@4
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2670 SpriteFrame *pFrame; // eax@6
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2671 //SpriteFrame *v7; // edi@6
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2672 int v8; // eax@6
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2673 // unsigned __int16 v9; // ax@6
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2674 RenderBillboardTransform_local0 v10; // [sp+Ch] [bp-5Ch]@1
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2675 int v11; // [sp+5Ch] [bp-Ch]@6
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2676 int v12; // [sp+60h] [bp-8h]@1
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2677 //int v13; // [sp+64h] [bp-4h]@6
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2678
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2679 v10.sParentBillboardID = -1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2680 v10.pTarget = pRenderer->pTargetSurface;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2681 v10.pTargetZ = pRenderer->pActiveZBuffer;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2682 v10.uTargetPitch = pRenderer->GetRenderWidth();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2683 result = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2684 v2 = a1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2685 v10.uViewportX = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2686 v10.uViewportY = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2687 v10.uViewportZ = window->GetWidth() - 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2688 v10.uViewportW = window->GetHeight() - 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2689 v12 = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2690 //v3 = (char *)&pOtherOverlayList->pOverlays[0].field_C;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2691 //do
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2692 for (uint i = 0; i < 50; ++i)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2693 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2694 if (pOtherOverlayList->pOverlays[i].field_6 > 0)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2695 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2696 result = pOtherOverlayList->pOverlays[i].field_0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2697 if (pOtherOverlayList->pOverlays[i].field_0 >= 300)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2698 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2699 //v4 = result;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2700 v5 = pOtherOverlayList->pOverlays[i].field_0 == v2 + 320
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2701 || pOtherOverlayList->pOverlays[i].field_0 == v2 + 330
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2702 || pOtherOverlayList->pOverlays[i].field_0 == v2 + 340
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2703 || pOtherOverlayList->pOverlays[i].field_0 == v2 + 350;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2704 pOtherOverlayList->pOverlays[i].field_0 = v2 + 310;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2705 if (pOtherOverlayList->pOverlays[i].field_0 == v2 + 310 || v5)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2706 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2707 if (!pOtherOverlayList->pOverlays[i].field_0)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2708 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2709 pFrame = pSpriteFrameTable->GetFrame(pOverlayList->pOverlays[pOtherOverlayList->pOverlays[i].field_2].uSpriteFramesetID,
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2710 pOtherOverlayList->pOverlays[i].field_4);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2711 //v7 = v6;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2712 v11 = pOtherOverlayList->pOverlays[i].field_E;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2713 //v13 = pFrame->scale;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2714 //v13 = fixpoint_mul(v11, pFrame->scale);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2715 v10.uScreenSpaceX = pOtherOverlayList->pOverlays[i].field_8;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2716 v10.uScreenSpaceY = pOtherOverlayList->pOverlays[i].field_A;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2717 v10._screenspace_x_scaler_packedfloat = fixpoint_mul(v11, pFrame->scale);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2718 v10._screenspace_y_scaler_packedfloat = fixpoint_mul(v11, pFrame->scale);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2719 v10.pPalette = PaletteManager::Get_Dark_or_Red_LUT(pFrame->uPaletteIndex, 0, 1);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2720 v8 = pOtherOverlayList->pOverlays[i].field_2;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2721 v10.sZValue = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2722 v10.uFlags = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2723 //v9 = pOverlayList->pOverlays[v8].uOverlayType;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2724 if (!pOverlayList->pOverlays[v8].uOverlayType || pOverlayList->pOverlays[v8].uOverlayType == 2)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2725 v10.uScreenSpaceY += pSprites_LOD->pSpriteHeaders[pFrame->pHwSpriteIDs[0]].uHeight / 2;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2726 result = pSprites_LOD->pSpriteHeaders[pFrame->pHwSpriteIDs[0]]._4AD2D1(&v10, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2727 ++v12;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2728 if (v12 == 5)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2729 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2730 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2731 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2732 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2733 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2734 //v3 += 20;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2735 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2736 //while ( (signed int)v3 < (signed int)&pOverlayList->pOverlays );
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2737 return result;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2738 }