World of Might and Magic
0.2.0
Open reimplementation of Might and Magic 6 7 8 game engine
|
См. документацию.
69 { 0x96, 0xD4, 0xFF }, { 0xFF, 0x80, 0x00 }, { 0xFF, 0xFF, 0x9B },
70 { 0xE1, 0xE1, 0xE1 }, { 0x80, 0x80, 0x80 }, { 0x96, 0xD4, 0xFF },
71 { 0xFF, 0x55, 0x00 }, { 0x96, 0xD4, 0xFF }, { 0xFF, 0x55, 0x00 },
72 { 0xE1, 0xE1, 0xE1 }, { 0xFF, 0x55, 0x00 }, { 0x96, 0xD4, 0xFF },
73 { 0xEB, 0x0F, 0xFF }, { 0xFF, 0x80, 0x00 }, { 0x96, 0xD4, 0xFF },
74 { 0x80, 0x80, 0x80 }, { 0xFF, 0x55, 0x00 }, { 0x00, 0x80, 0xFF },
75 { 0x00, 0x80, 0xFF }, { 0x96, 0xD4, 0xFF }
110 case -1:
return L
"-1";
116 case MENU_5:
return L
"MENU_5";
124 default:
return L
"invalid";
149 unsigned int height,
int button,
170 std::queue<GUIMessage> empty;
194 char old_hot_key = toupper(uOldHotkey);
195 uint8_t v9 = toupper(uNewHotkey);
205 if (j->
uHotkey == old_hot_key) {
216 char Hot_key_num = toupper(uHotkey);
219 if (
result->uHotkey == Hot_key_num) {
225 if (!pWindow->uFrameX && !pWindow->uFrameY &&
226 (pWindow->uFrameWidth ==
window->GetWidth() &&
227 pWindow->uFrameHeight ==
window->GetWidth())) {
236 unsigned short text_color;
241 for (
int i = 0; i < 20; ++i) {
255 for (
int i = 0; i < 20; ++i) {
323 if (inside_game_viewport) {
351 if ((
signed int)this->
uFrameY < y) {
354 if ((
signed int)this->
uFrameX < x) {
369 unsigned int uBoxHeight;
370 if (!
sHint.empty()) {
377 if (uBoxHeight < 64) {
380 if ((
int)(uBoxHeight + this->uFrameY) > 479) {
381 uBoxHeight = 479 - this->
uFrameY;
385 if (!
sHint.empty()) {
425 render->DrawTextureAlphaNew(556 / 640.0
f, 451 / 480.0
f,
427 render->DrawTextureAlphaNew(476 / 640.0
f, 451 / 480.0
f,
430 render->DrawTextureAlphaNew(471 / 640.0
f, 445 / 480.0
f,
441 int v6 = pTextHeight + 7;
442 render->DrawTextureCustomHeight(8 / 640.0
f,
443 (352 - (pTextHeight + 7)) / 480.0
f,
445 render->DrawTextureAlphaNew(8 / 640.0
f, (347 - v6) / 480.0
f,
456 render->DrawTextureAlphaNew(556 / 640.0
f, 451 / 480.0
f,
458 render->DrawTextureAlphaNew(476 / 640.0
f, 451 / 480.0
f,
461 render->DrawTextureAlphaNew(471 / 640.0
f, 445 / 480.0
f,
467 unsigned int v10 = 0;
470 render->DrawTextureAlphaNew(
476 render->DrawTextureAlphaNew(
500 render->DrawTextureAlphaNew(556 / 640.0
f, 451 / 480.0
f,
502 render->DrawTextureAlphaNew(476 / 640.0
f, 451 / 480.0
f,
505 render->DrawTextureAlphaNew(471 / 640.0
f, 445 / 480.0
f,
521 render->DrawTextureAlphaNew(556 / 640.0
f, 451 / 480.0
f,
523 render->DrawTextureAlphaNew(476 / 640.0
f, 451 / 480.0
f,
526 render->DrawTextureAlphaNew(471 / 640.0
f, 445 / 480.0
f,
599 render->DrawTextureAlphaNew(556 / 640.0
f, 451 / 480.0
f,
601 render->DrawTextureAlphaNew(476 / 640.0
f, 451 / 480.0
f,
604 render->DrawTextureAlphaNew(471 / 640.0
f, 445 / 480.0
f,
630 if (minutes && !days) {
637 if (seconds && !hours) {
658 unsigned __int16 uDefaultColor,
const String &str,
660 this->
DrawTitleText(font, horizontal_margin, vertical_margin, uDefaultColor,
661 str.c_str(), line_spacing);
667 unsigned __int16 uDefaultColor,
668 const char *pInString,
int uLineSpacing) {
673 std::istringstream
stream(resString);
675 int x = uHorizontalMargin + this->
uFrameX;
676 int y = uVerticalMargin + this->
uFrameY;
677 while (std::getline(
stream, line)) {
686 const String &str,
bool present_time_transparency,
687 int max_text_height,
int uFontShadowColor) {
688 this->
DrawText(font,
x,
y, uFontColor, str.c_str(),
689 present_time_transparency, max_text_height,
695 unsigned short uFontColor,
const char *Str,
696 bool present_time_transparency,
int max_text_height,
697 int uFontShadowColor) {
698 font->
DrawText(
this, uX, uY, uFontColor, Str, present_time_transparency,
699 max_text_height, uFontShadowColor);
703 unsigned int color,
const char *text,
704 int rect_width,
int reverse_text) {
711 unsigned int uColor,
String &str,
int rect_width,
713 return pFont->
DrawTextInRect(
this, uX, uY, uColor, str, rect_width,
719 unsigned int msg_param,
uint8_t uHotkey,
721 const std::vector<Image *> &
textures) {
728 if (a6 == 2 && !uHeight) {
735 pButton->
uZ = pButton->
uX + uWidth;
736 pButton->
uW = pButton->
uY + uHeight;
761 DrawText(a2, uX, uY, 0,
"_", 0, 0, 0);
771 unsigned int uHeight,
int pButton,
const String &hint
773 : eWindowType(windowType) {
784 this->
uFrameZ = uX + uWidth - 1;
785 this->
uFrameW = uY + uHeight - 1;
787 this->
ptr_1C = (
void *)pButton;
803 { { ui_exit_cancel_button_background } });
840 if (!
sHint.empty()) {
851 if (pButton->
uX >= 0 && pButton->
uX <=
window->GetWidth()) {
852 if (pButton->
uY >= 0 && pButton->
uY <=
window->GetHeight()) {
857 if (!
sHint.empty()) {
864 if (!
sHint.empty()) {
869 pButton->vTextures[1]);
871 if (!
sHint.empty()) {
878 if (!
sHint.empty()) {
883 pButton->vTextures[1]);
890 if (!
sHint.empty()) {
895 pButton->vTextures[0]);
897 if (!
sHint.empty()) {
915 pGUIButton->vTextures[0]);
917 if (!
sHint.empty()) {
926 if (!
sHint.empty()) {
932 if (!
sHint.empty()) {
941 if (!
sHint.empty()) {
948 if (!
sHint.empty()) {
963 tmpWindowList.reverse();
964 for (
GUIWindow *pWindow : tmpWindowList) {
1016 if (mscroll_id <= 782) {
1019 window->GetHeight(), mscroll_id - 700,
"");
1339 Error(
"Invalid alignment type: %u", align);
1349 unsigned int a4,
const char *file,
1368 signed int skill_level) {
1369 switch (uPlayerClass % 4) {
1373 [uPlayerClass][uPlayerSkillType] >= skill_level)
1376 [uPlayerClass + 1][uPlayerSkillType] < skill_level &&
1378 [uPlayerClass + 2][uPlayerSkillType] < skill_level) {
1380 [uPlayerClass + 3][uPlayerSkillType] < skill_level)
1389 [uPlayerClass][uPlayerSkillType] >= skill_level)
1392 [uPlayerClass + 1][uPlayerSkillType] < skill_level) {
1394 [uPlayerClass + 2][uPlayerSkillType] < skill_level)
1404 [uPlayerClass][uPlayerSkillType] < skill_level)
1409 Error(
"Invalid player class: %u", uPlayerClass);
1426 if (uMessageParam <= 24) {
1427 switch (uMessageParam) {
1438 pEventNumber = pCurrentNPCInfo->
evt_A;
1441 pEventNumber = pCurrentNPCInfo->
evt_B;
1444 pEventNumber = pCurrentNPCInfo->
evt_C;
1447 pEventNumber = pCurrentNPCInfo->
evt_D;
1450 pEventNumber = pCurrentNPCInfo->
evt_E;
1453 pEventNumber = pCurrentNPCInfo->
evt_F;
1468 if (pEventNumber < 200 || pEventNumber > 310) {
1469 if (pEventNumber < 400 || pEventNumber > 410) {
1470 if (pEventNumber == 139) {
1473 if (pEventNumber == 311) {
1492 if (uMessageParam != 76) {
1493 if (uMessageParam == 77) {
1514 if (uMessageParam == 79) {
1521 *(
short *)v12 &= 0x3Fu;
1564 }
while ((
signed int)v4 <
1568 pEventNumber = pCurrentNPCInfo->
evt_A;
1569 if (pEventNumber >= 400 && pEventNumber <= 416)
1570 pCurrentNPCInfo->
evt_A = 0;
1573 pEventNumber = pCurrentNPCInfo->
evt_B;
1574 if (pEventNumber >= 400 && pEventNumber <= 416)
1575 pCurrentNPCInfo->
evt_B = 0;
1578 pEventNumber = pCurrentNPCInfo->
evt_C;
1579 if (pEventNumber >= 400 && pEventNumber <= 416)
1580 pCurrentNPCInfo->
evt_C = 0;
1583 pEventNumber = pCurrentNPCInfo->
evt_D;
1584 if (pEventNumber >= 400 && pEventNumber <= 416)
1585 pCurrentNPCInfo->
evt_D = 0;
1588 pEventNumber = pCurrentNPCInfo->
evt_E;
1589 if (pEventNumber >= 400 && pEventNumber <= 416)
1590 pCurrentNPCInfo->
evt_E = 0;
1593 pEventNumber = pCurrentNPCInfo->
evt_F;
1594 if (pEventNumber >= 400 && pEventNumber <= 416)
1595 pCurrentNPCInfo->
evt_F = 0;
1643 pCurrentNPCInfo->
uFlags |= 128;
1649 v24 = pCurrentNPCInfo->
pName;
1653 v24 = pCurrentNPCInfo->
pName;
1708 for (
uint i = 0; i <= 53; i++) {
1710 for (
uint pl = 0; pl < 4; pl++) {
1730 for (
uint i = 0; i < 4; i++) {
1735 for (
uint pl = 0; pl < 4; pl++) {
1736 for (v8 = 0; v8 < 126; v8++) {
1738 .pInventoryItemList[v8]
1741 .pInventoryItemList[v8]
1744 .pInventoryItemList[v8];
1746 .pInventoryItemList[v8]
1747 .uHolderPlayer == v5)
1765 int rand_monster_id;
1773 { { ui_exit_cancel_button_background } });
1791 for (i = rand();; i = rand()) {
1792 rand_monster_id = i % 258 + 1;
1795 if ((
uint16_t)rand_monster_id < 0x73u ||
1796 (
uint16_t)rand_monster_id > 0x84u) {
1797 if (((
uint16_t)rand_monster_id < 0xEBu ||
1798 (
uint16_t)rand_monster_id > 0xFCu) &&
1799 ((
uint16_t)rand_monster_id < 0x85u ||
1800 (
uint16_t)rand_monster_id > 0x96u) &&
1801 ((
uint16_t)rand_monster_id < 0x97u ||
1802 (
uint16_t)rand_monster_id > 0xBAu) &&
1803 ((
uint16_t)rand_monster_id < 0xC4u ||
1804 (
uint16_t)rand_monster_id > 0xC6u))
1829 for (
uint i = 0; i < 4; ++i)
1848 int skillBeingTaught;
1850 int currClassMaxMastery;
1851 int pointsInSkillWOutMastery;
1853 unsigned int skillMastery;
1854 unsigned __int16 pointsInSkill;
1855 int masteryLevelBeingTaught;
1858 teacherLevel = (trainerInfo - 200) % 3;
1859 skillBeingTaught = (trainerInfo - 200) / 3;
1862 currClassMaxMastery =
1865 masteryLevelBeingTaught = teacherLevel + 2;
1867 if (currClassMaxMastery < masteryLevelBeingTaught) {
1868 classBaseId = pClassType - pClassType % 4;
1871 [skillBeingTaught] >=
1872 masteryLevelBeingTaught) {
1880 [classBaseId + 2][skillBeingTaught] >=
1881 masteryLevelBeingTaught &&
1883 [classBaseId + 3][skillBeingTaught] >=
1884 masteryLevelBeingTaught) {
1893 [classBaseId + 2][skillBeingTaught] >=
1894 masteryLevelBeingTaught) {
1902 [classBaseId + 3][skillBeingTaught] >=
1903 masteryLevelBeingTaught) {
1920 if (!activePlayer->
CanAct())
1923 pointsInSkill = activePlayer->
pActiveSkills[skillBeingTaught];
1924 pointsInSkillWOutMastery = pointsInSkill & 0x3F;
1925 if (!pointsInSkillWOutMastery)
1931 if (skillMastery > teacherLevel + 1)
1937 if (masteryLevelBeingTaught == 2 && pointsInSkillWOutMastery < 4 ||
1938 masteryLevelBeingTaught == 3 && pointsInSkillWOutMastery < 7 ||
1939 masteryLevelBeingTaught == 4 && pointsInSkillWOutMastery < 10)
1953 switch (masteryLevelBeingTaught) {
1966 switch (masteryLevelBeingTaught) {
1982 switch (masteryLevelBeingTaught) {
2001 switch (masteryLevelBeingTaught) {
2014 switch (masteryLevelBeingTaught) {
2034 switch (masteryLevelBeingTaught) {
2061 switch (masteryLevelBeingTaught) {
2074 switch (masteryLevelBeingTaught) {
2089 switch (masteryLevelBeingTaught) {
2104 Error(
"Diplomacy not used");
2107 Error(
"Thievery not used");
2110 switch (masteryLevelBeingTaught) {
2126 switch (masteryLevelBeingTaught) {
2143 switch (masteryLevelBeingTaught) {
2158 Error(
"Unknown skill");
2165 if (masteryLevelBeingTaught == 2) {
2172 }
else if (masteryLevelBeingTaught == 3) {
2178 }
else if (masteryLevelBeingTaught == 4) {
2197 char *a4,
int shop_screen,
GameTime *a6) {
2203 unsigned __int8 *v20;
2223 for (
int i = 0,
dst = 0; i <
len; ++i) {
2228 v17 = 10 * (int)(str[i + 1] -
'0') + str[i + 2] -
2247 if (HEXRAYS_SHIDWORD(v18) <= 0 &&
2248 HEXRAYS_SHIDWORD(v18) >= 0 && (
unsigned int)v18 >= 5 &&
2249 HEXRAYS_SHIDWORD(v18) <= 0) {
2250 if (HEXRAYS_SHIDWORD(v18) >= 0 &&
2251 (
unsigned int)v18 >= 11) {
2275 for (
uint _i = 0; _i < 28; ++_i) {
2333 uint pay_percentage =
2336 if (!pay_percentage) pay_percentage = 1;
2337 sprintf(
v1,
"%lu", pay_percentage);
2347 strncpy(
v1, str.c_str() + i + 1, 2);
2348 sprintf(
v1,
"%lu", atoi(
v1));
2371 switch (shop_screen) {
2379 p2DEvents[(
signed int)a4 - 1].fPriceMultiplier);
2394 sprintf(
v1,
"%lu", v29);
2402 if (shop_screen == 3) {
2407 p2DEvents[(
signed int)a4 - 1].fPriceMultiplier);
2410 sprintf(
v1,
"%lu", v29);
2414 if (shop_screen != 4) {
2415 if (shop_screen == 5) {
2420 if (shop_screen == 6) {
2426 .fPriceMultiplier) /
2432 sprintf(
v1,
"%lu", v29);
2437 sprintf(
v1,
"%lu", v29);
2477 if (v17 <= 50 || v17 > 70) {
2478 strncpy(
v1, str.c_str() + i + 1, 2);
2479 sprintf(
v1,
"%lu", atoi(
v1));
2483 if (v17 - 51 >= 20) {
2519 for (
uint i = 0; i <
window->GetHeight(); ++i) {
2531 for (
uint i = 0; i < 14; ++i) {
int uNumDialogueNPCPortraits
unsigned __int16 uint16_t
struct _RGBColor RGBColor
Image * game_ui_btn_zoomout
Image * game_ui_btn_settings
bool UI_OnVkKeyDown(unsigned int vkKey)
bool receives_keyboard_input
void DrawText(GUIFont *font, int x, int y, unsigned short uFontColor, const char *str, bool present_time_transparency=false, int max_text_height=0, int uFontShadowColor=0)
unsigned int ui_character_skillinfo_can_learn_gm
NPCData * GetNPCData(signed int npcid)
unsigned int uNumBountiesCollected
@ PLAYER_SKILL_MONSTER_ID
GUIButton * GUI_HandleHotkey(uint8_t uHotkey)
Image * game_ui_tome_maps
const char * GetString(unsigned int index) const
void GUI_ReplaceHotkey(uint8_t uOldHotkey, uint8_t uNewHotkey, char bFirstCall)
void DrawBuff_remaining_time_string(int uY, GUIWindow *window, GameTime remaining_time, GUIFont *Font)
Image * game_ui_btn_zoomin
unsigned int uCurrentMonth
void SetUserInterface(PartyAlignment align, bool bReplace)
GameTime & GetPlayingTime()
Image * game_ui_minimap_frame
Texture * GetImage_Solid(const String &name)
void InitializeAnimation(unsigned int uIconID)
void SetColorChannelInfo(int uNumRBits, int uNumGBits, int uNumBBits)
Image * ui_exit_cancel_button_background
struct MonsterStats * pMonsterStats
std::array< struct NPCData *, 7 > HouseNPCData
std::array< unsigned int, 480 > pSRZBufferLineOffsets
static void LoadPartyBuffIcons()
void UI_OnMouseRightClick(int mouse_x, int mouse_y)
GUIWindow * pGUIWindow_CurrentMenu
GLuint GLsizei const GLchar * message
bool _449B57_test_bit(unsigned __int8 *a1, __int16 a2)
GUIButton * CreateButton(int x, int y, int width, int height, int a6, int a7, UIMessageType msg, unsigned int msg_param, uint8_t hotkey, const String &label, const std::vector< Image * > &textures=std::vector< Image * >())
HOUSE_DIALOGUE_MENU dialog_menu_id
int gold_transaction_amount
static Log * ResolveLogger()
struct IconFrameTable * pIconsFrameTable
void SetCurrentMenuID(MENU_STATE uMenu)
EGLSurface EGLint EGLint EGLint EGLint height
MAP_TYPE GetMapInfo(const String &Str2)
const char * pProprieterTitle
unsigned int SkillToMastery(unsigned int skill_value)
unsigned __int8 hirelingScrollPosition
std::array< NPCTopic, 789 > pNPCTopics
void PlaySound(SoundID eSoundID, int pid, unsigned int uNumRepeats, int x, int y, int a7)
Image * game_ui_bottomframe
int DrawTextInRect(GUIWindow *pWindow, unsigned int uX, unsigned int uY, uint16_t uColor, const String &str, int rect_width, int reverse_text)
Image * game_ui_leftframe
String MakeDateTimeString(GameTime time)
Image * game_ui_tome_autonotes
WindowManager windowManager
std::array< RGBColor, 20 > spell_tooltip_colors
String GetReputationString(int reputation)
unsigned __int8 _quest_bits[64]
Localization * localization
int GetBaseRepairPrice(int uRealValue, float price_multiplier)
Image * dialogue_ui_x_x_u
std::array< std::array< int, 6 >, 6 > pNPCPortraits_y
int GetPriceRepair(int uRealValue, float price_multiplier)
char * sub_495366_MispronounceName(uint8_t firstLetter, uint8_t genderId)
std::array< Player, 4 > pPlayers
std::array< std::array< int, 6 >, 6 > pNPCPortraits_x
void DrawTitleText(GUIFont *font, int horizontal_margin, int vertical_margin, unsigned __int16 uDefaultColor, const char *pInString, int line_spacing)
Texture * GetImage_PCXFromIconsLOD(const String &name)
GLubyte GLubyte GLubyte GLubyte w
const char * GetSpellName(unsigned int index) const
unsigned int GetHeight() const
Image * game_ui_monster_hp_yellow
Image * game_ui_monster_hp_green
std::array< GameTime, 10 > bountyHunting_next_generation_time
void PrepareHouse(HOUSE_ID house)
std::array< unsigned __int16, 37 > pActiveSkills
NZIArray< struct Player *, 5 > pPlayers
@ UIMSG_StartHireling2Dialogue
const char * GetSkillName(unsigned int index) const
unsigned int ui_character_skillinfo_can_learn
enum CURRENT_SCREEN current_screen_type
unsigned int ui_character_skillinfo_cant_learn
PartyTimeStruct PartyTimes
struct MapStats * pMapStats
int pStartingPosActiveItem
std::array< SpellBuff, 20 > pPartyBuffs
void CharacterUI_InventoryTab_Draw(Player *player, bool a2)
void CreateScrollWindow()
std::vector< GUIButton * > vButtons
Image * game_ui_player_alert_green
int GetMinutesFraction() const
void _41D08F_set_keyboard_control_group(int num_buttons, int a3, int a4, int a5)
void GameUI_DrawFoodAndGold()
const char * ContractSelectText(int pEventCode)
void AddMessageImpl(UIMessageType msg, int param, unsigned int a4, const char *file=nullptr, int line=0)
unsigned int uGameUIFontShadow
void DeleteAllVisibleWindows()
Image * game_ui_btn_quickref
MENU_STATE GetCurrentMenuID()
std::array< class Image *, 14 > party_buff_icons
struct ItemsTable * pItemsTable
void PartyFindsGold(unsigned int uNumGold, int _1_dont_share_with_followers___2_the_same_but_without_a_message__else_normal)
Image * game_ui_playerbuff_bless
enum WindowType current_character_screen_window
UIAnimation * pUIAnum_Torchlight
@ PLAYER_SKILL_BODYBUILDING
BuildingType in_current_building_type
int GetSecondsFraction() const
@ PLAYER_SKILL_PERCEPTION
@ BuildingType_WeaponShop
void Initialize(GameTime duration)
EGLSurface EGLint EGLint y
@ BuildingType_LightGuild
Icon * GetIcon(unsigned int idx)
Image * game_ui_bar_green
void DrawTextLine(const String &text, uint16_t uDefaultColor, int uX, int uY, int max_len_pix)
@ SCREEN_BRANCHLESS_NPC_DIALOG
std::array< Image *, 8 > game_ui_minimap_dirs
GUIWindow * window_SpeakInHouse
Image * game_ui_playerbuff_pain_reflection
LevelDecoration * activeLevelDecoration
int DrawTextInRect(GUIFont *font, unsigned int x, unsigned int y, unsigned int color, const char *text, int rect_width, int reverse_text)
void CreateMsgScrollWindow(signed int mscroll_id)
struct GUIMessageQueue * pMessageQueue_50C9E8
int pCurrentPosActiveItem
Image * game_ui_player_selection_frame
OnCastTargetedSpell(unsigned int x, unsigned int y, unsigned int width, unsigned int height, int button, const String &hint=String())
Image * game_ui_playerbuff_hammerhands
enum CURRENT_SCREEN prev_screen_type
@ UIMSG_MouseLeftClickInGame
NPCProfession pProfessions[59]
unsigned int GetSkillColor(unsigned int uPlayerClass, PLAYER_SKILL_TYPE uPlayerSkillType, signed int skill_level)
void TrainingDialog(const char *s)
void DrawPopupWindow(unsigned int uX, unsigned int uY, unsigned int uWidth, unsigned int uHeight)
unsigned int AlignText_Center(unsigned int width, const String &str)
int GetBaseIdentifyPrice(float price_multiplier)
void Info(const wchar_t *pFormat,...)
struct ViewingParams * viewparams
GLuint GLsizei const GLchar * label
unsigned int uIconIdx_WaterWalk
unsigned int OS_GetTime()
void SetupPalettes(unsigned int uTargetRBits, unsigned int uTargetGBits, unsigned int uTargetBBits)
void DrawMessageBox(bool inside_game_viewport)
@ PLAYER_SKILL_MEDITATION
Texture * GetImage_ColorKey(const String &name, uint16_t colorkey)
unsigned int uFrameHeight
unsigned char _achieved_awards_bits[64]
char sub_4637E0_is_there_popup_onscreen()
static GUIFont * LoadFont(const char *pFontFile, const char *pFontPalette,...)
Image * game_ui_right_panel_frame
int dword_F8B1B0_MasteryBeingTaught
EGLSurface EGLint EGLint EGLint width
static Mouse * ResolveMouse()
static void TakeGold(int amount)
unsigned int uGameUIFontMain
void Warning(const wchar_t *pFormat,...)
LODFile_IconsBitmaps * pIcons_LOD
char dialogue_show_profession_details
void StopChannels(int uStartChannel, int uEndChannel)
unsigned int CalcTextHeight(const String &str, unsigned int width, int x_offset, bool return_on_carriage=false)
void DrawJoinGuildWindow(int pEventCode)
MENU_STATE sCurrentMenuID
int field_14_exprie_month
@ BuildingType_EarthGuild
int uCurrentHouse_Animation
@ PLAYER_SKILL_TRAP_DISARM
EGLSurface EGLNativeWindowType * window
int GetHoursOfDay() const
bool Contains(unsigned int x, unsigned int y)
unsigned int uIconIdx_FlySpell
Image * game_ui_tome_quests
std::array< const char *, 82 > pScrolls
int ui_current_text_color
void PopMessage(UIMessageType *pMsg, int *pParam, int *a4)
@ UIMSG_BuyInShop_Identify_Repair
GUIWindow * pGUIWindow_ScrollWindow
unsigned int GetActionVKey(enum InputAction eAction)
PaletteManager * pPaletteManager
void DrawText(GUIWindow *pWindow, int uX, int uY, uint16_t uFontColor, const String &str, bool present_time_transparency, int max_text_height, int uFontShadowColor)
unsigned int FindIcon(const char *pIconName)
int dword_F8B1AC_award_bit_number
void HouseDialogManager()
Image * game_ui_monster_hp_background
std::array< int16_t, 54 > _4F0882_evt_VAR_PlayerItemInHands_vals
int16_t bountyHunting_monster_id_for_hunting
void DrawFlashingInputCursor(int uX, int uY, GUIFont *a2)
@ BuildingType_SpiritGuild
std::array< short, 28 > word_4EE150
String BuildDialogueString(const char *lpsz, unsigned __int8 uPlayerID, ItemGen *a3, char *a4, int a5, GameTime *a6)
std::array< NPCData, 2 > pHirelings
struct Viewport * pViewport
void ClickNPCTopic(int uMessageParam)
Image * game_ui_player_alert_yellow
std::array< class Image *, 6 > pDialogueNPCPortraits
@ MENU_LoadingProcInMainMenu
Image * game_ui_minimap_compass
int dword_507BF0_is_there_popup_onscreen
const char * ToString(WindowType windowType)
Image * game_ui_tome_calendar
GUIWindow * pBooksButtonOverlay
int GetBaseBuyingPrice(int uRealValue, float price_multiplier)
unsigned int uDialogueType
PLAYER_CLASS_TYPE classType
int GetBaseIntelligence()
Image * game_ui_monster_hp_border_right
GUIWindow * pGUIWindow_EscMessageWindow
void free_book_subwindow()
const char * GetMonthName(unsigned int index) const
Image * game_ui_rightframe
struct KeyboardActionMapping * pKeyActionMap
Image * game_ui_statusbar
@ BuildingType_AlchemistShop
void CheckBountyRespawnAndAward()
void MainMenuUI_LoadFontsAndSomeStuff()
unsigned int uActiveCharacter
GLfloat GLfloat GLfloat GLfloat v3
String FormatString(unsigned int index,...) const
void __cdecl __debugbreak(void)
String FitTextInAWindow(const String &inString, unsigned int width, int uX, bool return_on_carriage=false)
struct NPCStats * pNPCStats
std::list< GUIWindow * > lWindowList
void GameUI_StatusBar_OnEvent(const String &str, unsigned int num_seconds)
void _4B3FE5_training_dialogue(int a4)
Image * game_ui_player_alert_red
int GetPriceIdentification(float price_multiplier)
Texture * GetImage_Alpha(const String &name)
void DrawShops_next_generation_time_string(GameTime time)
void EventProcessor(int uEventID, int targetObj, int canShowMessages, int entry_line)
const char * pProprieterName
Image * game_ui_dialogue_background
void SetCursorImage(const String &name)
int GetBaseSellingPrice(int uRealValue, float price_multiplier)
std::queue< GUIMessage > qMessages
Image * game_ui_tome_storyline
GUIButton * GetControl(unsigned int uID)
const wchar_t * MENU_STATE_to_string(MENU_STATE m)
GUIWindow * pPrimaryWindow
UIAnimation * pUIAnim_WizardEye
void _41D73D_draw_buff_tooltip()
AudioPlayer * pAudioPlayer
const char * GetClassName(unsigned int index) const
@ SOUND_StartMainChoice02
String _4B254D_SkillMasteryTeacher(int trainerInfo)
GLsizei const GLuint * textures
struct GUIMessageQueue * pMessageQueue_50CBD0
int GetBuyingPrice(unsigned int uRealValue, float price_multiplier)
@ PLAYER_SKILL_ARMSMASTER
std::array< Award, 105 > pAwards
GUIWindow * pDialogueWindow
std::array< GameTime, 20 > _s_times
uint16_t Color16(uint32_t r, uint32_t g, uint32_t b)
Image * game_ui_monster_hp_red
void SetVariable(enum VariableType var, signed int a3)
unsigned int uCurrentYear
void NPCHireableDialogPrepare()
const char * format_4E2D80
GUIWindow * pGUIWindow_CastTargetedSpell
String StringPrintf(const char *fmt,...)
Image * game_ui_monster_hp_border_left
bool ProfessionOrGuildFlagsCorrect(unsigned int uClass, int a3)
std::array< std::array< char, 37 >, 36 > byte_4ED970_skill_learn_ability_by_class_table
void set_default_ui_skin()
const char * bountyHunting_text
@ UIMSG_StartHireling1Dialogue
Image * game_ui_playerbuff_preservation
std::array< __int16, 5 > monster_for_hunting_killed
int GetPriceSell(ItemGen itemx, float price_multiplier)
std::array< __int16, 5 > monster_id_for_hunting
NZIArray< ItemDesc, 800 > pItems
int sDialogue_SpeakingActorNPC_ID
Image * dialogue_ui_x_ok_u
static void InitializeGUI()
@ BuildingType_WaterGuild
Image * ui_character_inventory_background
Image * game_ui_bar_yellow
std::shared_ptr< IRender > render