World of Might and Magic  0.2.0
Open reimplementation of Might and Magic 6 7 8 game engine
Файл GUIWindow.h

См. исходные тексты.

Классы

class  GUIWindow
 
class  GUIWindow_Scroll
 
class  OnButtonClick
 
class  OnButtonClick2
 
class  OnButtonClick3
 
class  OnButtonClick4
 
class  OnSaveLoad
 
class  OnCancel
 
class  OnCancel2
 
class  OnCancel3
 
class  OnCastTargetedSpell
 
struct  GUIMessage
 
struct  GUIMessageQueue
 
class  WindowManager
 

Перечисления

enum  UIMessageType : uint32_t {
  UIMSG_0 = 0, UIMSG_ChangeGameState = 5, UIMSG_MouseLeftClickInGame = 10, UIMSG_CHEST_ClickItem = 12,
  UIMSG_MouseLeftClickInScreen = 14, UIMSG_F = 15, UIMSG_ChangeCursor = 17, UIMSG_Attack = 23,
  UIMSG_CastQuickSpell = 25, UIMSG_STEALFROMACTOR = 27, UIMSG_1C = 28, UIMSG_PlayArcomage = 29,
  UIMSG_31 = 49, UIMSG_32 = 50, UIMSG_SpellBook_PressTab = 51, UIMSG_34 = 52,
  UIMSG_35 = 53, UIMSG_MainMenu_ShowPartyCreationWnd = 54, UIMSG_MainMenu_ShowLoadWindow = 55, UIMSG_ShowCredits = 56,
  UIMSG_ExitToWindows = 57, UIMSG_DebugBlv = 58, UIMSG_PlayerCreationChangeName = 60, UIMSG_PlayerCreationClickPlus = 62,
  UIMSG_PlayerCreationClickMinus = 63, UIMSG_PlayerCreationSelectActiveSkill = 64, UIMSG_PlayerCreationSelectClass = 65, UIMSG_PlayerCreationClickOK = 66,
  UIMSG_PlayerCreationClickReset = 67, UIMSG_44 = 68, UIMSG_CastSpell_Character_Big_Improvement = 69, UIMSG_CastSpell_Shoot_Monster = 70,
  UIMSG_ClickBooksBtn = 71, UIMSG_48 = 72, UIMSG_49 = 73, UIMSG_PlayerCreationRemoveUpSkill = 74,
  UIMSG_PlayerCreationRemoveDownSkill = 75, UIMSG_HintSelectRemoveQuickSpellBtn = 78, UIMSG_SPellbook_ShowHightlightedSpellInfo = 79, UIMSG_BuyInShop_Identify_Repair = 81,
  UIMSG_LoadGame = 82, UIMSG_SaveGame = 83, UIMSG_54 = 84, UIMSG_ChangeDetaliz = 85,
  UIMSG_SelectSpell = 86, UIMSG_OpenSpellbookPage = 87, UIMSG_ClickInstallRemoveQuickSpellBtn = 88, UIMSG_OnTravelByFoot = 90,
  UIMSG_CHANGE_LOCATION_ClickCencelBtn = 91, UIMSG_ShowStatus_DateTime = 92, UIMSG_ShowStatus_ManaHP = 93, UIMSG_ShowStatus_Player = 94,
  UIMSG_Wait5Minutes = 95, UIMSG_Wait1Hour = 96, UIMSG_Rest8Hour = 97, UIMSG_ShowStatus_Food = 100,
  UIMSG_ShowStatus_Funds = 101, UIMSG_RestWindow = 104, UIMSG_SpellBookWindow = 105, UIMSG_QuickReference = 106,
  UIMSG_GameMenuButton = 107, UIMSG_AlreadyResting = 109, UIMSG_SelectCharacter = 110, UIMSG_ChangeSoundVolume = 111,
  UIMSG_ChangeMusicVolume = 112, UIMSG_Escape = 113, UIMSG_ClickSkillsBtn = 114, UIMSG_ClickStatsBtn = 115,
  UIMSG_ClickInventoryBtn = 116, UIMSG_ClickAwardsBtn = 117, UIMSG_PlayerCreation_SelectAttribute = 118, UIMSG_InventoryLeftClick = 120,
  UIMSG_SkillUp = 121, UIMSG_7A = 122, UIMSG_GameMenu_ReturnToGame = 123, UIMSG_StartNewGame = 124,
  UIMSG_Game_OpenLoadGameDialog = 125, UIMSG_Game_OpenSaveGameDialog = 126, UIMSG_Game_OpenOptionsDialog = 127, UIMSG_80 = 128,
  UIMSG_SetGraphicsMode = 131, UIMSG_Quit = 132, UIMSG_ClickPaperdoll = 133, UIMSG_StartHireling1Dialogue = 134,
  UIMSG_StartHireling2Dialogue = 135, UIMSG_SelectNPCDialogueOption = 136, UIMSG_CastSpell_Monster_Improvement = 140, UIMSG_CastSpell_Character_Small_Improvement = 141,
  UIMSG_CastSpellFromBook = 142, UIMSG_HiredNPC_CastSpell = 143, UIMSG_PlayerCreation_VoicePrev = 144, UIMSG_PlayerCreation_VoiceNext = 145,
  UIMSG_SpellScrollUse = 146, UIMSG_StartNPCDialogue = 161, UIMSG_ArrowUp = 162, UIMSG_DownArrow = 163,
  UIMSG_SaveLoadBtn = 164, UIMSG_SelectLoadSlot = 165, UIMSG_Cancel = 166, UIMSG_ExitRest = 167,
  UIMSG_ClickExitCharacterWindowBtn = 168, UIMSG_ClickAwardsUpBtn = 169, UIMSG_ClickAwardsDownBtn = 170, UIMSG_PlayerCreation_FacePrev = 171,
  UIMSG_PlayerCreation_FaceNext = 172, UIMSG_AD = 173, UIMSG_DebugBlv2 = 174, UIMSG_ClickNPCTopic = 175,
  UIMSG_CycleCharacters = 176, UIMSG_OnCastLloydsBeacon = 177, UIMSG_LloydsBeacon_FlippingBtn = 178, UIMSG_InstallBeacon = 179,
  UIMSG_HintBeaconSlot = 180, UIMSG_CloseAfterInstallBeacon = 181, UIMSG_HintTownPortal = 182, UIMSG_ClickTownInTP = 183,
  UIMSG_SetTurnSpeed = 184, UIMSG_ToggleWalkSound = 185, UIMSG_ChangeVoiceVolume = 186, UIMSG_ToggleShowDamage = 187,
  UIMSG_ScrollNPCPanel = 188, UIMSG_BD = 189, UIMSG_CastSpell_Telekinesis = 190, UIMSG_BF = 191,
  UIMSG_ClickAwardScrollBar = 192, UIMSG_C1 = 192, UIMSG_C2 = 192, UIMSG_OnCastTownPortal = 195,
  UIMSG_OnFinalWindowClose = 196, UIMSG_ShowFinalWindow = 197, UIMSG_C6 = 198, UIMSG_C7 = 199,
  UIMSG_OpenQuestBook = 200, UIMSG_OpenAutonotes = 201, UIMSG_OpenMapBook = 202, UIMSG_OpenCalendar = 203,
  UIMSG_CC = 204, UIMSG_CD = 205, UIMSG_CE = 206, UIMSG_CF = 207,
  UIMSG_D0 = 208, UIMSG_D1 = 209, UIMSG_D2 = 210, UIMSG_D3 = 211,
  UIMSG_D4 = 212, UIMSG_D5 = 213, UIMSG_D6 = 214, UIMSG_DD = 221,
  UIMSG_OpenHistoryBook = 224, UIMSG_ToggleAlwaysRun = 225, UIMSG_ToggleFlipOnExit = 226, UIMSG_ClickZoomOutBtn = 367,
  UIMSG_ClickZoomInBtn = 368, UIMSG_Game_Action = 404, UIMSG_SelectShopDialogueOption = 405, UIMSG_RentRoom = 409,
  UIMSG_ClickHouseNPCPortrait = 410, UIMSG_TransitionUI_Confirm = 411, UIMSG_TransitionWindowCloseBtn = 412, UIMSG_OpenKeyMappingOptions = 415,
  UIMSG_SelectKeyPage1 = 416, UIMSG_SelectKeyPage2 = 417, UIMSG_ResetKeyMapping = 418, UIMSG_ChangeKeyButton = 419,
  UIMSG_OpenVideoOptions = 421, UIMSG_ToggleBloodsplats = 422, UIMSG_ToggleColoredLights = 423, UIMSG_ToggleTint = 424,
  UIMSG_1A9 = 425, UIMSG_MMT_MainMenu_MM6 = 426, UIMSG_MMT_MainMenu_MM7 = 427, UIMSG_MMT_MainMenu_MM8 = 428,
  UIMSG_MMT_MainMenu_Continue = 429, UIMSG_DebugSpecialItem = 971, UIMSG_DebugGenItem = 972, UIMSG_DebugFarClip = 973,
  UIMSG_DebugSeasonsChange = 974, UIMSG_DebugShowFPS = 975, UIMSG_DebugPickedFace = 976, UIMSG_DebugPortalLines = 977,
  UIMSG_DebugKillChar = 978, UIMSG_DebugEradicate = 979, UIMSG_DebugNoDamage = 980, UIMSG_DebugFullHeal = 981,
  UIMSG_DebugSnow = 982, UIMSG_DebugDrawDist = 983, UIMSG_DebugNoActors = 984, UIMSG_DebugTurboSpeed = 985,
  UIMSG_DebugLightmap = 986, UIMSG_DebugTerrain = 987, UIMSG_DebugAllMagic = 988, UIMSG_DebugWizardEye = 989,
  UIMSG_DebugCycleAlign = 990, UIMSG_DebugTakeFood = 991, UIMSG_DebugGiveFood = 992, UIMSG_DebugTakeGold = 993,
  UIMSG_DebugLearnSkills = 994, UIMSG_DebugGiveSkillP = 995, UIMSG_DebugGiveEXP = 996, UIMSG_DebugGiveGold = 997,
  UIMSG_DebugTownPortal = 998, UIMSG_OpenDebugMenu = 999
}
 
enum  MENU_STATE : __int32 {
  MENU_MAIN = 0, MENU_NEWGAME = 1, MENU_CREDITS = 2, MENU_SAVELOAD = 3,
  MENU_EXIT_GAME = 4, MENU_5 = 5, MENU_CREATEPARTY = 6, MENU_NAMEPANELESC = 7,
  MENU_CREDITSPROC = 8, MENU_LoadingProcInMainMenu = 9, MENU_DebugBLVLevel = 10, MENU_CREDITSCLOSE = 11,
  MENU_MMT_MAIN_MENU = 12
}
 
enum  DIALOGUE_TYPE {
  DIALOGUE_USE_NPC_ABILITY = 9, DIALOGUE_13 = 0xD, DIALOGUE_18 = 18, DIALOGUE_EVT_A = 19,
  DIALOGUE_EVT_B = 20, DIALOGUE_EVT_C = 21, DIALOGUE_EVT_D = 22, DIALOGUE_EVT_E = 23,
  DIALOGUE_EVT_F = 0x18, DIALOGUE_76 = 76, DIALOGUE_PROFESSION_DETAILS = 77, DIALOGUE_SKILL_TRAINER = 78,
  DIALOGUE_84 = 84, DIALOGUE_ARENA_SELECT_PAGE = 85, DIALOGUE_ARENA_SELECT_SQUIRE = 86, DIALOGUE_ARENA_SELECT_KNIGHT = 87,
  DIALOGUE_ARENA_SELECT_CHAMPION = 88, DIALOGUE_ARENA_WELCOME = 89, DIALOGUE_ARENA_FIGHT_NOT_OVER_YET = 90, DIALOGUE_ARENA_REWARD = 91,
  DIALOGUE_ARENA_ALREADY_WON = 92
}
 
enum  WindowType {
  WINDOW_null = 0, WINDOW_MainMenu = 1, WINDOW_GameMenu = 3, WINDOW_CharacterRecord = 4,
  WINDOW_Options = 6, WINDOW_8 = 8, WINDOW_Book = 9, WINDOW_Dialogue = 10,
  WINDOW_QuickReference = 12, WINDOW_F = 15, WINDOW_Rest = 16, WINDOW_ChangeLocation = 17,
  WINDOW_SpellBook = 18, WINDOW_GreetingNPC = 19, WINDOW_Chest = 20, WINDOW_22 = 0x16,
  WINDOW_SaveLoadButtons = 23, WINDOW_MainMenu_Load = 0x18, WINDOW_HouseInterior = 0x19, WINDOW_Transition = 26,
  WINDOW_CastSpell = 27, WINDOW_Scroll = 0x1E, WINDOW_CastSpell_InInventory = 31, WINDOW_ModalWindow = 70,
  WINDOW_50 = 80, WINDOW_59 = 89, WINDOW_PressedButton2 = 90, WINDOW_CharactersPressedButton = 91,
  WINDOW_PressedButton = 92, WINDOW_5D = 93, WINDOW_SaveLoadBtn = 94, WINDOW_LoadGame_CancelBtn = 95,
  WINDOW_CloseRestWindowBtn = 96, WINDOW_ExitCharacterWindow = 97, WINDOW_RestWindow = 0x62, WINDOW_BooksButtonOverlay = 99,
  WINDOW_CharacterWindow_Stats = 0x64, WINDOW_CharacterWindow_Skills = 0x65, WINDOW_CharacterWindow_Awards = 0x66, WINDOW_CharacterWindow_Inventory = 0x67,
  WINDOW_GameOptions = 104, WINDOW_KeyMappingOptions = 0x69, WINDOW_VideoOptions = 0x6A, WINDOW_LloydsBeacon = 177,
  WINDOW_TownPortal = 195, WINDOW_QuestBook = 200, WINDOW_AutonotesBook = 0xC9, WINDOW_MapsBook = 0xCA,
  WINDOW_CalendarBook = 0xCB, WINDOW_JournalBook = 0xE0, WINDOW_Unknown, WINDOW_CharacterCreation,
  WINDOW_CharacterCreationBtn, WINDOW_GenericCancel, WINDOW_GameUI, WINDOW_Credits,
  WINDOW_Save, WINDOW_Load, WINDOW_DebugMenu
}
 
enum  CURRENT_SCREEN {
  CURRENT_SCREEN::SCREEN_GAME = 0, CURRENT_SCREEN::SCREEN_MENU = 1, CURRENT_SCREEN::SCREEN_OPTIONS = 2, CURRENT_SCREEN::SCREEN_BOOKS = 3,
  CURRENT_SCREEN::SCREEN_NPC_DIALOGUE = 4, CURRENT_SCREEN::SCREEN_REST = 5, CURRENT_SCREEN::SCREEN_6 = 6, CURRENT_SCREEN::SCREEN_CHARACTERS = 7,
  CURRENT_SCREEN::SCREEN_SPELL_BOOK = 8, CURRENT_SCREEN::SCREEN_CREATORS = 9, CURRENT_SCREEN::SCREEN_CHEST = 10, CURRENT_SCREEN::SCREEN_SAVEGAME = 11,
  CURRENT_SCREEN::SCREEN_LOADGAME = 12, CURRENT_SCREEN::SCREEN_HOUSE = 13, CURRENT_SCREEN::SCREEN_E = 14, CURRENT_SCREEN::SCREEN_CHEST_INVENTORY = 15,
  CURRENT_SCREEN::SCREEN_VIDEO = 16, CURRENT_SCREEN::SCREEN_CHANGE_LOCATION = 17, CURRENT_SCREEN::SCREEN_INPUT_BLV = 18, CURRENT_SCREEN::SCREEN_BRANCHLESS_NPC_DIALOG = 19,
  CURRENT_SCREEN::SCREEN_20 = 20, CURRENT_SCREEN::SCREEN_PARTY_CREATION = 21, CURRENT_SCREEN::SCREEN_MODAL_WINDOW = 22, CURRENT_SCREEN::SCREEN_CASTING = 23,
  CURRENT_SCREEN::SCREEN_24 = 24, CURRENT_SCREEN::SCREEN_19 = 25, CURRENT_SCREEN::SCREEN_KEYBOARD_OPTIONS = 26, CURRENT_SCREEN::SCREEN_1B = 27,
  CURRENT_SCREEN::SCREEN_VIDEO_OPTIONS = 28, CURRENT_SCREEN::SCREEN_63 = 0x63, CURRENT_SCREEN::SCREEN_64 = 0x64, CURRENT_SCREEN::SCREEN_67 = 0x67,
  CURRENT_SCREEN::SCREEN_QUICK_REFERENCE = 0x68, CURRENT_SCREEN::SCREEN_DEBUG = 999
}
 

Функции

const char * ToString (WindowType windowType)
 
void draw_leather ()
 
void MainMenuUI_LoadFontsAndSomeStuff ()
 
void UI_Create ()
 
void GameUI_DrawRightPanel ()
 
void GameUI_DrawRightPanelFrames ()
 
void GameUI_DrawRightPanelItems ()
 
void GameUI_DrawFoodAndGold ()
 
void GameUI_DrawLifeManaBars ()
 
void GameUI_DrawHiredNPCs ()
 
void GameUI_DrawPortraits (unsigned int _this)
 
void GameUI_DrawMinimap (unsigned int uX, unsigned int uY, unsigned int uZ, unsigned int uW, unsigned int uZoom, unsigned int bRedrawOdmMinimap)
 
String GameUI_GetMinimapHintText ()
 
void GameUI_DrawPartySpells ()
 
void GameUI_DrawTorchlightAndWizardEye ()
 
void GameUI_DrawCharacterSelectionFrame ()
 
void GameUI_CharacterQuickRecord_Draw (GUIWindow *window, Player *player)
 
void GameUI_DrawNPCPopup (void *_this)
 
String CharacterUI_GetSkillDescText (unsigned int uPlayerID, PLAYER_SKILL_TYPE uPlayerSkillType)
 
void CharacterUI_SkillsTab_ShowHint ()
 
void CharacterUI_StatsTab_ShowHint ()
 
void CharacterUI_InventoryTab_Draw (Player *player, bool a2)
 
void CharacterUI_DrawPaperdoll (Player *player)
 
void CharacterUI_DrawPaperdollWithRingOverlay (Player *player)
 
void CharacterUI_ReleaseButtons ()
 
unsigned int GetSkillColor (unsigned int uPlayerClass, PLAYER_SKILL_TYPE uPlayerSkillType, signed int skill_level)
 
void DrawSpellDescriptionPopup (int spell_index)
 
void UI_OnMouseRightClick (int mouse_x, int mouse_y)
 
void DrawPopupWindow (unsigned int uX, unsigned int uY, unsigned int uWidth, unsigned int uHeight)
 
void DrawMM7CopyrightWindow ()
 
void GUI_UpdateWindows ()
 
int GetConditionDrawColor (unsigned int uConditionIdx)
 
void FillAwardsData ()
 
void CreateAwardsScrollBar ()
 
void ReleaseAwardsScrollBar ()
 
void Inventory_ItemPopupAndAlchemy ()
 
unsigned int UI_GetHealthManaAndOtherQualitiesStringColor (int current_pos, int base_pos)
 
unsigned int GetSizeInInventorySlots (unsigned int uNumPixels)
 
class GUIButtonGUI_HandleHotkey (uint8_t uHotkey)
 
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)
 
void GameUI_DrawItemInfo (struct ItemGen *inspect_item)
 
void MonsterPopup_Draw (unsigned int uActorID, GUIWindow *window)
 
void SetUserInterface (enum PartyAlignment alignment, bool bReplace)
 
void CreateMsgScrollWindow (signed int mscroll_id)
 
void free_book_subwindow ()
 
void CreateScrollWindow ()
 
void OnPaperdollLeftClick ()
 
void DrawJoinGuildWindow (int pEventCode)
 
void DialogueEnding ()
 
char sub_4637E0_is_there_popup_onscreen ()
 
void ClickNPCTopic (int uMessageParam)
 
void _4B3FE5_training_dialogue (int a4)
 
void OracleDialogue ()
 
void CheckBountyRespawnAndAward ()
 
String _4B254D_SkillMasteryTeacher (int trainerInfo)
 
String BuildDialogueString (const char *lpsz, unsigned __int8 uPlayerID, struct ItemGen *a3, char *a4, int a5, GameTime *a6=nullptr)
 
String BuildDialogueString (String &str, unsigned __int8 uPlayerID, struct ItemGen *a3, char *a4, int shop_screen, GameTime *a6=nullptr)
 
int const_2 ()
 
void SetCurrentMenuID (MENU_STATE)
 
MENU_STATE GetCurrentMenuID ()
 

Переменные

struct GUIMessageQueuepMessageQueue_50CBD0
 
struct GUIMessageQueuepMessageQueue_50C9E8
 
enum WindowType current_character_screen_window
 
std::list< GUIWindow * > lWindowList
 
WindowManager windowManager
 
GUIWindowpPrimaryWindow
 
GUIWindowpChestWindow
 
GUIWindowpDialogueWindow
 
GUIWindowwindow_SpeakInHouse
 
GUIWindowpGUIWindow_ScrollWindow
 
GUIWindowptr_507BC8
 
GUIWindowpGUIWindow_CurrentMenu
 
GUIWindowptr_507BD0
 
GUIWindowpGUIWindow_CastTargetedSpell
 
GUIWindowpModalWindow
 
GUIWindowpGUIWindow_EscMessageWindow
 
GUIWindowpBooksButtonOverlay
 
GUIWindowpGUIWindow2
 
unsigned int ui_mainmenu_copyright_color
 
unsigned int ui_character_tooltip_header_default_color
 
unsigned int ui_character_default_text_color
 
unsigned int ui_character_skill_highlight_color
 
unsigned int ui_character_header_text_color
 
unsigned int ui_character_bonus_text_color
 
unsigned int ui_character_bonus_text_color_neg
 
unsigned int ui_character_skill_upgradeable_color
 
unsigned int ui_character_skill_default_color
 
unsigned int ui_character_stat_default_color
 
unsigned int ui_character_stat_buffed_color
 
unsigned int ui_character_stat_debuffed_color
 
unsigned int ui_character_skillinfo_can_learn
 
unsigned int ui_character_skillinfo_can_learn_gm
 
unsigned int ui_character_skillinfo_cant_learn
 
unsigned int ui_character_condition_normal_color
 
unsigned int ui_character_condition_light_color
 
unsigned int ui_character_condition_moderate_color
 
unsigned int ui_character_condition_severe_color
 
std::array< unsigned int, 6 > ui_character_award_color
 
unsigned int ui_game_minimap_outline_color
 
unsigned int ui_game_minimap_actor_friendly_color
 
unsigned int ui_game_minimap_actor_hostile_color
 
unsigned int ui_game_minimap_actor_corpse_color
 
unsigned int ui_game_minimap_decoration_color_1
 
unsigned int ui_game_minimap_projectile_color
 
unsigned int ui_game_minimap_treasure_color
 
std::array< unsigned int, 24 > ui_game_character_record_playerbuff_colors
 
unsigned int ui_gamemenu_video_gamma_title_color
 
unsigned int ui_gamemenu_keys_action_name_color
 
unsigned int ui_gamemenu_keys_key_selection_blink_color_1
 
unsigned int ui_gamemenu_keys_key_selection_blink_color_2
 
unsigned int ui_gamemenu_keys_key_default_color
 
unsigned int ui_book_quests_title_color
 
unsigned int ui_book_quests_text_color
 
unsigned int ui_book_autonotes_title_color
 
unsigned int ui_book_autonotes_text_color
 
unsigned int ui_book_map_title_color
 
unsigned int ui_book_map_coordinates_color
 
unsigned int ui_book_calendar_title_color
 
unsigned int ui_book_calendar_time_color
 
unsigned int ui_book_calendar_day_color
 
unsigned int ui_book_calendar_month_color
 
unsigned int ui_book_calendar_year_color
 
unsigned int ui_book_calendar_moon_color
 
unsigned int ui_book_calendar_location_color
 
unsigned int ui_book_journal_title_color
 
unsigned int ui_book_journal_text_color
 
unsigned int ui_book_journal_text_shadow
 
unsigned int ui_game_dialogue_npc_name_color
 
unsigned int ui_game_dialogue_option_highlight_color
 
unsigned int ui_game_dialogue_option_normal_color
 
unsigned int ui_house_player_cant_interact_color
 
Imageui_exit_cancel_button_background
 
Imagegame_ui_right_panel_frame
 
Imagedialogue_ui_x_ok_u
 
Imagedialogue_ui_x_x_u
 
Imageui_buttdesc2
 
Imageui_buttyes2
 
Imageui_btn_npc_right
 
Imageui_btn_npc_left
 
Imageui_ar_dn_dn
 
Imageui_ar_dn_up
 
Imageui_ar_up_dn
 
Imageui_ar_up_up
 
Imageui_leather_mm6
 
Imageui_leather_mm7
 
MENU_STATE sCurrentMenuID
 
enum CURRENT_SCREEN current_screen_type
 
enum CURRENT_SCREEN prev_screen_type
 

Перечисления

◆ UIMessageType

Элементы перечислений
UIMSG_0 
UIMSG_ChangeGameState 
UIMSG_MouseLeftClickInGame 
UIMSG_CHEST_ClickItem 
UIMSG_MouseLeftClickInScreen 
UIMSG_F 
UIMSG_ChangeCursor 
UIMSG_Attack 
UIMSG_CastQuickSpell 
UIMSG_STEALFROMACTOR 
UIMSG_1C 
UIMSG_PlayArcomage 
UIMSG_31 
UIMSG_32 
UIMSG_SpellBook_PressTab 
UIMSG_34 
UIMSG_35 
UIMSG_MainMenu_ShowPartyCreationWnd 
UIMSG_MainMenu_ShowLoadWindow 
UIMSG_ShowCredits 
UIMSG_ExitToWindows 
UIMSG_DebugBlv 
UIMSG_PlayerCreationChangeName 
UIMSG_PlayerCreationClickPlus 
UIMSG_PlayerCreationClickMinus 
UIMSG_PlayerCreationSelectActiveSkill 
UIMSG_PlayerCreationSelectClass 
UIMSG_PlayerCreationClickOK 
UIMSG_PlayerCreationClickReset 
UIMSG_44 
UIMSG_CastSpell_Character_Big_Improvement 
UIMSG_CastSpell_Shoot_Monster 
UIMSG_ClickBooksBtn 
UIMSG_48 
UIMSG_49 
UIMSG_PlayerCreationRemoveUpSkill 
UIMSG_PlayerCreationRemoveDownSkill 
UIMSG_HintSelectRemoveQuickSpellBtn 
UIMSG_SPellbook_ShowHightlightedSpellInfo 
UIMSG_BuyInShop_Identify_Repair 
UIMSG_LoadGame 
UIMSG_SaveGame 
UIMSG_54 
UIMSG_ChangeDetaliz 
UIMSG_SelectSpell 
UIMSG_OpenSpellbookPage 
UIMSG_ClickInstallRemoveQuickSpellBtn 
UIMSG_OnTravelByFoot 
UIMSG_CHANGE_LOCATION_ClickCencelBtn 
UIMSG_ShowStatus_DateTime 
UIMSG_ShowStatus_ManaHP 
UIMSG_ShowStatus_Player 
UIMSG_Wait5Minutes 
UIMSG_Wait1Hour 
UIMSG_Rest8Hour 
UIMSG_ShowStatus_Food 
UIMSG_ShowStatus_Funds 
UIMSG_RestWindow 
UIMSG_SpellBookWindow 
UIMSG_QuickReference 
UIMSG_GameMenuButton 
UIMSG_AlreadyResting 
UIMSG_SelectCharacter 
UIMSG_ChangeSoundVolume 
UIMSG_ChangeMusicVolume 
UIMSG_Escape 
UIMSG_ClickSkillsBtn 
UIMSG_ClickStatsBtn 
UIMSG_ClickInventoryBtn 
UIMSG_ClickAwardsBtn 
UIMSG_PlayerCreation_SelectAttribute 
UIMSG_InventoryLeftClick 
UIMSG_SkillUp 
UIMSG_7A 
UIMSG_GameMenu_ReturnToGame 
UIMSG_StartNewGame 
UIMSG_Game_OpenLoadGameDialog 
UIMSG_Game_OpenSaveGameDialog 
UIMSG_Game_OpenOptionsDialog 
UIMSG_80 
UIMSG_SetGraphicsMode 
UIMSG_Quit 
UIMSG_ClickPaperdoll 
UIMSG_StartHireling1Dialogue 
UIMSG_StartHireling2Dialogue 
UIMSG_SelectNPCDialogueOption 
UIMSG_CastSpell_Monster_Improvement 
UIMSG_CastSpell_Character_Small_Improvement 
UIMSG_CastSpellFromBook 
UIMSG_HiredNPC_CastSpell 
UIMSG_PlayerCreation_VoicePrev 
UIMSG_PlayerCreation_VoiceNext 
UIMSG_SpellScrollUse 
UIMSG_StartNPCDialogue 
UIMSG_ArrowUp 
UIMSG_DownArrow 
UIMSG_SaveLoadBtn 
UIMSG_SelectLoadSlot 
UIMSG_Cancel 
UIMSG_ExitRest 
UIMSG_ClickExitCharacterWindowBtn 
UIMSG_ClickAwardsUpBtn 
UIMSG_ClickAwardsDownBtn 
UIMSG_PlayerCreation_FacePrev 
UIMSG_PlayerCreation_FaceNext 
UIMSG_AD 
UIMSG_DebugBlv2 
UIMSG_ClickNPCTopic 
UIMSG_CycleCharacters 
UIMSG_OnCastLloydsBeacon 
UIMSG_LloydsBeacon_FlippingBtn 
UIMSG_InstallBeacon 
UIMSG_HintBeaconSlot 
UIMSG_CloseAfterInstallBeacon 
UIMSG_HintTownPortal 
UIMSG_ClickTownInTP 
UIMSG_SetTurnSpeed 
UIMSG_ToggleWalkSound 
UIMSG_ChangeVoiceVolume 
UIMSG_ToggleShowDamage 
UIMSG_ScrollNPCPanel 
UIMSG_BD 
UIMSG_CastSpell_Telekinesis 
UIMSG_BF 
UIMSG_ClickAwardScrollBar 
UIMSG_C1 
UIMSG_C2 
UIMSG_OnCastTownPortal 
UIMSG_OnFinalWindowClose 
UIMSG_ShowFinalWindow 
UIMSG_C6 
UIMSG_C7 
UIMSG_OpenQuestBook 
UIMSG_OpenAutonotes 
UIMSG_OpenMapBook 
UIMSG_OpenCalendar 
UIMSG_CC 
UIMSG_CD 
UIMSG_CE 
UIMSG_CF 
UIMSG_D0 
UIMSG_D1 
UIMSG_D2 
UIMSG_D3 
UIMSG_D4 
UIMSG_D5 
UIMSG_D6 
UIMSG_DD 
UIMSG_OpenHistoryBook 
UIMSG_ToggleAlwaysRun 
UIMSG_ToggleFlipOnExit 
UIMSG_ClickZoomOutBtn 
UIMSG_ClickZoomInBtn 
UIMSG_Game_Action 
UIMSG_SelectShopDialogueOption 
UIMSG_RentRoom 
UIMSG_ClickHouseNPCPortrait 
UIMSG_TransitionUI_Confirm 
UIMSG_TransitionWindowCloseBtn 
UIMSG_OpenKeyMappingOptions 
UIMSG_SelectKeyPage1 
UIMSG_SelectKeyPage2 
UIMSG_ResetKeyMapping 
UIMSG_ChangeKeyButton 
UIMSG_OpenVideoOptions 
UIMSG_ToggleBloodsplats 
UIMSG_ToggleColoredLights 
UIMSG_ToggleTint 
UIMSG_1A9 
UIMSG_MMT_MainMenu_MM6 
UIMSG_MMT_MainMenu_MM7 
UIMSG_MMT_MainMenu_MM8 
UIMSG_MMT_MainMenu_Continue 
UIMSG_DebugSpecialItem 
UIMSG_DebugGenItem 
UIMSG_DebugFarClip 
UIMSG_DebugSeasonsChange 
UIMSG_DebugShowFPS 
UIMSG_DebugPickedFace 
UIMSG_DebugPortalLines 
UIMSG_DebugKillChar 
UIMSG_DebugEradicate 
UIMSG_DebugNoDamage 
UIMSG_DebugFullHeal 
UIMSG_DebugSnow 
UIMSG_DebugDrawDist 
UIMSG_DebugNoActors 
UIMSG_DebugTurboSpeed 
UIMSG_DebugLightmap 
UIMSG_DebugTerrain 
UIMSG_DebugAllMagic 
UIMSG_DebugWizardEye 
UIMSG_DebugCycleAlign 
UIMSG_DebugTakeFood 
UIMSG_DebugGiveFood 
UIMSG_DebugTakeGold 
UIMSG_DebugLearnSkills 
UIMSG_DebugGiveSkillP 
UIMSG_DebugGiveEXP 
UIMSG_DebugGiveGold 
UIMSG_DebugTownPortal 
UIMSG_OpenDebugMenu 

См. определение в файле GUIWindow.h строка 13

13  : uint32_t {
14  UIMSG_0 = 0,
15 
17 
19 
21 
23  UIMSG_F = 15,
24 
25  UIMSG_ChangeCursor = 17,
26 
27  UIMSG_Attack = 23,
28 
30 
32  UIMSG_1C = 28,
33  UIMSG_PlayArcomage = 29,
34 
35  UIMSG_31 = 49,
36  UIMSG_32 = 50,
38  UIMSG_34 = 52,
39  UIMSG_35 = 53,
42  UIMSG_ShowCredits = 56,
44  UIMSG_DebugBlv = 58,
45 
47 
54  UIMSG_44 = 68,
58  UIMSG_48 = 72,
59  UIMSG_49 = 73,
62 
65 
67  UIMSG_LoadGame = 82,
68  UIMSG_SaveGame = 83,
69  UIMSG_54 = 84,
71  UIMSG_SelectSpell = 86,
74 
80  UIMSG_Wait5Minutes = 95,
81  UIMSG_Wait1Hour = 96,
82  UIMSG_Rest8Hour = 97,
83 
86 
87  UIMSG_RestWindow = 104,
91 
96  UIMSG_Escape = 113,
98  UIMSG_ClickStatsBtn = 115,
100  UIMSG_ClickAwardsBtn = 117,
102 
104  UIMSG_SkillUp = 121,
105  UIMSG_7A = 122,
107  UIMSG_StartNewGame = 124,
111  UIMSG_80 = 128,
112 
113  UIMSG_SetGraphicsMode = 131,
114  UIMSG_Quit = 132,
115  UIMSG_ClickPaperdoll = 133,
119 
126  UIMSG_SpellScrollUse = 146,
127 
129  UIMSG_ArrowUp = 162,
130  UIMSG_DownArrow = 163,
131  UIMSG_SaveLoadBtn = 164,
132  UIMSG_SelectLoadSlot = 165,
133  UIMSG_Cancel = 166,
134  UIMSG_ExitRest = 167,
140  UIMSG_AD = 173,
141  UIMSG_DebugBlv2 = 174,
142  UIMSG_ClickNPCTopic = 175,
143  UIMSG_CycleCharacters = 176,
146  UIMSG_InstallBeacon = 179,
147  UIMSG_HintBeaconSlot = 180,
149  UIMSG_HintTownPortal = 182,
150  UIMSG_ClickTownInTP = 183,
151  UIMSG_SetTurnSpeed = 184,
152  UIMSG_ToggleWalkSound = 185,
155  UIMSG_ScrollNPCPanel = 188,
156  UIMSG_BD = 189,
158  UIMSG_BF = 191,
160  UIMSG_C1 = 192,
161  UIMSG_C2 = 192,
162 
165  UIMSG_ShowFinalWindow = 197,
166  UIMSG_C6 = 198,
167  UIMSG_C7 = 199,
168  UIMSG_OpenQuestBook = 200,
169  UIMSG_OpenAutonotes = 201,
170  UIMSG_OpenMapBook = 202,
171  UIMSG_OpenCalendar = 203,
172  UIMSG_CC = 204,
173  UIMSG_CD = 205,
174  UIMSG_CE = 206,
175  UIMSG_CF = 207,
176  UIMSG_D0 = 208,
177  UIMSG_D1 = 209,
178  UIMSG_D2 = 210,
179  UIMSG_D3 = 211,
180  UIMSG_D4 = 212,
181  UIMSG_D5 = 213,
182  UIMSG_D6 = 214,
183 
184  UIMSG_DD = 221,
185 
186  UIMSG_OpenHistoryBook = 224,
187  UIMSG_ToggleAlwaysRun = 225,
189 
190  UIMSG_ClickZoomOutBtn = 367,
191  UIMSG_ClickZoomInBtn = 368,
192 
193  UIMSG_Game_Action = 404,
195 
196  UIMSG_RentRoom = 409,
200 
202  UIMSG_SelectKeyPage1 = 416,
203  UIMSG_SelectKeyPage2 = 417,
204  UIMSG_ResetKeyMapping = 418,
205  UIMSG_ChangeKeyButton = 419,
206 
210  UIMSG_ToggleTint = 424,
211  UIMSG_1A9 = 425,
212 
217 
219  UIMSG_DebugGenItem = 972,
220  UIMSG_DebugFarClip = 973,
222  UIMSG_DebugShowFPS = 975,
223  UIMSG_DebugPickedFace = 976,
225  UIMSG_DebugKillChar = 978,
226  UIMSG_DebugEradicate = 979,
227  UIMSG_DebugNoDamage = 980,
228  UIMSG_DebugFullHeal = 981,
229  UIMSG_DebugSnow = 982,
230  UIMSG_DebugDrawDist = 983,
231  UIMSG_DebugNoActors = 984,
232  UIMSG_DebugTurboSpeed = 985,
233  UIMSG_DebugLightmap = 986,
234  UIMSG_DebugTerrain = 987,
235  UIMSG_DebugAllMagic = 988,
236  UIMSG_DebugWizardEye = 989,
237  UIMSG_DebugCycleAlign = 990,
238  UIMSG_DebugTakeFood = 991,
239  UIMSG_DebugGiveFood = 992,
240  UIMSG_DebugTakeGold = 993,
242  UIMSG_DebugGiveSkillP = 995,
243  UIMSG_DebugGiveEXP = 996,
244  UIMSG_DebugGiveGold = 997,
245  UIMSG_DebugTownPortal = 998,
246  UIMSG_OpenDebugMenu = 999,
247 };

◆ MENU_STATE

enum MENU_STATE : __int32
Элементы перечислений
MENU_MAIN 
MENU_NEWGAME 
MENU_CREDITS 
MENU_SAVELOAD 
MENU_EXIT_GAME 
MENU_5 
MENU_CREATEPARTY 
MENU_NAMEPANELESC 
MENU_CREDITSPROC 
MENU_LoadingProcInMainMenu 
MENU_DebugBLVLevel 
MENU_CREDITSCLOSE 
MENU_MMT_MAIN_MENU 

См. определение в файле GUIWindow.h строка 250

250  : __int32 {
251  MENU_MAIN = 0,
252  MENU_NEWGAME = 1,
253  MENU_CREDITS = 2,
254  MENU_SAVELOAD = 3,
255  MENU_EXIT_GAME = 4,
256  MENU_5 = 5,
257  MENU_CREATEPARTY = 6,
258  MENU_NAMEPANELESC = 7,
259  MENU_CREDITSPROC = 8,
261  MENU_DebugBLVLevel = 10,
262  MENU_CREDITSCLOSE = 11,
263  MENU_MMT_MAIN_MENU = 12,
264 };

◆ DIALOGUE_TYPE

Элементы перечислений
DIALOGUE_USE_NPC_ABILITY 
DIALOGUE_13 
DIALOGUE_18 
DIALOGUE_EVT_A 
DIALOGUE_EVT_B 
DIALOGUE_EVT_C 
DIALOGUE_EVT_D 
DIALOGUE_EVT_E 
DIALOGUE_EVT_F 
DIALOGUE_76 
DIALOGUE_PROFESSION_DETAILS 
DIALOGUE_SKILL_TRAINER 
DIALOGUE_84 
DIALOGUE_ARENA_SELECT_PAGE 
DIALOGUE_ARENA_SELECT_SQUIRE 
DIALOGUE_ARENA_SELECT_KNIGHT 
DIALOGUE_ARENA_SELECT_CHAMPION 
DIALOGUE_ARENA_WELCOME 
DIALOGUE_ARENA_FIGHT_NOT_OVER_YET 
DIALOGUE_ARENA_REWARD 
DIALOGUE_ARENA_ALREADY_WON 

См. определение в файле GUIWindow.h строка 266

266  {
268  DIALOGUE_13 = 0xD,
269  DIALOGUE_18 = 18,
270  DIALOGUE_EVT_A = 19,
271  DIALOGUE_EVT_B = 20,
272  DIALOGUE_EVT_C = 21,
273  DIALOGUE_EVT_D = 22,
274  DIALOGUE_EVT_E = 23,
275  DIALOGUE_EVT_F = 0x18,
276  DIALOGUE_76 = 76,
279  DIALOGUE_84 = 84,
288 };

◆ WindowType

enum WindowType
Элементы перечислений
WINDOW_null 
WINDOW_MainMenu 
WINDOW_GameMenu 
WINDOW_CharacterRecord 
WINDOW_Options 
WINDOW_8 
WINDOW_Book 
WINDOW_Dialogue 
WINDOW_QuickReference 
WINDOW_F 
WINDOW_Rest 
WINDOW_ChangeLocation 
WINDOW_SpellBook 
WINDOW_GreetingNPC 
WINDOW_Chest 
WINDOW_22 
WINDOW_SaveLoadButtons 
WINDOW_MainMenu_Load 
WINDOW_HouseInterior 
WINDOW_Transition 
WINDOW_CastSpell 
WINDOW_Scroll 
WINDOW_CastSpell_InInventory 
WINDOW_ModalWindow 
WINDOW_50 
WINDOW_59 
WINDOW_PressedButton2 
WINDOW_CharactersPressedButton 
WINDOW_PressedButton 
WINDOW_5D 
WINDOW_SaveLoadBtn 
WINDOW_LoadGame_CancelBtn 
WINDOW_CloseRestWindowBtn 
WINDOW_ExitCharacterWindow 
WINDOW_RestWindow 
WINDOW_BooksButtonOverlay 
WINDOW_CharacterWindow_Stats 
WINDOW_CharacterWindow_Skills 
WINDOW_CharacterWindow_Awards 
WINDOW_CharacterWindow_Inventory 
WINDOW_GameOptions 
WINDOW_KeyMappingOptions 
WINDOW_VideoOptions 
WINDOW_LloydsBeacon 
WINDOW_TownPortal 
WINDOW_QuestBook 
WINDOW_AutonotesBook 
WINDOW_MapsBook 
WINDOW_CalendarBook 
WINDOW_JournalBook 
WINDOW_Unknown 
WINDOW_CharacterCreation 
WINDOW_CharacterCreationBtn 
WINDOW_GenericCancel 
WINDOW_GameUI 
WINDOW_Credits 
WINDOW_Save 
WINDOW_Load 
WINDOW_DebugMenu 

См. определение в файле GUIWindow.h строка 290

290  {
291  WINDOW_null = 0,
292  WINDOW_MainMenu = 1,
293  WINDOW_GameMenu = 3,
295  WINDOW_Options = 6,
296  WINDOW_8 = 8,
297  WINDOW_Book = 9,
298  WINDOW_Dialogue = 10,
300  WINDOW_F = 15,
301  WINDOW_Rest = 16,
303  WINDOW_SpellBook = 18,
304  WINDOW_GreetingNPC = 19,
305  WINDOW_Chest = 20,
306  WINDOW_22 = 0x16,
308  WINDOW_MainMenu_Load = 0x18,
309  WINDOW_HouseInterior = 0x19,
310  WINDOW_Transition = 26,
311  WINDOW_CastSpell = 27, // OnCastTargetedSpell
312  WINDOW_Scroll = 0x1E,
314  WINDOW_ModalWindow = 70,
315  WINDOW_50 = 80, // Debug
316  WINDOW_59 = 89, // Debug: Item Generation Window
317  WINDOW_PressedButton2 = 90, // OnButtonClick2?
320  WINDOW_5D = 93,
321  WINDOW_SaveLoadBtn = 94,
322  WINDOW_LoadGame_CancelBtn = 95, // OnCancel3?
324  WINDOW_ExitCharacterWindow = 97, // OnCancel2
325  WINDOW_RestWindow = 0x62,
331  WINDOW_GameOptions = 104,
333  WINDOW_VideoOptions = 0x6A,
334  WINDOW_LloydsBeacon = 177,
335  WINDOW_TownPortal = 195,
336  WINDOW_QuestBook = 200,
337  WINDOW_AutonotesBook = 0xC9,
338  WINDOW_MapsBook = 0xCA,
339  WINDOW_CalendarBook = 0xCB,
340  WINDOW_JournalBook = 0xE0,
341 
342  WINDOW_Unknown, // i wasnt able to find real value for those
343  WINDOW_CharacterCreation, // new addition, because i wasnt able to find real value for this
344  WINDOW_CharacterCreationBtn, // new addition, because i wasnt able to find real value for this
345  WINDOW_GenericCancel, // new addition, because i wasnt able to find real value for this
346  WINDOW_GameUI, // new addition, because i wasnt able to find real value for this
347  WINDOW_Credits, // new addition, because i wasnt able to find real value for this
348  WINDOW_Save, // new addition, because i wasnt able to find real value for this
349  WINDOW_Load, // new addition, because i wasnt able to find real value for this
351 
352  // =======
353  // ToString updated until here
354 };

◆ CURRENT_SCREEN

enum CURRENT_SCREEN
strong
Элементы перечислений
SCREEN_GAME 
SCREEN_MENU 
SCREEN_OPTIONS 
SCREEN_BOOKS 
SCREEN_NPC_DIALOGUE 
SCREEN_REST 
SCREEN_6 
SCREEN_CHARACTERS 
SCREEN_SPELL_BOOK 
SCREEN_CREATORS 
SCREEN_CHEST 
SCREEN_SAVEGAME 
SCREEN_LOADGAME 
SCREEN_HOUSE 
SCREEN_E 
SCREEN_CHEST_INVENTORY 
SCREEN_VIDEO 
SCREEN_CHANGE_LOCATION 
SCREEN_INPUT_BLV 
SCREEN_BRANCHLESS_NPC_DIALOG 
SCREEN_20 
SCREEN_PARTY_CREATION 
SCREEN_MODAL_WINDOW 
SCREEN_CASTING 
SCREEN_24 
SCREEN_19 
SCREEN_KEYBOARD_OPTIONS 
SCREEN_1B 
SCREEN_VIDEO_OPTIONS 
SCREEN_63 
SCREEN_64 
SCREEN_67 
SCREEN_QUICK_REFERENCE 
SCREEN_DEBUG 

См. определение в файле GUIWindow.h строка 604

604  {
605  SCREEN_GAME = 0,
606  SCREEN_MENU = 1,
607  SCREEN_OPTIONS = 2,
608  SCREEN_BOOKS = 3,
610  SCREEN_REST = 5,
611  SCREEN_6 = 6,
612  SCREEN_CHARACTERS = 7,
613  SCREEN_SPELL_BOOK = 8,
614  SCREEN_CREATORS = 9,
615  SCREEN_CHEST = 10,
616  SCREEN_SAVEGAME = 11,
617  SCREEN_LOADGAME = 12,
618  SCREEN_HOUSE = 13,
619  SCREEN_E = 14,
621  SCREEN_VIDEO = 16,
623  SCREEN_INPUT_BLV = 18,
625  SCREEN_20 = 20,
627  SCREEN_MODAL_WINDOW = 22,
628  SCREEN_CASTING = 23,
629  SCREEN_24 = 24,
630  SCREEN_19 = 25,
632  SCREEN_1B = 27,
634 
635  SCREEN_63 = 0x63,
636  SCREEN_64 = 0x64,
637  SCREEN_67 = 0x67,
638  SCREEN_QUICK_REFERENCE = 0x68,
639 
640  SCREEN_DEBUG = 999,
641 };

Функции

◆ ToString()

const char* ToString ( WindowType  windowType)
inline

См. определение в файле GUIWindow.h строка 357

357  {
358  switch (windowType) {
359  ENUM_TO_STRING_CASE(WINDOW_null)
360  ENUM_TO_STRING_CASE(WINDOW_MainMenu)
361  ENUM_TO_STRING_CASE(WINDOW_GameMenu)
362  ENUM_TO_STRING_CASE(WINDOW_CharacterRecord)
363  ENUM_TO_STRING_CASE(WINDOW_Options)
364  ENUM_TO_STRING_CASE(WINDOW_8)
365  ENUM_TO_STRING_CASE(WINDOW_Book)
366  ENUM_TO_STRING_CASE(WINDOW_Dialogue)
367  ENUM_TO_STRING_CASE(WINDOW_QuickReference)
368  ENUM_TO_STRING_CASE(WINDOW_F)
369  ENUM_TO_STRING_CASE(WINDOW_Rest)
370  ENUM_TO_STRING_CASE(WINDOW_ChangeLocation)
371  ENUM_TO_STRING_CASE(WINDOW_SpellBook)
372  ENUM_TO_STRING_CASE(WINDOW_GreetingNPC)
373  ENUM_TO_STRING_CASE(WINDOW_Chest)
374  ENUM_TO_STRING_CASE(WINDOW_22)
375  ENUM_TO_STRING_CASE(WINDOW_SaveLoadButtons)
376  ENUM_TO_STRING_CASE(WINDOW_MainMenu_Load)
377  ENUM_TO_STRING_CASE(WINDOW_HouseInterior)
378  ENUM_TO_STRING_CASE(WINDOW_Transition)
379  ENUM_TO_STRING_CASE(WINDOW_CastSpell)
380  ENUM_TO_STRING_CASE(WINDOW_Scroll)
381  ENUM_TO_STRING_CASE(WINDOW_CastSpell_InInventory)
382  ENUM_TO_STRING_CASE(WINDOW_ModalWindow)
383  ENUM_TO_STRING_CASE(WINDOW_50)
384  ENUM_TO_STRING_CASE(WINDOW_59)
385  ENUM_TO_STRING_CASE(WINDOW_PressedButton2)
386  ENUM_TO_STRING_CASE(WINDOW_CharactersPressedButton)
387  ENUM_TO_STRING_CASE(WINDOW_PressedButton)
388  ENUM_TO_STRING_CASE(WINDOW_5D)
389  ENUM_TO_STRING_CASE(WINDOW_SaveLoadBtn)
390  ENUM_TO_STRING_CASE(WINDOW_LoadGame_CancelBtn)
391  ENUM_TO_STRING_CASE(WINDOW_CloseRestWindowBtn)
392  ENUM_TO_STRING_CASE(WINDOW_ExitCharacterWindow)
393  ENUM_TO_STRING_CASE(WINDOW_RestWindow)
394  ENUM_TO_STRING_CASE(WINDOW_BooksButtonOverlay)
395  ENUM_TO_STRING_CASE(WINDOW_CharacterWindow_Stats)
396  ENUM_TO_STRING_CASE(WINDOW_CharacterWindow_Skills)
397  ENUM_TO_STRING_CASE(WINDOW_CharacterWindow_Awards)
398  ENUM_TO_STRING_CASE(WINDOW_CharacterWindow_Inventory)
399  ENUM_TO_STRING_CASE(WINDOW_GameOptions)
400  ENUM_TO_STRING_CASE(WINDOW_KeyMappingOptions)
401  ENUM_TO_STRING_CASE(WINDOW_VideoOptions)
402  ENUM_TO_STRING_CASE(WINDOW_LloydsBeacon)
403  ENUM_TO_STRING_CASE(WINDOW_TownPortal)
404  ENUM_TO_STRING_CASE(WINDOW_QuestBook)
405  ENUM_TO_STRING_CASE(WINDOW_AutonotesBook)
406  ENUM_TO_STRING_CASE(WINDOW_MapsBook)
407  ENUM_TO_STRING_CASE(WINDOW_CalendarBook)
408  ENUM_TO_STRING_CASE(WINDOW_JournalBook)
409  ENUM_TO_STRING_CASE(WINDOW_Unknown)
410  ENUM_TO_STRING_CASE(WINDOW_CharacterCreation)
411  ENUM_TO_STRING_CASE(WINDOW_CharacterCreationBtn)
412  ENUM_TO_STRING_CASE(WINDOW_GenericCancel)
413  ENUM_TO_STRING_CASE(WINDOW_GameUI)
414  ENUM_TO_STRING_CASE(WINDOW_Credits)
415  ENUM_TO_STRING_CASE(WINDOW_Save)
416  ENUM_TO_STRING_CASE(WINDOW_Load)
417  ENUM_TO_STRING_CASE(WINDOW_DebugMenu)
418  }
419 
420  return nullptr;
421 }

Перекрестные ссылки WINDOW_22, WINDOW_50, WINDOW_59, WINDOW_5D, WINDOW_8, WINDOW_AutonotesBook, WINDOW_Book, WINDOW_BooksButtonOverlay, WINDOW_CalendarBook, WINDOW_CastSpell, WINDOW_CastSpell_InInventory, WINDOW_ChangeLocation, WINDOW_CharacterCreation, WINDOW_CharacterCreationBtn, WINDOW_CharacterRecord, WINDOW_CharactersPressedButton, WINDOW_CharacterWindow_Awards, WINDOW_CharacterWindow_Inventory, WINDOW_CharacterWindow_Skills, WINDOW_CharacterWindow_Stats, WINDOW_Chest, WINDOW_CloseRestWindowBtn, WINDOW_Credits, WINDOW_DebugMenu, WINDOW_Dialogue, WINDOW_ExitCharacterWindow, WINDOW_F, WINDOW_GameMenu, WINDOW_GameOptions, WINDOW_GameUI, WINDOW_GenericCancel, WINDOW_GreetingNPC, WINDOW_HouseInterior, WINDOW_JournalBook, WINDOW_KeyMappingOptions, WINDOW_LloydsBeacon, WINDOW_Load, WINDOW_LoadGame_CancelBtn, WINDOW_MainMenu, WINDOW_MainMenu_Load, WINDOW_MapsBook, WINDOW_ModalWindow, WINDOW_null, WINDOW_Options, WINDOW_PressedButton, WINDOW_PressedButton2, WINDOW_QuestBook, WINDOW_QuickReference, WINDOW_Rest, WINDOW_RestWindow, WINDOW_Save, WINDOW_SaveLoadBtn, WINDOW_SaveLoadButtons, WINDOW_Scroll, WINDOW_SpellBook, WINDOW_TownPortal, WINDOW_Transition, WINDOW_Unknown и WINDOW_VideoOptions.

Используется в GUIWindow::GUIWindow() и GUIWindow::Release().

+ Граф вызова функции:

◆ draw_leather()

void draw_leather ( )

См. определение в файле UICharacter.cpp строка 925

925  {
926  render->DrawTextureNew(8 / 640.0f, 8 / 480.0f, ui_leather_mm7);
927 }

Перекрестные ссылки render и ui_leather_mm7.

Используется в ShopDialogDisplayEquip(), ShopDialogIdentify(), ShopDialogRepair(), ShopDialogSellEquip(), GUIWindow_Chest::Update() и GUIWindow_Inventory_CastSpell::Update().

+ Граф вызова функции:

◆ MainMenuUI_LoadFontsAndSomeStuff()

void MainMenuUI_LoadFontsAndSomeStuff ( )

См. определение в файле GUIWindow.cpp строка 2512

2512  {
2513  // pIcons_LOD->SetupPalettes(render->uTargetRBits, render->uTargetGBits, render->uTargetBBits);
2514  pIcons_LOD->SetupPalettes(5, 6, 5);
2515  // pPaletteManager->SetColorChannelInfo(render->uTargetRBits, render->uTargetGBits, render->uTargetBBits);
2518 
2519  for (uint i = 0; i < window->GetHeight(); ++i) {
2520  pSRZBufferLineOffsets[i] = window->GetWidth() * i;
2521  }
2522 
2523  pFontArrus = GUIFont::LoadFont("arrus.fnt", "FONTPAL", nullptr);
2524  pFontLucida = GUIFont::LoadFont("lucida.fnt", "FONTPAL", nullptr);
2525  pFontCreate = GUIFont::LoadFont("create.fnt", "FONTPAL", nullptr);
2526  pFontSmallnum = GUIFont::LoadFont("smallnum.fnt", "FONTPAL", nullptr);
2527  pFontComic = GUIFont::LoadFont("comic.fnt", "FONTPAL", nullptr);
2528 }

Перекрестные ссылки GUIFont::LoadFont(), pFontArrus, pFontComic, pFontCreate, pFontLucida, pFontSmallnum, pIcons_LOD, pPaletteManager, pSRZBufferLineOffsets, PaletteManager::RecalculateAll(), PaletteManager::SetColorChannelInfo() и LODFile_IconsBitmaps::SetupPalettes().

Используется в GUIWindow::InitializeGUI().

+ Граф вызовов:
+ Граф вызова функции:

◆ UI_Create()

void UI_Create ( )

См. определение в файле GUIWindow.cpp строка 2539

2539  {
2546 
2547  game_ui_minimap_dirs[0] = assets->GetImage_Alpha("MAPDIR1");
2548  game_ui_minimap_dirs[1] = assets->GetImage_Alpha("MAPDIR2");
2549  game_ui_minimap_dirs[2] = assets->GetImage_Alpha("MAPDIR3");
2550  game_ui_minimap_dirs[3] = assets->GetImage_Alpha("MAPDIR4");
2551  game_ui_minimap_dirs[4] = assets->GetImage_Alpha("MAPDIR5");
2552  game_ui_minimap_dirs[5] = assets->GetImage_Alpha("MAPDIR6");
2553  game_ui_minimap_dirs[6] = assets->GetImage_Alpha("MAPDIR7");
2554  game_ui_minimap_dirs[7] = assets->GetImage_Alpha("MAPDIR8");
2555 
2556  game_ui_bar_blue = assets->GetImage_ColorKey("ib-statB", 0x7FF);
2557  game_ui_bar_green = assets->GetImage_ColorKey("ib-statG", 0x7FF);
2558  game_ui_bar_yellow = assets->GetImage_ColorKey("ib-statY", 0x7FF);
2559  game_ui_bar_red = assets->GetImage_ColorKey("ib-statR", 0x7FF);
2563  game_ui_monster_hp_green = assets->GetImage_ColorKey("mhp_grn", 0x7FF);
2564  game_ui_monster_hp_red = assets->GetImage_ColorKey("mhp_red", 0x7FF);
2565  game_ui_monster_hp_yellow = assets->GetImage_ColorKey("mhp_yel", 0x7FF);
2566  ui_leather_mm7 = assets->GetImage_Solid("LEATHER");
2567  ui_leather_mm6 = assets->GetImage_Solid("ibground");
2568  dialogue_ui_x_x_u = assets->GetImage_ColorKey("x_x_u", 0x7FF);
2569  ui_buttdesc2 = assets->GetImage_Alpha("BUTTESC2");
2570  dialogue_ui_x_ok_u = assets->GetImage_ColorKey("x_ok_u", 0x7FF);
2571  ui_buttyes2 = assets->GetImage_Alpha("BUTTYES2");
2572 
2573  pPrimaryWindow = new GUIWindow(WINDOW_GameUI, 0, 0, window->GetWidth(), window->GetHeight(), 0);
2574  pPrimaryWindow->CreateButton(7, 8, 460, 343, 1, 0, UIMSG_MouseLeftClickInGame, 0, 0, "");
2575 
2576  pPrimaryWindow->CreateButton(61, 424, 31, 80, 2, 94, UIMSG_SelectCharacter, 1, '1', ""); // buttons for portraits
2577  pPrimaryWindow->CreateButton(177, 424, 31, 80, 2, 94, UIMSG_SelectCharacter, 2, '2', "");
2578  pPrimaryWindow->CreateButton(292, 424, 31, 40, 2, 94, UIMSG_SelectCharacter, 3, '3', "");
2579  pPrimaryWindow->CreateButton(407, 424, 31, 40, 2, 94, UIMSG_SelectCharacter, 4, '4', "");
2580 
2581  pPrimaryWindow->CreateButton(24, 404, 5, 49, 1, 93, UIMSG_0, 1, 0, ""); // buttons for HP
2582  pPrimaryWindow->CreateButton(139, 404, 5, 49, 1, 93, UIMSG_0, 2, 0, "");
2583  pPrimaryWindow->CreateButton(255, 404, 5, 49, 1, 93, UIMSG_0, 3, 0, "");
2584  pPrimaryWindow->CreateButton(370, 404, 5, 49, 1, 93, UIMSG_0, 4, 0, "");
2585 
2586  pPrimaryWindow->CreateButton(97, 404, 5, 49, 1, 93, UIMSG_0, 1, 0, ""); // buttons for SP
2587  pPrimaryWindow->CreateButton(212, 404, 5, 49, 1, 93, UIMSG_0, 2, 0, "");
2588  pPrimaryWindow->CreateButton(328, 404, 5, 49, 1, 93, UIMSG_0, 3, 0, "");
2589  pPrimaryWindow->CreateButton(443, 404, 5, 49, 1, 93, UIMSG_0, 4, 0, "");
2590 
2591  game_ui_tome_quests = assets->GetImage_ColorKey("ib-td1-A", 0x7FF);
2593  491, 353,
2597  localization->GetString(174), { { game_ui_tome_quests } }); // Quests
2598 
2599  game_ui_tome_autonotes = assets->GetImage_ColorKey("ib-td2-A", 0x7FF);
2601  527, 353,
2605  localization->GetString(154), { { game_ui_tome_autonotes } }); // Autonotes
2606 
2607  game_ui_tome_maps = assets->GetImage_ColorKey("ib-td3-A", 0x7FF);
2609  546, 353,
2613  localization->GetString(139), { { game_ui_tome_maps } }); // Maps
2614 
2615  game_ui_tome_calendar = assets->GetImage_ColorKey("ib-td4-A", 0x7FF);
2617  570, 353,
2621  localization->GetString(78), { { game_ui_tome_calendar } }); // Calendar
2622 
2623  game_ui_tome_storyline = assets->GetImage_ColorKey("ib-td5-A", 0x7FF);
2625  600, 361,
2628  1, 0, UIMSG_OpenHistoryBook, 0, 'H',
2629  localization->GetString(602), { { game_ui_tome_storyline } }); // History
2630 
2631  bFlashAutonotesBook = 0;
2632  bFlashQuestBook = 0;
2633  bFlashHistoryBook = 0;
2634 
2637  localization->GetString(252), { { game_ui_btn_zoomin } }); // Zoom In
2638 
2641  localization->GetString(251), { { game_ui_btn_zoomout } }); // Zoom Out
2642 
2643  pPrimaryWindow->CreateButton(481, 0, 153, 67, 1, 92, UIMSG_0, 0, 0, "");
2644  pPrimaryWindow->CreateButton(491, 149, 64, 74, 1, 0, UIMSG_StartHireling1Dialogue, 0, '5', "");
2645  pPrimaryWindow->CreateButton(561, 149, 64, 74, 1, 0, UIMSG_StartHireling2Dialogue, 0, '6', "");
2646  pPrimaryWindow->CreateButton(476, 322, 77, 17, 1, 100, UIMSG_0, 0, 0, "");
2647  pPrimaryWindow->CreateButton(555, 322, 77, 17, 1, 101, UIMSG_0, 0, 0, "");
2648 
2652  1, 0, UIMSG_SpellBookWindow, 0, 67, localization->GetString(38), { { game_ui_btn_cast } });
2656  1, 0, UIMSG_RestWindow, 0, 82, localization->GetString(182), { { game_ui_btn_rest } });
2660  1, 0, UIMSG_QuickReference, 0, 90, localization->GetString(173), { { game_ui_btn_quickref } });
2664  1, 0, UIMSG_GameMenuButton, 0, 0, localization->GetString(93), { { game_ui_btn_settings } });
2665 
2669  1, 0, UIMSG_ScrollNPCPanel, 0, 0, "", { { ui_btn_npc_left } });
2673  1, 0, UIMSG_ScrollNPCPanel, 1, 0, "", { { ui_btn_npc_right } });
2674 
2676 }

Перекрестные ссылки assets, GUIWindow::CreateButton(), dialogue_ui_x_ok_u, dialogue_ui_x_x_u, IconFrameTable::FindIcon(), game_ui_bar_blue, game_ui_bar_green, game_ui_bar_red, game_ui_bar_yellow, game_ui_minimap_dirs, game_ui_monster_hp_background, game_ui_monster_hp_border_left, game_ui_monster_hp_border_right, game_ui_monster_hp_green, game_ui_monster_hp_red, game_ui_monster_hp_yellow, game_ui_tome_quests, KeyboardActionMapping::GetActionVKey(), Image::GetHeight(), AssetsManager::GetImage_Alpha(), AssetsManager::GetImage_ColorKey(), AssetsManager::GetImage_Solid(), Localization::GetString(), Image::GetWidth(), IconFrameTable::InitializeAnimation(), INPUT_Quest, localization, pBtn_Quests, pIconsFrameTable, pKeyActionMap, pPrimaryWindow, ui_buttdesc2, ui_buttyes2, ui_leather_mm6, ui_leather_mm7, UIMSG_0, UIMSG_MouseLeftClickInGame, UIMSG_OpenQuestBook, UIMSG_SelectCharacter и WINDOW_GameUI.

Используется в Engine::SecondaryInitialization().

+ Граф вызовов:
+ Граф вызова функции:

◆ GameUI_DrawRightPanel()

void GameUI_DrawRightPanel ( )

См. определение в файле UIGame.cpp строка 1248

1248  {
1249  render->DrawTextureAlphaNew(pViewport->uViewportBR_X / 640.0f, 0,
1251 }

Перекрестные ссылки game_ui_right_panel_frame, pViewport, render и Viewport::uViewportBR_X.

Используется в Engine::DrawGUI().

+ Граф вызова функции:

◆ GameUI_DrawRightPanelFrames()

void GameUI_DrawRightPanelFrames ( )

См. определение в файле UIGame.cpp строка 1254

1254  {
1255  render->DrawTextureNew(0, 0, game_ui_topframe);
1256  render->DrawTextureNew(0, 8 / 480.0f, game_ui_leftframe);
1257  render->DrawTextureNew(468 / 640.0f, 0, game_ui_rightframe);
1258  render->DrawTextureNew(0, 352 / 480.0f, game_ui_bottomframe);
1261 
1262  // render->EndScene();
1263  // render->Present();
1264 }

Перекрестные ссылки game_ui_bottomframe, game_ui_leftframe, game_ui_rightframe, game_ui_topframe, GameUI_DrawFoodAndGold(), GameUI_DrawRightPanelItems() и render.

Используется в Engine::DrawGUI().

+ Граф вызовов:
+ Граф вызова функции:

◆ GameUI_DrawRightPanelItems()

void GameUI_DrawRightPanelItems ( )

См. определение в файле UIGame.cpp строка 1154

1154  {
1157 
1158  static bool _50697C_book_flasher;
1159 
1162  _50697C_book_flasher = !_50697C_book_flasher;
1163  }
1164 
1165  if (_50697C_book_flasher && current_screen_type != CURRENT_SCREEN::SCREEN_REST) {
1166  if (bFlashQuestBook)
1167  render->DrawTextureAlphaNew(493 / 640.0f, 355 / 480.0f,
1169  if (bFlashAutonotesBook)
1170  render->DrawTextureAlphaNew(527 / 640.0f, 353 / 480.0f,
1172  if (bFlashHistoryBook)
1173  render->DrawTextureAlphaNew(600 / 640.0f, 361 / 480.0f,
1175  }
1176 }

Перекрестные ссылки bFlashAutonotesBook, bFlashHistoryBook, bFlashQuestBook, current_screen_type, game_ui_tome_autonotes, game_ui_tome_quests, game_ui_tome_storyline, GameUI_RightPanel_BookFlashTimer, Party::GetPlayingTime(), pParty, render и SCREEN_REST.

Используется в Engine::DrawGUI() и GameUI_DrawRightPanelFrames().

+ Граф вызовов:
+ Граф вызова функции:

◆ GameUI_DrawFoodAndGold()

void GameUI_DrawFoodAndGold ( )

См. определение в файле UIGame.cpp строка 1179

1179  {
1180  int text_y; // esi@2
1181 
1183  text_y = _44100D_should_alter_right_panel() != 0 ? 381 : 322;
1184 
1186  pFontSmallnum, 0, text_y, uGameUIFontMain,
1187  StringPrintf("\r087%d", pParty->GetFood()), 0, 0,
1190  pFontSmallnum, 0, text_y, uGameUIFontMain,
1191  StringPrintf("\r028%d", pParty->GetGold()), 0, 0,
1193  }
1194 }

Перекрестные ссылки _44100D_should_alter_right_panel(), GUIWindow::DrawText(), GAME_STATE_FINAL_WINDOW, Party::GetFood(), Party::GetGold(), pFontSmallnum, pParty, pPrimaryWindow, StringPrintf(), uGameState, uGameUIFontMain и uGameUIFontShadow.

Используется в Player::AddVariable(), GameUI_DrawRightPanelFrames(), GUI_UpdateWindows(), Player::SetVariable() и Player::SubtractVariable().

+ Граф вызовов:
+ Граф вызова функции:

◆ GameUI_DrawLifeManaBars()

void GameUI_DrawLifeManaBars ( )

См. определение в файле UIGame.cpp строка 1197

1197  {
1198  double v3; // st7@3
1199  double v7; // st7@25
1200 
1201  for (uint i = 0; i < 4; ++i) {
1202  if (pParty->pPlayers[i].sHealth > 0) {
1203  int v17 = 0;
1204  if (i == 2 || i == 3) v17 = 2;
1205  v3 = (double)pParty->pPlayers[i].sHealth /
1206  (double)pParty->pPlayers[i].GetMaxHealth();
1207 
1208  auto pTextureHealth = game_ui_bar_green;
1209  if (v3 > 0.5) {
1210  if (v3 > 1.0) v3 = 1.0;
1211  } else if (v3 > 0.25) {
1212  pTextureHealth = game_ui_bar_yellow;
1213  } else if (v3 > 0.0) {
1214  pTextureHealth = game_ui_bar_red;
1215  }
1216  if (v3 > 0.0) {
1217  render->SetUIClipRect(
1218  v17 + pHealthBarPos[i],
1219  (signed __int64)((1.0 - v3) * pTextureHealth->GetHeight()) +
1220  402,
1221  v17 + pHealthBarPos[i] + pTextureHealth->GetWidth(),
1222  pTextureHealth->GetHeight() + 402);
1223  render->DrawTextureAlphaNew((v17 + pHealthBarPos[i]) / 640.0f,
1224  402 / 480.0f, pTextureHealth);
1225  render->ResetUIClipRect();
1226  }
1227  }
1228  if (pParty->pPlayers[i].sMana > 0) {
1229  v7 = pParty->pPlayers[i].sMana /
1230  (double)pParty->pPlayers[i].GetMaxMana();
1231  if (v7 > 1.0) v7 = 1.0;
1232  int v17 = 0;
1233  if (i == 2) v17 = 1;
1234  render->SetUIClipRect(
1235  v17 + pManaBarPos[i],
1236  (signed __int64)((1.0 - v7) * game_ui_bar_blue->GetHeight()) +
1237  402,
1238  v17 + pManaBarPos[i] + game_ui_bar_blue->GetWidth(),
1239  game_ui_bar_blue->GetHeight() + 402);
1240  render->DrawTextureAlphaNew((v17 + pManaBarPos[i]) / 640.0f,
1241  402 / 480.0f, game_ui_bar_blue);
1242  render->ResetUIClipRect();
1243  }
1244  }
1245 }

Перекрестные ссылки game_ui_bar_blue, game_ui_bar_green, game_ui_bar_red, game_ui_bar_yellow, Image::GetHeight(), Image::GetWidth(), pHealthBarPos, pManaBarPos, pParty, Party::pPlayers и render.

Используется в Engine::DrawGUI().

+ Граф вызовов:
+ Граф вызова функции:

◆ GameUI_DrawHiredNPCs()

void GameUI_DrawHiredNPCs ( )

См. определение в файле UIGame.cpp строка 2236

2236  {
2237  unsigned int v13; // eax@23
2238  char pContainer[20]; // [sp+Ch] [bp-30h]@18
2239  signed int uFrameID; // [sp+24h] [bp-18h]@19
2240  int v22; // [sp+34h] [bp-8h]@2
2241  unsigned __int8 pNPC_limit_ID; // [sp+3Bh] [bp-1h]@2
2242 
2243  char buf[4096];
2244  if (bNoNPCHiring != 1) {
2245  pNPC_limit_ID = 0;
2246  v22 = 0;
2247  if (pParty->pHirelings[0].pName) buf[v22++] = 0;
2248  if (pParty->pHirelings[1].pName) buf[v22++] = 1;
2249 
2250  for (uint i = 0; i < pNPCStats->uNumNewNPCs; ++i) {
2251  if (pNPCStats->pNewNPCData[i].uFlags & 128) {
2252  if (!pParty->pHirelings[0].pName ||
2253  strcmp(pNPCStats->pNewNPCData[i].pName,
2254  pParty->pHirelings[0].pName)) {
2255  if (!pParty->pHirelings[1].pName ||
2256  strcmp(pNPCStats->pNewNPCData[i].pName,
2257  pParty->pHirelings[1].pName))
2258  buf[v22++] = i + 2;
2259  }
2260  }
2261  }
2262 
2263  for (int i = pParty->hirelingScrollPosition;
2264  i < v22 && pNPC_limit_ID < 2; i++) {
2265  if ((unsigned __int8)buf[i] >= 2) {
2266  sprintf(pContainer, "NPC%03d",
2267  pNPCStats->pNPCData[(unsigned __int8)buf[i] + 499]
2268  .uPortraitID);
2269  render->DrawTextureAlphaNew(
2270  pHiredNPCsIconsOffsetsX[pNPC_limit_ID] / 640.0f,
2271  pHiredNPCsIconsOffsetsY[pNPC_limit_ID] / 480.0f,
2272  assets->GetImage_ColorKey(pContainer, 0x7FF));
2273  } else {
2274  sprintf(
2275  pContainer, "NPC%03d",
2276  pParty->pHirelings[(unsigned __int8)buf[i]].uPortraitID);
2277  render->DrawTextureAlphaNew(
2278  pHiredNPCsIconsOffsetsX[pNPC_limit_ID] / 640.0f,
2279  pHiredNPCsIconsOffsetsY[pNPC_limit_ID] / 480.0f,
2280  assets->GetImage_ColorKey(pContainer, 0x7FF));
2281  if (pParty->pHirelings[(unsigned __int8)buf[i]].evt_A == 1) {
2282  uFrameID =
2283  pParty->pHirelings[(unsigned __int8)buf[i]].evt_B;
2284  v13 = 0;
2285  if (pIconsFrameTable->uNumIcons) {
2286  for (v13 = 0; v13 < pIconsFrameTable->uNumIcons;
2287  ++v13) {
2288  if (!_stricmp("spell96",
2289  pIconsFrameTable->pIcons[v13]
2290  .GetAnimationName()))
2291  break;
2292  }
2293  }
2294  render->DrawTextureAlphaNew(
2295  pHiredNPCsIconsOffsetsX[pNPC_limit_ID] / 640.0f,
2296  pHiredNPCsIconsOffsetsY[pNPC_limit_ID] / 480.0f,
2297  pIconsFrameTable->GetFrame(v13, uFrameID)
2298  ->GetTexture());
2299  }
2300  }
2301  ++pNPC_limit_ID;
2302  }
2303  }
2304 }

Перекрестные ссылки assets, bNoNPCHiring, Icon::GetAnimationName(), IconFrameTable::GetFrame(), AssetsManager::GetImage_ColorKey(), Icon::GetTexture(), Party::hirelingScrollPosition, pHiredNPCsIconsOffsetsX, pHiredNPCsIconsOffsetsY, Party::pHirelings, IconFrameTable::pIcons, pIconsFrameTable, NPCData::pName, NPCStats::pNewNPCData, NPCStats::pNPCData, pNPCStats, pParty, render, NPCData::uFlags, IconFrameTable::uNumIcons, NPCStats::uNumNewNPCs и NPCData::uPortraitID.

Используется в Engine::DrawGUI() и Application::Game::EventLoop().

+ Граф вызовов:
+ Граф вызова функции:

◆ GameUI_DrawPortraits()

void GameUI_DrawPortraits ( unsigned int  _this)

См. определение в файле UIGame.cpp строка 1766

1766  {
1767  unsigned int face_expression_ID; // eax@17
1768  PlayerFrame *pFrame; // eax@21
1769  Image *pPortrait; // [sp-4h] [bp-1Ch]@27
1770 
1773  if (_A750D8_player_speech_timer <= 0) {
1774  if (pPlayers[uSpeakingCharacter]->CanAct())
1775  pPlayers[uSpeakingCharacter]->PlaySound(PlayerSpeechID, 0);
1777  }
1778  }
1779 
1780  for (uint i = 0; i < 4; ++i) {
1781  Player *pPlayer = &pParty->pPlayers[i];
1782  if (pPlayer->IsEradicated()) {
1783  pPortrait = game_ui_player_face_eradicated;
1785  render->DrawTextureGrayShade(
1787  640.0f,
1788  388 / 480.0f, pPortrait);
1789  else
1790  render->DrawTextureAlphaNew(
1792  1) /
1793  640.0f,
1794  388 / 480.0f, pPortrait);
1795  if (pPlayer->pPlayerBuffs[PLAYER_BUFF_BLESS].Active() ||
1796  pPlayer->pPlayerBuffs[PLAYER_BUFF_HASTE].Active() ||
1797  pPlayer->pPlayerBuffs[PLAYER_BUFF_HEROISM].Active() ||
1798  pPlayer->pPlayerBuffs[PLAYER_BUFF_SHIELD].Active() ||
1799  pPlayer->pPlayerBuffs[PLAYER_BUFF_STONESKIN].Active()) {
1801  }
1802  continue;
1803  }
1804  if (pPlayer->IsDead()) {
1805  pPortrait = game_ui_player_face_dead;
1807  render->DrawTextureGrayShade(
1809  640.0f,
1810  388 / 480.0f, pPortrait);
1811  else
1812  render->DrawTextureAlphaNew(
1814  1) /
1815  640.0f,
1816  388 / 480.0f, pPortrait);
1817  if (pPlayer->pPlayerBuffs[PLAYER_BUFF_BLESS].Active() ||
1818  pPlayer->pPlayerBuffs[PLAYER_BUFF_HASTE].Active() ||
1819  pPlayer->pPlayerBuffs[PLAYER_BUFF_HEROISM].Active() ||
1820  pPlayer->pPlayerBuffs[PLAYER_BUFF_SHIELD].Active() ||
1821  pPlayer->pPlayerBuffs[PLAYER_BUFF_STONESKIN].Active()) {
1823  }
1824  continue;
1825  }
1826  face_expression_ID = 0;
1827  for (uint j = 0; j < pPlayerFrameTable->uNumFrames; ++j)
1829  pPlayer->expression) {
1830  face_expression_ID = j;
1831  break;
1832  }
1833  if (face_expression_ID == 0) face_expression_ID = 1;
1834  if (pPlayer->expression == CHARACTER_EXPRESSION_21)
1835  pFrame = pPlayerFrameTable->GetFrameBy_y(
1836  &pPlayer->_expression21_frameset,
1838  else
1839  pFrame = pPlayerFrameTable->GetFrameBy_x(
1840  face_expression_ID, pPlayer->uExpressionTimePassed);
1841  if (pPlayer->field_1AA2 != pFrame->uTextureID - 1 || _this) {
1842  pPlayer->field_1AA2 = pFrame->uTextureID - 1;
1843  pPortrait = game_ui_player_faces
1844  [i]
1845  [pPlayer
1846  ->field_1AA2]; // pFace = (Texture_MM7
1847  // *)game_ui_player_faces[i][pFrame->uTextureID];
1849  render->DrawTextureGrayShade(
1851  640.0f,
1852  388 / 480.0f, pPortrait);
1853  else
1854  render->DrawTextureAlphaNew(
1856  1) /
1857  640.0f,
1858  388 / 480.0f, pPortrait);
1859  if (pPlayer->pPlayerBuffs[PLAYER_BUFF_BLESS].Active() |
1860  pPlayer->pPlayerBuffs[PLAYER_BUFF_HASTE].Active() |
1861  pPlayer->pPlayerBuffs[PLAYER_BUFF_HEROISM].Active() |
1862  pPlayer->pPlayerBuffs[PLAYER_BUFF_SHIELD].Active() |
1863  pPlayer->pPlayerBuffs[PLAYER_BUFF_STONESKIN].Active()) {
1865  }
1866  continue;
1867  }
1868  }
1869  if (pParty->bTurnBasedModeOn) {
1870  if (pTurnEngine->turn_stage != TE_WAIT) {
1871  if (PID_TYPE(pTurnEngine->pQueue[0].uPackedID) == OBJECT_Player) {
1872  if (pTurnEngine->uActorQueueSize > 0) {
1873  for (uint i = 0; i < (uint)pTurnEngine->uActorQueueSize;
1874  ++i) {
1875  if (PID_TYPE(pTurnEngine->pQueue[i].uPackedID) !=
1876  OBJECT_Player)
1877  break;
1878 
1879  auto alert_texture = game_ui_player_alert_green;
1880  if (pParty->GetRedAlert())
1881  alert_texture = game_ui_player_alert_red;
1882  else if (pParty->GetYellowAlert())
1883  alert_texture = game_ui_player_alert_yellow;
1884 
1885  render->DrawTextureAlphaNew(
1887  [PID_ID(pTurnEngine->pQueue[i].uPackedID)] -
1888  4) /
1889  640.0f,
1890  385 / 480.0f, alert_texture);
1891  }
1892  }
1893  }
1894  }
1895  } else {
1896  for (uint i = 0; i < 4; ++i) {
1897  if (pParty->pPlayers[i].CanAct() &&
1898  !pParty->pPlayers[i].uTimeToRecovery) {
1899  auto alert_texture = game_ui_player_alert_green;
1900  if (pParty->GetRedAlert())
1901  alert_texture = game_ui_player_alert_red;
1902  else if (pParty->GetYellowAlert())
1903  alert_texture = game_ui_player_alert_yellow;
1904 
1905  render->DrawTextureAlphaNew(
1907  4) /
1908  640.0f,
1909  385 / 480.0f, alert_texture);
1910  }
1911  }
1912  }
1913 }

Перекрестные ссылки _441A4E_overlay_on_portrait(), _A750D8_player_speech_timer, Player::_expression21_animtime, Player::_expression21_frameset, Party::bTurnBasedModeOn, CHARACTER_EXPRESSION_21, PlayerFrame::expression, Player::expression, Player::field_1AA2, game_ui_player_alert_green, game_ui_player_alert_red, game_ui_player_alert_yellow, game_ui_player_face_dead, game_ui_player_face_eradicated, game_ui_player_faces, PlayerFrameTable::GetFrameBy_x(), PlayerFrameTable::GetFrameBy_y(), Party::GetRedAlert(), Party::GetYellowAlert(), Player::IsDead(), Player::IsEradicated(), OBJECT_Player, PARTY_BUFF_INVISIBILITY, PlayerFrameTable::pFrames, PLAYER_BUFF_BLESS, PLAYER_BUFF_HASTE, PLAYER_BUFF_HEROISM, PLAYER_BUFF_SHIELD, PLAYER_BUFF_STONESKIN, PlayerSpeechID, pMiscTimer, pParty, Party::pPartyBuffs, Player::pPlayerBuffs, pPlayerFrameTable, pPlayerPortraitsXCoords_For_PlayerBuffAnimsDrawing, pPlayers, Party::pPlayers, stru262_TurnBased::pQueue, pTurnEngine, render, TE_WAIT, stru262_TurnBased::turn_stage, stru262_TurnBased::uActorQueueSize, Player::uExpressionTimePassed, PlayerFrameTable::uNumFrames, TurnBased_QueueElem::uPackedID, uSpeakingCharacter, PlayerFrame::uTextureID и Timer::uTimeElapsed.

Используется в Engine::DrawGUI().

+ Граф вызовов:
+ Граф вызова функции:

◆ GameUI_DrawMinimap()

void GameUI_DrawMinimap ( unsigned int  uX,
unsigned int  uY,
unsigned int  uZ,
unsigned int  uW,
unsigned int  uZoom,
unsigned int  bRedrawOdmMinimap 
)

См. определение в файле UIGame.cpp строка 1916

1918  {
1919  signed int pW; // ebx@23
1920  int LineGreyDim; // eax@23
1921  double startx; // st7@30
1922  signed int ypix; // eax@37
1923  // unsigned __int16 *v28; // ecx@37
1924  signed int xpix; // edi@40
1925  int pPoint_X; // edi@72
1926  int pPoint_Y; // ebx@72
1927  // unsigned int lPitch; // [sp+20h] [bp-34h]@1
1928  signed int pY; // [sp+20h] [bp-34h]@23
1929  signed int pX; // [sp+24h] [bp-30h]@23
1930  signed int xpixoffset16; // [sp+24h] [bp-30h]@37
1931  signed int ypixoffset16; // [sp+28h] [bp-2Ch]@37
1932  int map_scale; // [sp+2Ch] [bp-28h]@30
1933  signed int pZ; // [sp+60h] [bp+Ch]@23
1934  double starty; // [sp+60h] [bp+Ch]@30
1935  unsigned int pColor;
1936 
1937  signed int uCenterX = (uX + uZ) / 2;
1938  signed int uCenterY = (uY + uW) / 2;
1939  render->SetUIClipRect(uX, uY, uZ, uW);
1940  int uHeight = uW - uY;
1941  signed int uWidth = uZ - uX;
1942 
1943  bool bWizardEyeActive = pParty->WizardEyeActive();
1944  int uWizardEyeSkillLevel = pParty->WizardEyeSkillLevel();
1946  bWizardEyeActive = true;
1947  uWizardEyeSkillLevel = 2;
1948  }
1949 
1950  if (engine->config->debug_wizard_eye) {
1951  bWizardEyeActive = true;
1952  uWizardEyeSkillLevel = 3;
1953  }
1954 
1957  map_scale = (1 << (loc_power + 16)) / (signed int)uZoom;
1958  startx = (double)(pParty->vPosition.x + 32768) /
1959  (double)(1 << (16 - loc_power));
1960  starty = (double)(32768 - pParty->vPosition.y) /
1961  (double)(1 << (16 - loc_power));
1962  switch (uZoom) {
1963  case 512: {
1964  startx = startx - (double)(uWidth / 2);
1965  starty = starty - (double)(uHeight / 2);
1966  } break;
1967  case 1024: {
1968  startx = startx - (double)(uWidth / 4);
1969  starty = starty - (double)(uHeight / 4);
1970  } break;
1971  case 2048: {
1972  startx = startx - (double)(uWidth / 8);
1973  starty = starty - (double)(uHeight / 8);
1974  } break;
1975  default:
1976  assert(false);
1977  }
1978 
1979  static unsigned __int16 pOdmMinimap[117][137];
1980  assert(sizeof(pOdmMinimap) == 137 * 117 * sizeof(short));
1981 
1982  static Texture *minimaptemp;
1983  if (!minimaptemp) {
1984  minimaptemp = render->CreateTexture_Blank(uWidth, uHeight, IMAGE_FORMAT_A8R8G8B8);
1985  }
1986 
1987  xpixoffset16 = floorf(startx * 65536.0 + 0.5f); // LODWORD(v24);
1988  ypixoffset16 = floorf(starty * 65536.0 + 0.5f); // LODWORD(v25);
1989  ypix = ypixoffset16 >> 16;
1990  xpix = xpixoffset16 >> 16;
1991  // v28 = &render->pTargetSurface[uX + uY * lPitch];
1992 
1993  if (/*pMapLod0 && */ bRedrawOdmMinimap) {
1994  assert(uWidth == 137 && uHeight == 117);
1995 
1996  ushort MapImgWidth = viewparams->location_minimap->GetWidth();
1997  auto pMapLod0Line =
1998  (unsigned __int32 *)viewparams->location_minimap->GetPixels(
2000  // Image *minimaptemp = Image::Create(uWidth, uHeight, IMAGE_FORMAT_A8R8G8B8);
2001  auto minitempix = (unsigned __int32 *)minimaptemp->GetPixels(IMAGE_FORMAT_A8R8G8B8);
2002 
2003  for (int y = 0; y < uHeight; ++y) {
2004  for (int x = 0; x < uWidth; ++x) {
2005  minitempix[x + y*uWidth] = pMapLod0Line[xpix + ypix * MapImgWidth];
2006  xpix = (xpixoffset16 + x * map_scale) >> 16;
2007  }
2008  ypixoffset16 += map_scale;
2009  ypix = ypixoffset16 >> 16;
2010  }
2011  // draw image
2012  render->Update_Texture(minimaptemp);
2013  render->DrawTextureAlphaNew(uX / 640., uY / 480., minimaptemp);
2014  // minimaptemp->Release();
2015  }
2016  } else { // uCurrentlyLoadedLevelType == LEVEL_Indoor
2017  render->FillRectFast(uX, uY, uZ - uX, uHeight, 0xF);
2018 
2019  for (uint i = 0; i < (uint)pIndoor->pMapOutlines->uNumOutlines; ++i) {
2020  BLVMapOutline *pOutline = &pIndoor->pMapOutlines->pOutlines[i];
2021 
2022  if (pIndoor->pFaces[pOutline->uFace1ID].Visible() &&
2023  pIndoor->pFaces[pOutline->uFace2ID].Visible()) {
2024  if (pIndoor->pFaces[pOutline->uFace1ID].uAttributes & FACE_RENDERED ||
2025  pIndoor->pFaces[pOutline->uFace2ID].uAttributes & FACE_RENDERED) {
2026  pOutline->uFlags = pOutline->uFlags | 1;
2027  pIndoor->_visible_outlines[i >> 3] |= 1 << (7 - i % 8);
2028 
2033 
2034  int linex = uCenterX + fixpoint_mul(uZoom, Vert1X);
2035  int liney = uCenterY - fixpoint_mul(uZoom, Vert1Y);
2036  int linez = uCenterX + fixpoint_mul(uZoom, Vert2X);
2037  int linew = uCenterY - fixpoint_mul(uZoom, Vert2Y);
2038 
2039  if (bWizardEyeActive && uWizardEyeSkillLevel >= 3 &&
2040  (pIndoor->pFaces[pOutline->uFace1ID].Clickable() ||
2041  pIndoor->pFaces[pOutline->uFace2ID].Clickable()) &&
2044  render->RasterLine2D(linex, liney, linez, linew, ui_game_minimap_outline_color);
2045  } else {
2046  LineGreyDim = abs(pOutline->sZ - pParty->vPosition.z) / 8;
2047  if (LineGreyDim > 100) LineGreyDim = 100;
2048  render->RasterLine2D(linex, liney, linez, linew, viewparams->pPalette[-LineGreyDim + 200]);
2049  }
2050  }
2051  }
2052  }
2053  }
2054 
2055  // draw arrow on the minimap(include. Ritor1)
2056  uint arrow_idx;
2057  unsigned int rotate = pParty->sRotationY & stru_5C6E00->uDoublePiMask;
2058  if ((signed int)rotate <= 1920) arrow_idx = 6;
2059  if ((signed int)rotate < 1664) arrow_idx = 5;
2060  if ((signed int)rotate <= 1408) arrow_idx = 4;
2061  if ((signed int)rotate < 1152) arrow_idx = 3;
2062  if ((signed int)rotate <= 896) arrow_idx = 2;
2063  if ((signed int)rotate < 640) arrow_idx = 1;
2064  if ((signed int)rotate <= 384) arrow_idx = 0;
2065  if ((signed int)rotate < 128 || (signed int)rotate > 1920) arrow_idx = 7;
2066  render->DrawTextureAlphaNew((uCenterX - 3) / 640.0f, (uCenterY - 3) / 480.0f, game_ui_minimap_dirs[arrow_idx]);
2067 
2068  // draw objects on the minimap
2069  if (bWizardEyeActive) {
2070  if (uWizardEyeSkillLevel >= 2) {
2071  for (uint i = 0; i < uNumSpriteObjects; ++i) {
2072  if (!pSpriteObjects[i].uType ||
2073  !pSpriteObjects[i].uObjectDescID)
2074  continue;
2075  // if (uWizardEyeSkillLevel == 1
2076  pPoint_X =
2077  uCenterX + fixpoint_mul((pSpriteObjects[i].vPosition.x -
2078  pParty->vPosition.x),
2079  uZoom);
2080  pPoint_Y =
2081  uCenterY - fixpoint_mul((pSpriteObjects[i].vPosition.y -
2082  pParty->vPosition.y),
2083  uZoom);
2084  // if ( pPoint_X >= render->raster_clip_x && pPoint_X <=
2085  // render->raster_clip_z &&
2086  // pPoint_Y >= render->raster_clip_y && pPoint_Y <=
2087  // render->raster_clip_w)
2088  {
2089  if (pObjectList->pObjects[pSpriteObjects[i].uObjectDescID]
2090  .uFlags &
2092  render->RasterLine2D(pPoint_X, pPoint_Y, pPoint_X,
2093  pPoint_Y,
2095  } else if (uZoom > 512) {
2096  render->RasterLine2D(pPoint_X - 2, pPoint_Y,
2097  pPoint_X - 2, pPoint_Y + 1,
2099  render->RasterLine2D(pPoint_X - 1, pPoint_Y - 1,
2100  pPoint_X - 1, pPoint_Y + 1,
2102  render->RasterLine2D(pPoint_X, pPoint_Y - 2, pPoint_X,
2103  pPoint_Y + 1,
2105  render->RasterLine2D(pPoint_X + 1, pPoint_Y - 1,
2106  pPoint_X + 1, pPoint_Y + 1,
2108  render->RasterLine2D(pPoint_X + 2, pPoint_Y,
2109  pPoint_X + 2, pPoint_Y + 1,
2111  } else {
2112  render->RasterLine2D(pPoint_X - 1, pPoint_Y - 1,
2113  pPoint_X - 1, pPoint_Y,
2115  render->RasterLine2D(pPoint_X, pPoint_Y - 1, pPoint_X,
2116  pPoint_Y,
2118  }
2119  }
2120  }
2121  }
2122  for (uint i = 0; i < uNumActors;
2123  ++i) { // draw actors(отрисовка монстров и нпс)
2124  if (pActors[i].uAIState != Removed &&
2125  pActors[i].uAIState != Disabled &&
2126  (pActors[i].uAIState == Dead || pActors[i].ActorNearby())) {
2127  pPoint_X =
2128  uCenterX +
2129  (fixpoint_mul(
2130  (pActors[i].vPosition.x - pParty->vPosition.x), uZoom));
2131  pPoint_Y =
2132  uCenterY -
2133  (fixpoint_mul(
2134  (pActors[i].vPosition.y - pParty->vPosition.y), uZoom));
2135  // if ( pPoint_X >= render->raster_clip_x && pPoint_X <=
2136  // render->raster_clip_z
2137  // && pPoint_Y >= render->raster_clip_y && pPoint_Y <=
2138  // render->raster_clip_w )
2139  {
2141  if (pActors[i].uAttributes & ACTOR_HOSTILE)
2143  if (pActors[i].uAIState == Dead)
2145  if (uZoom > 1024) {
2146  render->RasterLine2D(pPoint_X - 2, pPoint_Y - 1,
2147  pPoint_X - 2, pPoint_Y + 1,
2148  pColor);
2149  render->RasterLine2D(pPoint_X - 1, pPoint_Y - 2,
2150  pPoint_X - 1, pPoint_Y + 2,
2151  pColor);
2152  render->RasterLine2D(pPoint_X, pPoint_Y - 2, pPoint_X,
2153  pPoint_Y + 2, pColor);
2154  render->RasterLine2D(pPoint_X + 1, pPoint_Y - 2,
2155  pPoint_X + 1, pPoint_Y + 2,
2156  pColor);
2157  render->RasterLine2D(pPoint_X + 2, pPoint_Y - 1,
2158  pPoint_X + 2, pPoint_Y + 1,
2159  pColor);
2160  } else {
2161  render->RasterLine2D(pPoint_X - 1, pPoint_Y - 1,
2162  pPoint_X - 1, pPoint_Y, pColor);
2163  render->RasterLine2D(pPoint_X, pPoint_Y - 1, pPoint_X,
2164  pPoint_Y, pColor);
2165  }
2166  }
2167  }
2168  }
2169  for (uint i = 0; i < (signed int)uNumLevelDecorations;
2170  ++i) { // draw items(отрисовка предметов)
2171  if (pLevelDecorations[i].uFlags & 8) {
2172  pPoint_X =
2173  uCenterX + (fixpoint_mul((pLevelDecorations[i].vPosition.x -
2174  pParty->vPosition.x),
2175  uZoom));
2176  pPoint_Y =
2177  uCenterY - (fixpoint_mul((pLevelDecorations[i].vPosition.y -
2178  pParty->vPosition.y),
2179  uZoom));
2180  // if ( pPoint_X >= render->raster_clip_x && pPoint_X <=
2181  // render->raster_clip_z
2182  // && pPoint_Y >= render->raster_clip_y && pPoint_Y <=
2183  // render->raster_clip_w )
2184  {
2185  if ((signed int)uZoom > 512) {
2186  render->RasterLine2D(pPoint_X - 1, pPoint_Y - 1, pPoint_X - 1, pPoint_Y + 1, ui_game_minimap_decoration_color_1);
2187  render->RasterLine2D(pPoint_X, pPoint_Y - 1, pPoint_X, pPoint_Y + 1, ui_game_minimap_decoration_color_1);
2188  render->RasterLine2D(pPoint_X + 1, pPoint_Y - 1, pPoint_X + 1, pPoint_Y + 1, ui_game_minimap_decoration_color_1);
2189  } else {
2190  render->RasterLine2D(pPoint_X, pPoint_Y, pPoint_X, pPoint_Y, ui_game_minimap_decoration_color_1);
2191  }
2192  }
2193  }
2194  }
2195  }
2196 
2197  render->DrawTextureAlphaNew(468 / 640.0f, 0, game_ui_minimap_frame);
2198  render->SetUIClipRect(541, 0, 567, 480);
2199  render->DrawTextureAlphaNew((floorf(((double)pParty->sRotationY * 0.1171875) + 0.5f) + 285) / 640.0f,
2200  136 / 480.0f, game_ui_minimap_compass);
2201  render->ResetUIClipRect();
2202 }

Перекрестные ссылки IndoorLocation::_visible_outlines, Cartographer, CheckHiredNPCSpeciality(), BLVFace::Clickable(), Dead, Disabled, engine, fixpoint_mul(), game_ui_minimap_compass, game_ui_minimap_dirs, game_ui_minimap_frame, Image::GetPixels(), Image::GetWidth(), ImageHelper::GetWidthLn2(), IMAGE_FORMAT_A8R8G8B8, LEVEL_Outdoor, ViewingParams::location_minimap, OBJECT_DESC_UNPICKABLE, pActors, IndoorLocation::pFaceExtras, IndoorLocation::pFaces, pIndoor, pLevelDecorations, IndoorLocation::pMapOutlines, pObjectList, ObjectList::pObjects, BLVMapOutlines::pOutlines, ViewingParams::pPalette, pParty, pSpriteObjects, IndoorLocation::pVertices, Removed, render, Party::sRotationY, stru_5C6E00, BLVMapOutline::sZ, BLVFace::uAttributes, uCurrentlyLoadedLevelType, stru193_math::uDoublePiMask, BLVFaceExtra::uEventID, BLVMapOutline::uFace1ID, BLVMapOutline::uFace2ID, BLVFace::uFaceExtraID, ObjectDesc::uFlags, BLVMapOutline::uFlags, ui_game_minimap_actor_corpse_color, ui_game_minimap_actor_friendly_color, ui_game_minimap_actor_hostile_color, ui_game_minimap_decoration_color_1, ui_game_minimap_outline_color, ui_game_minimap_projectile_color, ui_game_minimap_treasure_color, uNumActors, uNumLevelDecorations, BLVMapOutlines::uNumOutlines, uNumSpriteObjects, BLVMapOutline::uVertex1ID, BLVMapOutline::uVertex2ID, viewparams, BLVFace::Visible(), Party::vPosition, Party::WizardEyeActive() и Party::WizardEyeSkillLevel().

Используется в Engine::DrawGUI().

+ Граф вызовов:
+ Граф вызова функции:

◆ GameUI_GetMinimapHintText()

String GameUI_GetMinimapHintText ( )

См. определение в файле UIGame.cpp строка 1001

1001  {
1002  double v3; // st7@1
1003  int v7; // eax@4
1004  const char *v14; // eax@8
1005  unsigned int pMapID; // eax@14
1006  int global_coord_X; // [sp+10h] [bp-1Ch]@1
1007  int global_coord_Y; // [sp+14h] [bp-18h]@1
1008  unsigned int pY; // [sp+1Ch] [bp-10h]@1
1009  unsigned int pX; // [sp+28h] [bp-4h]@1
1010 
1011  String result;
1012  pMouse->GetClickPos(&pX, &pY);
1013  v3 = 1.0 / (float)((signed int)viewparams->uMinimapZoom * 0.000015258789);
1014  global_coord_X =
1015  (__int64)((double)(pX - 557) * v3 + (double)pParty->vPosition.x);
1016  global_coord_Y =
1017  (__int64)((double)pParty->vPosition.y - (double)(pY - 74) * v3);
1019  pOutdoor->pBModels.empty()) {
1021  if (pMapID == 0)
1022  result = "No Maze Info for this maze on file!";
1023  else
1024  result = pMapStats->pInfos[pMapID].pName;
1025  } else {
1026  for (BSPModel &model : pOutdoor->pBModels) {
1027  v7 = int_get_vector_length(
1028  abs((int)model.vBoundingCenter.x - global_coord_X),
1029  abs((int)model.vBoundingCenter.y - global_coord_Y), 0);
1030  if (v7 < 2 * model.sBoundingRadius) {
1031  for (ODMFace &face : model.pFaces) {
1032  if (face.sCogTriggeredID) {
1033  if (!(face.uAttributes & FACE_HAS_EVENT)) {
1034  v14 = GetEventHintString(face.sCogTriggeredID);
1035  if (v14) {
1036  if (_stricmp(v14, "")) {
1037  result = v14;
1038  }
1039  }
1040  }
1041  }
1042  }
1043  return result;
1044  }
1045  }
1047  if (pMapID == 0)
1048  result = "No Maze Info for this maze on file!";
1049  else
1050  result = pMapStats->pInfos[pMapID].pName;
1051  return result;
1052  }
1053  return result;
1054 }

Перекрестные ссылки Mouse::GetClickPos(), GetEventHintString(), MapStats::GetMapInfo(), int_get_vector_length(), LEVEL_Outdoor, OutdoorLocation::pBModels, pCurrentMapName, BSPModel::pFaces, MapStats::pInfos, pMapStats, pMouse, MapInfo::pName, pOutdoor, pParty, BSPModel::sBoundingRadius, uCurrentlyLoadedLevelType, ViewingParams::uMinimapZoom, BSPModel::vBoundingCenter, viewparams и Party::vPosition.

Используется в UI_OnMouseRightClick().

+ Граф вызовов:
+ Граф вызова функции:

◆ GameUI_DrawPartySpells()

void GameUI_DrawPartySpells ( )

См. определение в файле UIGame.cpp строка 1699

1699  {
1700  unsigned int v0; // ebp@1
1701  Image *spell_texture; // [sp-4h] [bp-1Ch]@12
1702  // Texture_MM7 *v9; // [sp-4h] [bp-1Ch]@21
1703 
1704  v0 = OS_GetTime() / 20;
1705  for (uint i = 0; i < 14; ++i) {
1706  if (pParty->pPartyBuffs[byte_4E5DD8[i]].Active()) {
1707  render->TexturePixelRotateDraw(pPartySpellbuffsUI_XYs[i][0] / 640.,
1708  pPartySpellbuffsUI_XYs[i][1] / 480., party_buff_icons[i],
1709  v0 + 20 * pPartySpellbuffsUI_smthns[i]);
1710  }
1711  }
1712 
1715  if (pParty->FlyActive()) {
1716  if (pParty->bFlying)
1717  spell_texture =
1719  ->GetTexture();
1720  else
1721  spell_texture = pIconsFrameTable->GetFrame(uIconIdx_FlySpell, 0)
1722  ->GetTexture();
1723  render->DrawTextureAlphaNew(8 / 640.0f, 8 / 480.0f, spell_texture);
1724  }
1725  if (pParty->WaterWalkActive()) {
1727  spell_texture =
1729  ->GetTexture();
1730  else
1731  spell_texture =
1733  ->GetTexture();
1734  render->DrawTextureAlphaNew(396 / 640.0f, 8 / 480.0f,
1735  spell_texture);
1736  }
1737  }
1738 
1739  for (uint i = 0; i < 4; ++i) {
1740  if (pParty->pPlayers[i].pPlayerBuffs[PLAYER_BUFF_HAMMERHANDS].Active())
1741  render->DrawTextureAlphaNew(
1743  640.0f,
1744  427 / 480.0f, game_ui_playerbuff_hammerhands);
1745  if (pParty->pPlayers[i].pPlayerBuffs[PLAYER_BUFF_BLESS].Active())
1746  render->DrawTextureAlphaNew(
1748  640.0f,
1749  393 / 480.0f, game_ui_playerbuff_bless);
1750  if (pParty->pPlayers[i].pPlayerBuffs[PLAYER_BUFF_PRESERVATION].Active())
1751  render->DrawTextureAlphaNew(
1753  640.0f,
1754  410 / 480.0f, game_ui_playerbuff_preservation);
1755  if (pParty->pPlayers[i]
1756  .pPlayerBuffs[PLAYER_BUFF_PAIN_REFLECTION]
1757  .Active())
1758  render->DrawTextureAlphaNew(
1760  640.0f,
1762  }
1763 }

Перекрестные ссылки Party::bFlying, byte_4E5DD8, current_screen_type, Party::FlyActive(), game_ui_playerbuff_bless, game_ui_playerbuff_hammerhands, game_ui_playerbuff_pain_reflection, game_ui_playerbuff_preservation, IconFrameTable::GetFrame(), Icon::GetTexture(), OS_GetTime(), party_buff_icons, PARTY_FLAGS_1_STANDING_ON_WATER, pIconsFrameTable, PLAYER_BUFF_BLESS, PLAYER_BUFF_HAMMERHANDS, PLAYER_BUFF_PAIN_REFLECTION, PLAYER_BUFF_PRESERVATION, pParty, Party::pPartyBuffs, pPartySpellbuffsUI_smthns, pPartySpellbuffsUI_XYs, pPlayerPortraitsXCoords_For_PlayerBuffAnimsDrawing, Party::pPlayers, render, SCREEN_GAME, SCREEN_NPC_DIALOGUE, Party::uFlags, uIconIdx_FlySpell, uIconIdx_WaterWalk и Party::WaterWalkActive().

Используется в Engine::DrawGUI().

+ Граф вызовов:
+ Граф вызова функции:

◆ GameUI_DrawTorchlightAndWizardEye()

void GameUI_DrawTorchlightAndWizardEye ( )

См. определение в файле UIGame.cpp строка 2205

Перекрестные ссылки current_screen_type, IconFrameTable::GetFrame(), Icon::GetTexture(), UIAnimation::icon, Icon::id, pEventTimer, pIconsFrameTable, pParty, pUIAnim_WizardEye, pUIAnum_Torchlight, render, SCREEN_BOOKS, SCREEN_BRANCHLESS_NPC_DIALOG, SCREEN_CHEST, SCREEN_CHEST_INVENTORY, SCREEN_GAME, SCREEN_LOADGAME, SCREEN_MENU, SCREEN_OPTIONS, SCREEN_REST, SCREEN_SAVEGAME, SCREEN_SPELL_BOOK, Timer::Time(), Party::TorchlightActive(), Party::WizardEyeActive(), UIAnimation::x и UIAnimation::y.

Используется в Engine::DrawGUI().

+ Граф вызовов:
+ Граф вызова функции:

◆ GameUI_DrawCharacterSelectionFrame()

void GameUI_DrawCharacterSelectionFrame ( )

См. определение в файле UIGame.cpp строка 1688

1688  {
1689  if (uActiveCharacter)
1690  render->DrawTextureAlphaNew(
1692  [uActiveCharacter - 1] -
1693  9) /
1694  640.0f,
1695  380 / 480.0f, game_ui_player_selection_frame);
1696 }

Перекрестные ссылки game_ui_player_selection_frame, pPlayerPortraitsXCoords_For_PlayerBuffAnimsDrawing, render и uActiveCharacter.

Используется в Engine::DrawGUI().

+ Граф вызова функции:

◆ GameUI_CharacterQuickRecord_Draw()

void GameUI_CharacterQuickRecord_Draw ( GUIWindow window,
Player player 
)

См. определение в файле UIGame.cpp строка 1057

1057  {
1058  Image *v13; // eax@6
1059  PlayerFrame *v15; // eax@12
1060  const char *v29; // eax@16
1061  int v36; // esi@22
1062  signed int uFramesetID; // [sp+20h] [bp-8h]@9
1063  int uFramesetIDa; // [sp+20h] [bp-8h]@18
1064 
1065  uint numActivePlayerBuffs = 0;
1066  for (uint i = 0; i < 24; ++i) {
1067  if (player->pPlayerBuffs[i].Active()) ++numActivePlayerBuffs;
1068  }
1069 
1070  window->uFrameHeight =
1071  ((pFontArrus->GetHeight() + 162) +
1072  ((numActivePlayerBuffs - 1) * pFontArrus->GetHeight()));
1073  window->uFrameZ = window->uFrameWidth + window->uFrameX - 1;
1074  window->uFrameW = ((pFontArrus->GetHeight() + 162) +
1075  ((numActivePlayerBuffs - 1) * pFontArrus->GetHeight())) +
1076  window->uFrameY - 1;
1077  window->DrawMessageBox(0);
1078 
1079  if (player->IsEradicated()) {
1081  } else if (player->IsDead()) {
1083  } else {
1084  uFramesetID =
1086  if (!uFramesetID) uFramesetID = 1;
1087  if (player->expression == CHARACTER_EXPRESSION_21)
1089  &player->_expression21_frameset,
1091  else
1092  v15 = pPlayerFrameTable->GetFrameBy_x(uFramesetID,
1093  pMiscTimer->Time());
1094  player->field_1AA2 = v15->uTextureID - 1;
1095  v13 = game_ui_player_faces[window->par1C][v15->uTextureID - 1];
1096  }
1097 
1098  render->DrawTextureAlphaNew((window->uFrameX + 24) / 640.0f,
1099  (window->uFrameY + 24) / 480.0f, v13);
1100 
1101  auto str =
1104  429, player->pName,
1105  localization->GetClassName(player->classType)) // "%s the %s"
1106  + "\f00000\n" +
1107  StringPrintf("%s : \f%05u%d\f00000 / %d\n",
1108  localization->GetString(108), // "Hit Points"
1110  player->sHealth, player->GetMaxHealth()),
1111  player->sHealth, player->GetMaxHealth()) +
1112  StringPrintf("%s : \f%05u%d\f00000 / %d\n",
1113  localization->GetString(212), // "Spell Points"
1115  player->sMana, player->GetMaxMana()),
1116  player->sMana, player->GetMaxMana()) +
1117  StringPrintf("%s: \f%05d%s\f00000\n",
1118  localization->GetString(47), // Condition
1121  player->GetMajorConditionIdx()));
1122 
1123  if (player->uQuickSpell)
1124  v29 = pSpellStats->pInfos[player->uQuickSpell].pShortName;
1125  else
1126  v29 = localization->GetString(153);
1127 
1128  str += StringPrintf("%s: %s", localization->GetString(172),
1129  v29); // "Quick Spell"
1130 
1131  window->DrawText(pFontArrus, 120, 22, 0, str, 0, 0, 0);
1132 
1133  uFramesetIDa = 0;
1134  for (uint i = 0; i < 24; ++i) {
1135  SpellBuff *buff = &player->pPlayerBuffs[i];
1136  if (buff->Active()) {
1137  v36 = uFramesetIDa++ * pFontComic->GetHeight() + 134;
1138  window->DrawText(pFontComic, 52, v36,
1140  localization->GetSpellName(20 + i), 0, 0, 0);
1142  v36, window, buff->expire_time - pParty->GetPlayingTime(),
1143  pFontComic);
1144  }
1145  }
1146 
1147  auto active_spells = localization->FormatString(
1148  450, // Active Spells: %s
1149  uFramesetIDa == 0 ? localization->GetString(153) : ""); // "None"
1150  window->DrawText(pFontArrus, 14, 114, 0, active_spells, 0, 0, 0);
1151 }

Перекрестные ссылки Player::_expression21_animtime, Player::_expression21_frameset, SpellBuff::Active(), CHARACTER_EXPRESSION_21, Player::classType, DrawBuff_remaining_time_string(), SpellBuff::expire_time, Player::expression, Player::field_1AA2, Localization::FormatString(), game_ui_player_face_dead, game_ui_player_face_eradicated, game_ui_player_faces, Localization::GetCharacterConditionName(), Localization::GetClassName(), GetConditionDrawColor(), PlayerFrameTable::GetFrameBy_x(), PlayerFrameTable::GetFrameBy_y(), PlayerFrameTable::GetFrameIdByExpression(), GUIFont::GetHeight(), Player::GetMajorConditionIdx(), Player::GetMaxHealth(), Player::GetMaxMana(), Party::GetPlayingTime(), Localization::GetSpellName(), Localization::GetString(), Player::IsDead(), Player::IsEradicated(), localization, pFontArrus, pFontComic, SpellStats::pInfos, pMiscTimer, Player::pName, pParty, Player::pPlayerBuffs, pPlayerFrameTable, SpellInfo::pShortName, pSpellStats, render, Player::sHealth, Player::sMana, StringPrintf(), Timer::Time(), ui_character_header_text_color, ui_game_character_record_playerbuff_colors, UI_GetHealthManaAndOtherQualitiesStringColor(), Player::uQuickSpell, PlayerFrame::uTextureID и Timer::uTimeElapsed.

Используется в UI_OnMouseRightClick().

+ Граф вызовов:
+ Граф вызова функции:

◆ GameUI_DrawNPCPopup()

void GameUI_DrawNPCPopup ( void _this)

См. определение в файле UIGame.cpp строка 891

891  { // PopupWindowForBenefitAndJoinText
892  int v1; // edi@2
893  NPCData *pNPC; // eax@16
894  const char *pText; // eax@18
895  GUIWindow popup_window; // [sp+Ch] [bp-60h]@23
896  int a2; // [sp+60h] [bp-Ch]@16
897  const char *lpsz; // [sp+68h] [bp-4h]@6
898 
899  char buf[4096];
900  if (bNoNPCHiring != 1) {
901  v1 = 0;
902  /*do
903  {
904  if ( v3->pName )
905  tmp_str[v1++] = v2;
906  ++v3;
907  ++v2;
908  }
909  while ( (signed int)v3 < (signed int)&pParty->pPickedItem );*/
910  for (int i = 0; i < 2; ++i) {
911  if (pParty->pHirelings[i].pName) buf[v1++] = i;
912  }
913  lpsz = 0;
914  if ((signed int)pNPCStats->uNumNewNPCs > 0) {
915  /*v4 = pNPCStats->pNewNPCData;
916  do
917  {
918  if ( v4->uFlags & 0x80
919  && (!pParty->pHirelings[0].pName || strcmp(v4->pName,
920  pParty->pHirelings[0].pName))
921  && (!pParty->pHirelings[1].pName || strcmp(v4->pName,
922  pParty->pHirelings[1].pName)) ) tmp_str[v1++] = (char)lpsz + 2;
923  ++lpsz;
924  ++v4;
925  }
926  while ( (signed int)lpsz < (signed int)pNPCStats->uNumNewNPCs );*/
927  for (uint i = 0; i < pNPCStats->uNumNewNPCs; ++i) {
928  if (pNPCStats->pNewNPCData[i].Hired()) {
929  if (!pParty->pHirelings[0].pName ||
930  strcmp((char *)pNPCStats->pNewNPCData[i].pName,
931  (char *)pParty->pHirelings[0].pName)) {
932  if (!pParty->pHirelings[1].pName ||
933  strcmp((char *)pNPCStats->pNewNPCData[i].pName,
934  (char *)pParty->pHirelings[1].pName))
935  buf[v1++] = i + 2;
936  }
937  }
938  }
939  }
940  if ((signed int)((char *)_this + pParty->hirelingScrollPosition) < v1) {
942  -1 - pParty->hirelingScrollPosition - (int)_this;
944  if (pNPC) {
945  if (a2 == 57)
946  pText = pNPCTopics[512].pText; // Baby dragon
947  else
948  pText =
949  (const char *)pNPCStats->pProfessions[pNPC->uProfession]
950  .pBenefits;
951  lpsz = pText;
952  if (!pText) {
953  lpsz =
954  (const char *)pNPCStats->pProfessions[pNPC->uProfession]
955  .pJoinText;
956  if (!lpsz) lpsz = "";
957  }
958  popup_window.sHint.clear();
959  popup_window.uFrameX = 38;
960  popup_window.uFrameY = 60;
961  popup_window.uFrameWidth = 276;
962  popup_window.uFrameZ = 313;
963  popup_window.uFrameHeight =
964  pFontArrus->CalcTextHeight(lpsz, popup_window.uFrameWidth,
965  0) +
966  2 * pFontArrus->GetHeight() + 24;
967  if ((signed int)popup_window.uFrameHeight < 130)
968  popup_window.uFrameHeight = 130;
969  popup_window.uFrameWidth = 400;
970  popup_window.uFrameZ = popup_window.uFrameX + 399;
971  popup_window.DrawMessageBox(0);
972 
973  auto tex_name = StringPrintf("NPC%03d", pNPC->uPortraitID);
974  render->DrawTextureAlphaNew(
975  (popup_window.uFrameX + 22) / 640.0f,
976  (popup_window.uFrameY + 36) / 480.0f,
977  assets->GetImage_ColorKey(tex_name, 0x7FF));
978 
979  String title;
980  if (pNPC->uProfession) {
981  title = localization->FormatString(
982  429, pNPC->pName,
984  } else {
985  title = pNPC->pName;
986  }
987  popup_window.DrawTitleText(
988  pFontArrus, 0, 12, Color16(0xFFu, 0xFFu, 0x9Bu), title, 3);
989  popup_window.uFrameWidth -= 24;
990  popup_window.uFrameZ =
991  popup_window.uFrameX + popup_window.uFrameWidth - 1;
992  popup_window.DrawText(
993  pFontArrus, 100, 36, 0,
994  BuildDialogueString((char *)lpsz, uActiveCharacter - 1, 0,
995  0, 0));
996  }
997  }
998  }
999 }

Перекрестные ссылки assets, bNoNPCHiring, BuildDialogueString(), GUIFont::CalcTextHeight(), Color16(), GUIWindow::DrawMessageBox(), GUIWindow::DrawText(), GUIWindow::DrawTitleText(), Localization::FormatString(), GUIFont::GetHeight(), AssetsManager::GetImage_ColorKey(), GetNewNPCData(), Localization::GetNpcProfessionName(), NPCData::Hired(), Party::hirelingScrollPosition, localization, NPCProfession::pBenefits, pFontArrus, Party::pHirelings, NPCProfession::pJoinText, NPCData::pName, NPCStats::pNewNPCData, pNPCStats, pNPCTopics, pParty, NPCStats::pProfessions, render, sDialogue_SpeakingActorNPC_ID, GUIWindow::sHint, StringPrintf(), uActiveCharacter, GUIWindow::uFrameHeight, GUIWindow::uFrameWidth, GUIWindow::uFrameX, GUIWindow::uFrameY, GUIWindow::uFrameZ, NPCStats::uNumNewNPCs, NPCData::uPortraitID и NPCData::uProfession.

Используется в UI_OnMouseRightClick().

+ Граф вызовов:
+ Граф вызова функции:

◆ CharacterUI_GetSkillDescText()

String CharacterUI_GetSkillDescText ( unsigned int  uPlayerID,
PLAYER_SKILL_TYPE  uPlayerSkillType 
)

См. определение в файле UIPopup.cpp строка 1044

1045  {
1046  char a2[1200]; // [sp+Ch] [bp-538h]@7
1047  char Source[120]; // [sp+4BCh] [bp-88h]@7
1048  int v35; // [sp+53Ch] [bp-8h]@1
1049 
1050  v35 = pFontSmallnum->GetLineWidth(localization->GetString(431)); // Normal
1052  (signed int)v35)
1053  v35 = pFontSmallnum->GetLineWidth(
1054  localization->GetString(433)); // Expert
1056  (signed int)v35)
1057  v35 = pFontSmallnum->GetLineWidth(
1058  localization->GetString(432)); // Master
1060  (signed int)v35)
1061  v35 =
1063 
1064  char static_sub_417BB5_out_string[1200];
1065  a2[0] = 0;
1066  Source[0] = 0;
1067  strcpy(a2, "%s\n\n");
1068  sprintf(Source, "\f%05d",
1069  GetSkillColor(pParty->pPlayers[uPlayerID].classType,
1070  uPlayerSkillType, 1));
1071  strcat(a2, Source);
1072  strcat(a2, "%s\t%03d:\t%03d%s\t000\n");
1073  sprintf(Source, "\f%05d",
1074  GetSkillColor(pParty->pPlayers[uPlayerID].classType,
1075  uPlayerSkillType, 2));
1076  strcat(a2, Source);
1077  strcat(a2, "%s\t%03d:\t%03d%s\t000\n");
1078  sprintf(Source, "\f%05d",
1079  GetSkillColor(pParty->pPlayers[uPlayerID].classType,
1080  uPlayerSkillType, 3));
1081  strcat(a2, Source);
1082  strcat(a2, "%s\t%03d:\t%03d%s\t000\n");
1083  sprintf(Source, "\f%05d",
1084  GetSkillColor(pParty->pPlayers[uPlayerID].classType,
1085  uPlayerSkillType, 4));
1086  strcat(a2, Source);
1087  strcat(a2, "%s\t%03d:\t%03d%s\t000\n");
1088  if ((pParty->pPlayers[uPlayerID].pActiveSkills[uPlayerSkillType] & 0x3F) ==
1089  (pParty->pPlayers[uPlayerID].GetActualSkillLevel(uPlayerSkillType) &
1090  0x3F)) {
1091  sprintf(static_sub_417BB5_out_string, a2,
1092  localization->GetSkillDescription(uPlayerSkillType),
1093  localization->GetString(431), v35 + 3, v35 + 15,
1095  uPlayerSkillType), // changed from 5 to 15 to add space
1096  // after ':'
1097  localization->GetString(433), v35 + 3, v35 + 15,
1098  localization->GetSkillDescriptionExpert(uPlayerSkillType),
1099  localization->GetString(432), v35 + 3, v35 + 15,
1100  localization->GetSkillDescriptionMaster(uPlayerSkillType),
1101  localization->GetString(96), v35 + 3, v35 + 15,
1102  localization->GetSkillDescriptionGrand(uPlayerSkillType));
1103  } else {
1104  sprintf(Source, "\f%05d", Color16(0xFFu, 0xFFu, 0xFFu));
1105  strcat(a2, Source);
1106  strcat(a2, "%s: +%d");
1107  sprintf(
1108  static_sub_417BB5_out_string, a2,
1109  localization->GetSkillDescription(uPlayerSkillType),
1110  localization->GetString(431), v35 + 3, v35 + 5,
1111  localization->GetSkillDescriptionNormal(uPlayerSkillType),
1112  localization->GetString(433), v35 + 3, v35 + 5,
1113  localization->GetSkillDescriptionExpert(uPlayerSkillType),
1114  localization->GetString(432), v35 + 3, v35 + 5,
1115  localization->GetSkillDescriptionMaster(uPlayerSkillType),
1116  localization->GetString(96), v35 + 3, v35 + 5,
1117  localization->GetSkillDescriptionGrand(uPlayerSkillType),
1118  localization->GetString(623), // Bonus
1119  (pParty->pPlayers[uPlayerID].GetActualSkillLevel(uPlayerSkillType) &
1120  0x3F) -
1121  (pParty->pPlayers[uPlayerID].pActiveSkills[uPlayerSkillType] &
1122  0x3F));
1123  }
1124  return String(static_sub_417BB5_out_string);
1125 }

Перекрестные ссылки Color16(), GUIFont::GetLineWidth(), GetSkillColor(), Localization::GetSkillDescription(), Localization::GetSkillDescriptionExpert(), Localization::GetSkillDescriptionGrand(), Localization::GetSkillDescriptionMaster(), Localization::GetSkillDescriptionNormal(), Localization::GetString(), localization, pFontSmallnum, pParty и Party::pPlayers.

Используется в CharacterUI_SkillsTab_ShowHint() и UI_OnMouseRightClick().

+ Граф вызовов:
+ Граф вызова функции:

◆ CharacterUI_SkillsTab_ShowHint()

void CharacterUI_SkillsTab_ShowHint ( )

См. определение в файле UIPopup.cpp строка 1127

1127  {
1128  unsigned int pX = 0;
1129  unsigned int pY = 0;
1130  pMouse->GetClickPos(&pX, &pY);
1131 
1132  if (pX < 24 || pX > 455 || pY < 18 || pY > 36) {
1133  for (GUIButton *pButton : pGUIWindow_CurrentMenu->vButtons) {
1134  if (pButton->msg == UIMSG_SkillUp && pX >= pButton->uX &&
1135  pX <= pButton->uZ && pY >= pButton->uY && pY <= pButton->uW) {
1136  String pSkillDescText = CharacterUI_GetSkillDescText(
1137  uActiveCharacter - 1,
1138  (PLAYER_SKILL_TYPE)pButton->msg_param);
1140  localization->GetSkillName(pButton->msg_param),
1141  pSkillDescText);
1142  }
1143  }
1144  } else {
1146  localization->GetString(207),
1147  pSkillPointsAttributeDescription); // Skill points / Очки
1148  // навыков
1149  }
1150 }

Перекрестные ссылки CharacterUI_DrawTooltip(), CharacterUI_GetSkillDescText(), Mouse::GetClickPos(), Localization::GetSkillName(), Localization::GetString(), localization, GUIButton::msg, GUIButton::msg_param, pGUIWindow_CurrentMenu, pMouse, pSkillPointsAttributeDescription, uActiveCharacter, UIMSG_SkillUp, GUIButton::uX, GUIButton::uY и GUIWindow::vButtons.

Используется в UI_OnMouseRightClick().

+ Граф вызовов:
+ Граф вызова функции:

◆ CharacterUI_StatsTab_ShowHint()

void CharacterUI_StatsTab_ShowHint ( )

См. определение в файле UIPopup.cpp строка 1153

1153  {
1154  int pStringNum; // edi@1
1155  signed int pTextColor; // eax@15
1156  const char *pHourWord; // ecx@17
1157  const char *pDayWord; // eax@20
1158  int v15; // ebx@28
1159  int pHour; // [sp+14h] [bp-1Ch]@15
1160  unsigned int pDay; // [sp+24h] [bp-Ch]@15
1161 
1162  Point pt = pMouse->GetCursorPos();
1163  for (pStringNum = 0; pStringNum < stat_string_coord.size(); ++pStringNum) {
1164  if (pt.x >= stat_string_coord[pStringNum].x &&
1165  pt.x <= stat_string_coord[pStringNum].x +
1166  stat_string_coord[pStringNum].width) {
1167  if (pt.y >= stat_string_coord[pStringNum].y &&
1168  pt.y <= stat_string_coord[pStringNum].y +
1169  stat_string_coord[pStringNum].height)
1170  break;
1171  }
1172  }
1173 
1174  switch (pStringNum) {
1175  case 0: // Attributes
1176  case 1:
1177  case 2:
1178  case 3:
1179  case 4:
1180  case 5:
1181  case 6:
1183  localization->GetAttirubteName(pStringNum),
1184  localization->GetAttributeDescription(pStringNum));
1185  break;
1186  case 7: // Health Points
1190  break;
1191  case 8: // Spell Points
1195  break;
1196  case 9: // Armor Class
1200  break;
1201  case 10: // Player Condition
1202  {
1203  auto str = String(pPlayerConditionAttributeDescription) + "\n";
1204 
1205  extern std::array<unsigned int, 18> pConditionImportancyTable;
1206  for (uint i = 0; i < 18; ++i) {
1208  ->conditions_times[pConditionImportancyTable[i]]
1209  .Valid()) {
1210  str += " \n";
1211  auto condition_time =
1212  pParty->GetPlayingTime() -
1214  ->conditions_times[pConditionImportancyTable[i]];
1215  pHour = condition_time.GetHoursOfDay();
1216  pDay = condition_time.GetDays();
1217  pTextColor =
1219  str += StringPrintf(format_4E2DE8, pTextColor,
1222  if (pHour && pHour <= 1)
1223  pHourWord = localization->GetString(109);
1224  else
1225  pHourWord = localization->GetString(110);
1226  if (!pDay ||
1227  (pDayWord = localization->GetString(56), pDay > 1))
1228  pDayWord = localization->GetString(57);
1229  str += StringPrintf("%lu %s, %lu %s", pDay, pDayWord, pHour,
1230  pHourWord);
1231  }
1232  }
1233 
1234  if (!str.empty())
1236  break;
1237  }
1238 
1239  case 11: // Fast Spell
1243  break;
1244 
1245  case 12: // Player Age
1249  break;
1250 
1251  case 13: // Player Level
1255  break;
1256 
1257  case 14: // Experience
1258  {
1259  v15 = pPlayers[uActiveCharacter]->uLevel;
1260  do {
1261  if (pPlayers[uActiveCharacter]->uExperience < GetExperienceRequiredForLevel(v15))
1262  break;
1263  ++v15;
1264  } while (v15 <= 10000);
1265 
1266  String str1;
1267  String str2;
1268  if (v15 > pPlayers[uActiveCharacter]->uLevel)
1269  str1 = localization->FormatString(LSTR_ELIGIBLE_TO_LEVELUP, v15);
1270  str2 = localization->FormatString(
1271  LSTR_XP_UNTIL_NEXT_LEVEL,
1272  (int)(GetExperienceRequiredForLevel(v15) - pPlayers[uActiveCharacter]->uExperience),
1273  v15 + 1);
1274  str1 += "\n" + str2;
1275 
1276  str2 = String(pPlayerExperienceAttributeDescription) + "\n \n" + str1;
1277 
1279  break;
1280  }
1281 
1282  case 15: // Attack Bonus
1284  int meleerecov = pPlayers[uActiveCharacter]->GetAttackRecoveryTime(0);
1285  char recov[100];
1286  sprintf(recov, "\n\nRecovery time: %d", meleerecov);
1289  /*pAttackBonusAttributeDescription*/test);
1290  }
1291  break;
1292 
1293  case 16: // Attack Damage
1297  break;
1298 
1299  case 17: // Missle Bonus
1301  int missrecov = pPlayers[uActiveCharacter]->GetAttackRecoveryTime(1);
1302  char recovm[100];
1303  sprintf(recovm, "\n\nRecovery time: %d", missrecov);
1306  /*pMissleBonusAttributeDescription*/test2);
1307  }
1308  break;
1309 
1310  case 18: // Missle Damage
1314  break;
1315 
1316  case 19: // Fire Resistance
1320  break;
1321 
1322  case 20: // Air Resistance
1326  break;
1327 
1328  case 21: // Water Resistance
1332  break;
1333 
1334  case 22: // Earth Resistance
1338  break;
1339 
1340  case 23: // Mind Resistance
1344  break;
1345 
1346  case 24: // Body Resistance
1350  break;
1351 
1352  case 25: // Skill Points
1356  break;
1357 
1358  case 26: // Class description
1359  {
1361  pPlayers[uActiveCharacter]->classType),
1363  pPlayers[uActiveCharacter]->classType));
1364  } break;
1365 
1366  default:
1367  break;
1368  }
1369 }

Перекрестные ссылки CharacterUI_DrawTooltip(), format_4E2DE8, Localization::FormatString(), Localization::GetAttirubteName(), Localization::GetAttributeDescription(), Localization::GetCharacterConditionName(), Localization::GetClassDescription(), Localization::GetClassName(), GetConditionDrawColor(), Mouse::GetCursorPos(), GetExperienceRequiredForLevel(), Party::GetPlayingTime(), Localization::GetString(), localization, pAirResistanceAttributeDescription, pArmourClassAttributeDescription, pAttackBonusAttributeDescription, pAttackDamageAttributeDescription, pBodyResistanceAttributeDescription, pConditionImportancyTable, pEarthResistanceAttributeDescription, pFastSpellAttributeDescription, pFireResistanceAttributeDescription, pHealthPointsAttributeDescription, pMindResistanceAttributeDescription, pMissleBonusAttributeDescription, pMissleDamageAttributeDescription, pMouse, pParty, pPlayerAgeAttributeDescription, pPlayerConditionAttributeDescription, pPlayerExperienceAttributeDescription, pPlayerLevelAttributeDescription, pPlayers, pSkillPointsAttributeDescription, pSpellPointsAttributeDescription, pWaterResistanceAttributeDescription, stat_string_coord, StringPrintf(), uActiveCharacter, Point::x и Point::y.

Используется в UI_OnMouseRightClick().

+ Граф вызовов:
+ Граф вызова функции:

◆ CharacterUI_InventoryTab_Draw()

void CharacterUI_InventoryTab_Draw ( Player player,
bool  a2 
)

См. определение в файле UICharacter.cpp строка 1829

1829  {
1830  render->DrawTextureAlphaNew(8 / 640.0f, 8 / 480.0f,
1832  if (Cover_Strip) {
1833  if (ui_character_inventory_background_strip == nullptr) {
1834  // strip doesnt load if you havent already look at
1835  // inventorys
1837  assets->GetImage_ColorKey("fr_strip", 0x7FF);
1838  }
1839  render->DrawTextureAlphaNew(8 / 640.0f, 305 / 480.0f,
1841  }
1842 
1843  for (uint i = 0; i < 126; ++i) {
1844  if (player->pInventoryMatrix[i] <= 0) continue;
1845  if (!player->pInventoryItemList[player->pInventoryMatrix[i] - 1]
1846  .uItemID)
1847  continue;
1848  unsigned int uCellY = 32 * (i / 14) + 17;
1849  unsigned int uCellX = 32 * (i % 14) + 14;
1850 
1851  Image *pTexture = assets->GetImage_Alpha(
1852  player->pInventoryItemList[player->pInventoryMatrix[i] - 1]
1853  .GetIconName());
1854 
1855  int width = pTexture->GetWidth();
1856  int height = pTexture->GetHeight();
1857  if (width < 14) width = 14;
1858  if (height < 14) height = 14;
1859 
1860  signed int X_offset = (((signed int)((width - 14) & 0xFFFFFFE0) + 32) - width) / 2;
1861  signed int Y_offset = (((signed int)((height - 14) & 0xFFFFFFE0) + 32) - height) / 2;
1862  CharacterUI_DrawItem(uCellX + X_offset, uCellY + Y_offset,
1863  &(player->pInventoryItemList[player->pInventoryMatrix[i] - 1]), 0);
1864  }
1865 }

Перекрестные ссылки assets, CharacterUI_DrawItem(), Image::GetHeight(), ItemGen::GetIconName(), AssetsManager::GetImage_Alpha(), AssetsManager::GetImage_ColorKey(), Image::GetWidth(), Player::pInventoryItemList, Player::pInventoryMatrix, render, ui_character_inventory_background, ui_character_inventory_background_strip и ItemGen::uItemID.

Используется в GUIWindow::HouseDialogManager(), ShopDialogDisplayEquip(), ShopDialogIdentify(), ShopDialogRepair(), ShopDialogSellEquip(), GUIWindow_CharacterRecord::Update(), GUIWindow_Chest::Update() и GUIWindow_Inventory_CastSpell::Update().

+ Граф вызовов:
+ Граф вызова функции:

◆ CharacterUI_DrawPaperdoll()

void CharacterUI_DrawPaperdoll ( Player player)

См. определение в файле UICharacter.cpp строка 930

930  {
931  ItemGen *item; // edi@38
932  int item_X; // ebx@38
933  int index; // eax@65
934  Image *v59; // ebx@129
935  Image *v75; // ebx@170
936  Image *v94; // ebx@214
937  Image *v127; // ebx@314
938  Image *v153; // eax@370
939  char *v166; // [sp-8h] [bp-54h]@16
940  const char *container = nullptr; // [sp-8h] [bp-54h]@79
941  char *v181; // [sp-8h] [bp-54h]@337
942  int item_Y; // [sp+10h] [bp-3Ch]@38
943  int pBodyComplection; // [sp+24h] [bp-28h]@6
944  bool two_handed_left_fist; // [sp+34h] [bp-18h]@361
945  int IsDwarf; // [sp+40h] [bp-Ch]@4
946 
947  if (player->GetRace() == CHARACTER_RACE_DWARF) {
948  IsDwarf = 1;
949  pBodyComplection = player->GetSexByVoice() == SEX_MALE ? 2 : 3;
950  } else {
951  IsDwarf = 0;
952  pBodyComplection = player->GetSexByVoice() == SEX_MALE ? 0 : 1;
953  }
954 
955  int uPlayerID = 0;
956  for (uint i = 0; i < 4; ++i) {
957  if (pPlayers[i + 1] == player) {
958  uPlayerID = i + 1;
959  break;
960  }
961  }
962 
963  render->ResetUIClipRect();
964  render->DrawTextureAlphaNew(467 / 640.0f, 0,
966  if (IsPlayerWearingWatersuit[uPlayerID]) { // акваланг
967  render->DrawTextureAlphaNew(pPaperdoll_BodyX / 640.0f,
968  pPaperdoll_BodyY / 480.0f,
969  papredoll_dbods[uPlayerID - 1]);
971  render->ZDrawTextureAlpha(
972  pPaperdoll_BodyX / 640.0f, pPaperdoll_BodyY / 480.0f,
973  papredoll_dbods[uPlayerID - 1], player->pEquipment.uArmor);
974 
975  //Рука не занята или ...
976  if (!player->GetItem(&PlayerEquipment::uMainHand) ||
977  (player->GetMainHandItem()->GetItemEquipType() !=
978  EQUIP_TWO_HANDED) &&
979  (player->GetMainHandItem()->GetItemEquipType() !=
982  render->DrawTextureAlphaNew(
983  (pPaperdoll_BodyX + pPaperdoll_LeftHand[pBodyComplection][0]) /
984  640.0f,
985  (pPaperdoll_BodyY + pPaperdoll_LeftHand[pBodyComplection][1]) /
986  480.0f,
987  papredoll_dlads[uPlayerID - 1]);
988  // -----------------------------------------------------(Hand/Рука)---------------------------------------------------------------
989  if (player->GetItem(&PlayerEquipment::uMainHand)) {
990  item = player->GetMainHandItem();
991  item_X = pPaperdoll_BodyX +
992  paperdoll_Weapon[pBodyComplection][1][0] -
993  pItemsTable->pItems[item->uItemID].uEquipX;
994  item_Y = pPaperdoll_BodyY +
995  paperdoll_Weapon[pBodyComplection][1][1] -
996  pItemsTable->pItems[item->uItemID].uEquipY;
997  if (item->uItemID == ITEM_BLASTER)
998  v166 = "item64v1";
999  else
1000  v166 = item->GetIconName();
1001 
1002  auto texture = assets->GetImage_Alpha(v166);
1003 
1004  if (item->ItemEnchanted()) {
1005  if (item->AuraEffectRed())
1006  container = "sptext01";
1007  else if (item->AuraEffectBlue())
1008  container = "sp28a";
1009  else if (item->AuraEffectGreen())
1010  container = "sp30a";
1011  else if (item->AuraEffectPurple())
1012  container = "sp91a";
1014  if (_50C9A8_item_enchantment_timer <= 0) {
1016  item->ResetEnchantAnimation();
1017  ptr_50C9A4_ItemToEnchant = nullptr;
1018  }
1019  render->BlendTextures(
1020  item_X, item_Y, texture,
1021  assets->GetImage_ColorKey(container, 0x7FF),
1022  OS_GetTime() / 10, 0,
1023  255); // should this pass enchant timer?
1024 
1025  } else if (item->uAttributes & ITEM_BROKEN) {
1026  render->DrawTransparentRedShade(item_X / 640.0f,
1027  item_Y / 480.0f, texture);
1028  } else if (item->uAttributes & ITEM_IDENTIFIED) {
1029  render->DrawTextureAlphaNew(item_X / 640.0f, item_Y / 480.0f,
1030  texture);
1031  } else {
1032  render->DrawTransparentGreenShade(item_X / 640.0f,
1033  item_Y / 480.0f, texture);
1034  }
1035 
1037  render->ZDrawTextureAlpha(item_X / 640.0f, item_Y / 480.0f,
1038  texture,
1039  player->pEquipment.uMainHand);
1040  }
1041  } else { // без акваланга
1042  // ----------------(Bow/
1043  // Лук)-------------------------------------------------
1044  if (player->GetItem(&PlayerEquipment::uBow)) {
1045  item = player->GetBowItem();
1046  item_X = pPaperdoll_BodyX +
1047  paperdoll_Weapon[pBodyComplection][2][0] -
1048  pItemsTable->pItems[item->uItemID].uEquipX;
1049  item_Y = pPaperdoll_BodyY +
1050  paperdoll_Weapon[pBodyComplection][2][1] -
1051  pItemsTable->pItems[item->uItemID].uEquipY;
1052 
1053  auto texture = assets->GetImage_Alpha(item->GetIconName());
1054  if (item->ItemEnchanted()) { // применён закл
1055  if (item->AuraEffectRed())
1056  container = "sptext01";
1057  else if (item->AuraEffectBlue())
1058  container = "sp28a";
1059  else if (item->AuraEffectGreen())
1060  container = "sp30a";
1061  else if (item->AuraEffectPurple())
1062  container = "sp91a";
1064  if (_50C9A8_item_enchantment_timer <= 0) {
1066  item->ResetEnchantAnimation();
1067  ptr_50C9A4_ItemToEnchant = nullptr;
1068  }
1069  render->BlendTextures(
1070  item_X, item_Y, texture,
1071  assets->GetImage_ColorKey(container, 0x7FF),
1072  OS_GetTime() / 10, 0, 255);
1073  } else if (item->uAttributes & ITEM_BROKEN) {
1074  render->DrawTransparentRedShade(item_X / 640.0f,
1075  item_Y / 480.0f, texture);
1076  } else if (!(item->uAttributes & ITEM_IDENTIFIED)) {
1077  render->DrawTransparentGreenShade(item_X / 640.0f,
1078  item_Y / 480.0f, texture);
1079  } else { // опознанный лук
1080  render->DrawTextureAlphaNew(item_X / 640.0f, item_Y / 480.0f,
1081  texture);
1082  }
1083 
1085  render->ZDrawTextureAlpha(item_X / 640.0f, item_Y / 480.0f,
1086  texture, player->pEquipment.uBow);
1087  }
1088  // -----------------------------(Cloak/Плащ)---------------------------------------------------------
1089  if (player->GetItem(&PlayerEquipment::uCloak)) {
1090  item = player->GetCloakItem();
1091  switch (item->uItemID) {
1092  case ITEM_RELIC_TWILIGHT:
1093  index = 5;
1094  break;
1096  index = 6;
1097  break;
1098  case ITEM_RARE_SUN_CLOAK:
1099  index = 7;
1100  break;
1101  case ITEM_RARE_MOON_CLOAK:
1102  index = 8;
1103  break;
1105  index = 9;
1106  break;
1107  default:
1108  index = item->uItemID - 105;
1109  break;
1110  }
1111  if (index >= 0 && index < 10) {
1112  item_X = pPaperdoll_BodyX +
1113  paperdoll_Cloak[pBodyComplection][index][0];
1114  item_Y = pPaperdoll_BodyY +
1115  paperdoll_Cloak[pBodyComplection][index][1];
1116 
1117  if (item->ItemEnchanted()) {
1118  if (item->AuraEffectRed())
1119  container = "sptext01";
1120  else if (item->AuraEffectBlue())
1121  container = "sp28a";
1122  else if (item->AuraEffectGreen())
1123  container = "sp30a";
1124  else if (item->AuraEffectPurple())
1125  container = "sp91a";
1127  if (_50C9A8_item_enchantment_timer <= 0) {
1129  item->ResetEnchantAnimation(); // ~0x000000F0
1130  ptr_50C9A4_ItemToEnchant = nullptr;
1131  }
1132  render->BlendTextures(
1133  item_X, item_Y,
1134  paperdoll_cloak_texture[pBodyComplection][index],
1135  assets->GetImage_ColorKey(container, 0x7FF),
1136  OS_GetTime() / 10, 0, 255);
1137  } else if (item->uAttributes & ITEM_BROKEN) {
1138  render->DrawTransparentRedShade(
1139  item_X / 640.0f, item_Y / 480.0f,
1140  paperdoll_cloak_texture[pBodyComplection][index]);
1141  } else {
1142  render->DrawTextureAlphaNew(
1143  item_X / 640.0f, item_Y / 480.0f,
1144  paperdoll_cloak_texture[pBodyComplection][index]);
1145  }
1146 
1148  render->ZDrawTextureAlpha(
1149  item_X / 640.0f, item_Y / 480.0f,
1150  paperdoll_cloak_texture[pBodyComplection][index],
1151  player->pEquipment.uCloak);
1152  }
1153  }
1154  // -------------------------------(Paperdoll/Кукла)-------------------------------------------
1155  render->DrawTextureAlphaNew(pPaperdoll_BodyX / 640.0f,
1156  pPaperdoll_BodyY / 480.0f,
1157  papredoll_dbods[uPlayerID - 1]);
1158  // -------------------------------(Armor/Броня)-----------------------------------------------
1159  if (player->GetItem(&PlayerEquipment::uArmor)) {
1160  item = player->GetArmorItem();
1161  switch (item->uItemID) {
1163  index = 15;
1164  break;
1165  case ITEM_ARTIFACT_YORUBA:
1166  index = 14;
1167  break;
1169  index = 13;
1170  break;
1171  case ITEM_ELVEN_CHAINMAIL:
1172  index = 16;
1173  break;
1174  default:
1175  index = item->uItemID - 66;
1176  break;
1177  }
1178  if (index >= 0 && index < 17) {
1179  item_X = pPaperdoll_BodyX +
1180  paperdoll_Armor_Coord[pBodyComplection][index][0];
1181  item_Y = pPaperdoll_BodyY +
1182  paperdoll_Armor_Coord[pBodyComplection][index][1];
1183 
1184  if (item->ItemEnchanted()) {
1185  if (item->AuraEffectRed())
1186  container = "sptext01";
1187  else if (item->AuraEffectBlue())
1188  container = "sp28a";
1189  else if (item->AuraEffectGreen())
1190  container = "sp30a";
1191  else if (item->AuraEffectPurple())
1192  container = "sp91a";
1194  if (_50C9A8_item_enchantment_timer <= 0) {
1196  item->ResetEnchantAnimation(); // ~0x000000F0
1197  ptr_50C9A4_ItemToEnchant = nullptr;
1198  }
1199  render->BlendTextures(
1200  item_X, item_Y,
1201  paperdoll_armor_texture[pBodyComplection][index][0],
1202  assets->GetImage_ColorKey(container, 0x7FF),
1203  OS_GetTime() / 10, 0, 255);
1204  } else if (item->uAttributes & ITEM_BROKEN) {
1205  render->DrawTransparentRedShade(
1206  item_X / 640.0f, item_Y / 480.0f,
1207  paperdoll_armor_texture[pBodyComplection][index][0]);
1208  } else if (!(item->uAttributes & ITEM_IDENTIFIED)) {
1209  render->DrawTransparentGreenShade(
1210  item_X / 640.0f, item_Y / 480.0f,
1211  paperdoll_armor_texture[pBodyComplection][index][0]);
1212  } else {
1213  render->DrawTextureAlphaNew(
1214  item_X / 640.0f, item_Y / 480.0f,
1215  paperdoll_armor_texture[pBodyComplection][index][0]);
1216  }
1217 
1219  render->ZDrawTextureAlpha(
1220  item_X / 640.0f, item_Y / 480.0f,
1221  paperdoll_armor_texture[pBodyComplection][index][0],
1222  player->pEquipment.uArmor);
1223  }
1224  }
1225  // ----------------------------------(Boot/Обувь)--------------------------------------------------------
1226  if (player->GetItem(&PlayerEquipment::uBoot)) {
1227  item = player->GetBootItem();
1228  switch (item->uItemID) {
1230  index = 5;
1231  v59 = papredoll_flying_feet[player->uCurrentFace];
1232  break;
1234  index = 6;
1235  v59 = paperdoll_boots_texture[pBodyComplection][5];
1236  break;
1237  default:
1238  index = item->uItemID - 115;
1239  v59 = paperdoll_boots_texture[pBodyComplection][index];
1240  break;
1241  }
1242  if (index >= 0 && index < 7) {
1243  item_X = pPaperdoll_BodyX +
1244  paperdoll_Boot[pBodyComplection][index][0];
1245  item_Y = pPaperdoll_BodyY +
1246  paperdoll_Boot[pBodyComplection][index][1];
1247 
1248  if (item->ItemEnchanted()) {
1249  if (item->AuraEffectRed())
1250  container = "sptext01";
1251  else if (item->AuraEffectBlue())
1252  container = "sp28a";
1253  else if (item->AuraEffectGreen())
1254  container = "sp30a";
1255  else if (item->AuraEffectPurple())
1256  container = "sp91a";
1258  if (_50C9A8_item_enchantment_timer <= 0) {
1260  item->ResetEnchantAnimation(); // ~0x000000F0
1261  ptr_50C9A4_ItemToEnchant = nullptr;
1262  }
1263  render->BlendTextures(
1264  item_X, item_Y, v59,
1265  assets->GetImage_ColorKey(container, 0x7FF),
1266  OS_GetTime() * 0.1, 0, 255);
1267  } else if (item->uAttributes & ITEM_BROKEN) {
1268  render->DrawTransparentRedShade(item_X / 640.0f,
1269  item_Y / 480.0f, v59);
1270  } else if (item->uAttributes & ITEM_IDENTIFIED) {
1271  render->DrawTextureAlphaNew(item_X / 640.0f,
1272  item_Y / 480.0f, v59);
1273  } else {
1274  render->DrawTransparentGreenShade(item_X / 640.0f,
1275  item_Y / 480.0f, v59);
1276  }
1277 
1279  render->ZDrawTextureAlpha(item_X / 640.0f, item_Y / 480.0f,
1280  v59, player->pEquipment.uBoot);
1281  }
1282  }
1283  // --------------------------------------------(Hand/Рука)------------------------------------------------------
1284  if (!player->GetItem(&PlayerEquipment::uMainHand) ||
1285  (player->GetMainHandItem()->GetItemEquipType() !=
1286  EQUIP_TWO_HANDED) &&
1287  (player->GetMainHandItem()->GetPlayerSkillType() !=
1289  player->GetItem(&PlayerEquipment::uShield)))
1290  render->DrawTextureAlphaNew(
1291  (pPaperdoll_BodyX + pPaperdoll_LeftHand[pBodyComplection][0]) /
1292  640.0f,
1293  (pPaperdoll_BodyY + pPaperdoll_LeftHand[pBodyComplection][1]) /
1294  480.0f,
1295  papredoll_dlads[uPlayerID - 1]);
1296  // --------------------------------------------(Belt/Пояс)-------------------------------------------------------
1297  if (player->GetItem(&PlayerEquipment::uBelt)) {
1298  item = player->GetBeltItem();
1299  switch (item->uItemID) {
1301  index = 5;
1302  break;
1304  index = 6;
1305  break;
1306  default:
1307  index = item->uItemID - 100;
1308  break;
1309  }
1310  if (index >= 0 && index < 7) {
1311  item_X = pPaperdoll_BodyX +
1312  paperdoll_Belt[pBodyComplection][index][0];
1313  item_Y = pPaperdoll_BodyY +
1314  paperdoll_Belt[pBodyComplection][index][1];
1315  if (IsDwarf != 1 || index == 5)
1316  v75 = paperdoll_belt_texture[pBodyComplection][index];
1317  else
1318  v75 = paperdoll_belt_texture[pBodyComplection - 2][index];
1319 
1320  if (item->ItemEnchanted()) {
1321  if (item->AuraEffectRed())
1322  container = "sptext01";
1323  else if (item->AuraEffectBlue())
1324  container = "sp28a";
1325  else if (item->AuraEffectGreen())
1326  container = "sp30a";
1327  else if (item->AuraEffectPurple())
1328  container = "sp91a";
1330  if (_50C9A8_item_enchantment_timer <= 0) {
1332  item->ResetEnchantAnimation(); // ~0x000000F0
1333  ptr_50C9A4_ItemToEnchant = nullptr;
1334  }
1335  render->BlendTextures(
1336  item_X, item_Y, v75,
1337  assets->GetImage_ColorKey(container, 0x7FF),
1338  OS_GetTime() / 10, 0, 255);
1339  } else if (item->uAttributes & ITEM_BROKEN) {
1340  render->DrawTransparentRedShade(item_X / 640.0f,
1341  item_Y / 480.0f, v75);
1342  } else if (item->uAttributes & ITEM_IDENTIFIED) {
1343  render->DrawTextureAlphaNew(item_X / 640.0f,
1344  item_Y / 480.0f, v75);
1345  } else {
1346  render->DrawTransparentGreenShade(item_X / 640.0f,
1347  item_Y / 480.0f, v75);
1348  }
1349 
1351  render->ZDrawTextureAlpha(item_X / 640.0f, item_Y / 480.0f,
1352  v75, player->pEquipment.uBelt);
1353  }
1354  }
1355  // --------------------------------(Shoulder/Плечи)---------------------------------------------
1356  if (player->GetItem(&PlayerEquipment::uArmor)) {
1357  item = player->GetArmorItem();
1358  switch (item->uItemID) {
1360  index = 15;
1361  break;
1362  case ITEM_ARTIFACT_YORUBA:
1363  index = 14;
1364  break;
1366  index = 13;
1367  break;
1368  case ITEM_ELVEN_CHAINMAIL:
1369  index = 16;
1370  break;
1371  default:
1372  index = item->uItemID - 66;
1373  break;
1374  }
1375  if (index >= 0 && index < 17) {
1376  if (player->GetItem(&PlayerEquipment::uMainHand) &&
1377  (player->GetMainHandItem()->GetItemEquipType() ==
1378  EQUIP_TWO_HANDED ||
1379  player->GetMainHandItem()->GetPlayerSkillType() ==
1381  !player->GetItem(
1382  &PlayerEquipment::uShield))) { // без щита
1383  v94 = paperdoll_armor_texture[pBodyComplection][index][2];
1384  if (paperdoll_armor_texture[pBodyComplection][index][2]) {
1385  v94 =
1386  paperdoll_armor_texture[pBodyComplection][index][1];
1387  item_X = pPaperdoll_BodyX +
1388  paperdoll_shoulder_coord[pBodyComplection]
1389  [index][0];
1390  item_Y = pPaperdoll_BodyY +
1391  paperdoll_shoulder_coord[pBodyComplection]
1392  [index][1];
1393  } else {
1394  item_X =
1396  paperdoll_shoulder_second_coord[pBodyComplection]
1397  [index][0];
1398  item_Y =
1400  paperdoll_shoulder_second_coord[pBodyComplection]
1401  [index][1];
1402  }
1403  if (v94) {
1404  if (item->ItemEnchanted()) {
1405  if (paperdoll_armor_texture[pBodyComplection][index]
1406  [2]) {
1407  if (item->AuraEffectRed())
1408  container = "sptext01";
1409  else if (item->AuraEffectBlue())
1410  container = "sp28a";
1411  else if (item->AuraEffectGreen())
1412  container = "sp30a";
1413  else if (item->AuraEffectPurple())
1414  container = "sp91a";
1417  if (_50C9A8_item_enchantment_timer <= 0) {
1419  item->ResetEnchantAnimation(); // ~0x000000F0
1420  ptr_50C9A4_ItemToEnchant = nullptr;
1421  }
1422  render->BlendTextures(
1423  item_X, item_Y, v94,
1424  assets->GetImage_ColorKey(container, 0x7FF),
1425  OS_GetTime() / 10, 0, 255);
1426  }
1427  } else if (item->uAttributes & ITEM_BROKEN) {
1428  render->DrawTransparentRedShade(
1429  item_X / 640.0f, item_Y / 480.0f, v94);
1430  } else if (item->uAttributes & ITEM_IDENTIFIED) {
1431  render->DrawTextureAlphaNew(item_X / 640.0f,
1432  item_Y / 480.0f, v94);
1433  } else {
1434  render->DrawTransparentGreenShade(
1435  item_X / 640.0f, item_Y / 480.0f, v94);
1436  }
1437  }
1438  } else { // без ничего или с щитом
1439  // v94 =
1440  // paperdoll_armor_texture[pBodyComplection][index][1];
1441  if (paperdoll_armor_texture[pBodyComplection][index][1]) {
1442  item_X = pPaperdoll_BodyX +
1443  paperdoll_shoulder_coord[pBodyComplection]
1444  [index][0];
1445  item_Y = pPaperdoll_BodyY +
1446  paperdoll_shoulder_coord[pBodyComplection]
1447  [index][1];
1448 
1449  if (item->ItemEnchanted()) {
1450  if (item->AuraEffectRed())
1451  container = "sptext01";
1452  else if (item->AuraEffectBlue())
1453  container = "sp28a";
1454  else if (item->AuraEffectGreen())
1455  container = "sp30a";
1456  else if (item->AuraEffectPurple())
1457  container = "sp91a";
1460  if (_50C9A8_item_enchantment_timer <= 0) {
1462  item->ResetEnchantAnimation(); // ~0x000000F0
1463  ptr_50C9A4_ItemToEnchant = nullptr;
1464  }
1465  render->BlendTextures(
1466  item_X, item_Y,
1467  paperdoll_armor_texture[pBodyComplection][index]
1468  [1],
1469  assets->GetImage_ColorKey(container, 0x7FF),
1470  OS_GetTime() / 10, 0, 255);
1471  } else if (item->uAttributes & ITEM_BROKEN) {
1472  render->DrawTransparentRedShade(
1473  item_X / 640.0f, item_Y / 480.0f,
1474  paperdoll_armor_texture[pBodyComplection][index]
1475  [1]);
1476  } else if (item->uAttributes & ITEM_IDENTIFIED) {
1477  render->DrawTextureAlphaNew(
1478  item_X / 640.0f, item_Y / 480.0f,
1479  paperdoll_armor_texture[pBodyComplection][index]
1480  [1]);
1481  } else {
1482  render->DrawTransparentGreenShade(
1483  item_X / 640.0f, item_Y / 480.0f,
1484  paperdoll_armor_texture[pBodyComplection][index]
1485  [1]);
1486  }
1487  }
1488  }
1489  }
1490  }
1491  // ----------------------------------------------(Cloak collar/воротник
1492  // плаща)-------------------------------------
1493  if (player->GetItem(&PlayerEquipment::uCloak)) {
1494  item = player->GetCloakItem();
1495  switch (item->uItemID) {
1496  case ITEM_RELIC_TWILIGHT:
1497  index = 5;
1498  break;
1500  index = 6;
1501  break;
1502  case ITEM_RARE_SUN_CLOAK:
1503  index = 7;
1504  break;
1505  case ITEM_RARE_MOON_CLOAK:
1506  index = 8;
1507  break;
1509  index = 9;
1510  break;
1511  default:
1512  index = item->uItemID - 105;
1513  }
1514  if (index > 0 && index < 10) { // leather cloak has no collar
1515  item_X = pPaperdoll_BodyX +
1516  paperdoll_CloakCollar[pBodyComplection][index][0];
1517  item_Y = pPaperdoll_BodyY +
1518  paperdoll_CloakCollar[pBodyComplection][index][1];
1519  // int r = pIcons_LOD->FindTextureByName("item325v2a1");
1520 
1521  if (paperdoll_cloak_collar_texture[pBodyComplection][index]) {
1522  if (item->ItemEnchanted()) {
1523  if (item->AuraEffectRed())
1524  container = "sptext01";
1525  else if (item->AuraEffectBlue())
1526  container = "sp28a";
1527  else if (item->AuraEffectGreen())
1528  container = "sp30a";
1529  else if (item->AuraEffectPurple())
1530  container = "sp91a";
1533  if (_50C9A8_item_enchantment_timer <= 0) {
1535  item->ResetEnchantAnimation(); // ~0x000000F0
1536  ptr_50C9A4_ItemToEnchant = nullptr;
1537  }
1538  render->BlendTextures(
1539  item_X, item_Y,
1540  paperdoll_cloak_collar_texture[pBodyComplection]
1541  [index],
1542  assets->GetImage_ColorKey(container, 0x7FF),
1543  OS_GetTime() / 10, 0, 255);
1544  } else if (item->uAttributes & ITEM_BROKEN) {
1545  render->DrawTransparentRedShade(
1546  item_X / 640.0f, item_Y / 480.0f,
1547  paperdoll_cloak_collar_texture[pBodyComplection]
1548  [index]);
1549  } else {
1550  render->DrawTextureAlphaNew(
1551  item_X / 640.0f, item_Y / 480.0f,
1552  paperdoll_cloak_collar_texture[pBodyComplection]
1553  [index]);
1554  }
1555 
1557  render->ZDrawTextureAlpha(
1558  item_X / 640.0f, item_Y / 480.0f,
1559  paperdoll_cloak_collar_texture[pBodyComplection]
1560  [index],
1561  player->pEquipment.uCloak);
1562  }
1563  }
1564  }
1565  // --------------------------------------------(Beards/Борода)-------------------------------------------------------
1566  if (player->uCurrentFace == 12 || player->uCurrentFace == 13) {
1567  if (paperdoll_dbrds[player->uCurrentFace])
1568  render->DrawTextureAlphaNew(
1569  (pPaperdoll_BodyX +
1570  pPaperdoll_Beards[2 * player->uCurrentFace - 24]) /
1571  640.0f,
1572  (pPaperdoll_BodyY +
1573  pPaperdoll_Beards[2 * player->uCurrentFace - 23]) /
1574  480.0f,
1575  paperdoll_dbrds[player->uCurrentFace]);
1576  }
1577  // --------------------------------------------(Helm/Шлем)------------------------------------------------------------
1578  if (player->GetItem(&PlayerEquipment::uHelm)) {
1579  item = player->GetHelmItem();
1580  switch (item->uItemID) {
1582  index = 11;
1583  break;
1585  index = 12;
1586  break;
1588  index = 13;
1589  break;
1591  index = 14;
1592  break;
1594  index = 15;
1595  break;
1596  default:
1597  index = item->uItemID - 89;
1598  }
1599  if (index >= 0 && index < 16) {
1600  item_X = pPaperdoll_BodyX +
1601  paperdoll_Helm[pBodyComplection][index][0];
1602  item_Y = pPaperdoll_BodyY +
1603  paperdoll_Helm[pBodyComplection][index][1];
1604  if (IsDwarf != 1 || item->uItemID != ITEM_92)
1605  v127 =
1607  else
1608  v127 = paperdoll_dbrds[11];
1609 
1610  if (item->ItemEnchanted()) {
1611  if (item->AuraEffectRed())
1612  container = "sptext01";
1613  else if (item->AuraEffectBlue())
1614  container = "sp28a";
1615  else if (item->AuraEffectGreen())
1616  container = "sp30a";
1617  else if (item->AuraEffectPurple())
1618  container = "sp91a";
1620  if (_50C9A8_item_enchantment_timer <= 0) {
1622  item->ResetEnchantAnimation();
1623  ptr_50C9A4_ItemToEnchant = nullptr;
1624  }
1625  render->BlendTextures(
1626  item_X, item_Y, v127,
1627  assets->GetImage_ColorKey(container, 0x7FF),
1628  OS_GetTime() / 10, 0, 255);
1629  } else if (item->uAttributes & ITEM_BROKEN) {
1630  render->DrawTransparentRedShade(item_X / 640.0f,
1631  item_Y / 480.0f, v127);
1632  } else if (item->uAttributes & ITEM_IDENTIFIED) {
1633  render->DrawTextureAlphaNew(item_X / 640.0f,
1634  item_Y / 480.0f, v127);
1635  } else {
1636  render->DrawTransparentGreenShade(item_X / 640.0f,
1637  item_Y / 480.0f, v127);
1638  }
1639 
1641  render->ZDrawTextureAlpha(item_X / 640.0f, item_Y / 480.0f,
1642  v127, player->pEquipment.uHelm);
1643  }
1644  }
1645  // ------------------------------------------------(Hand3/Рука3)-------------------------------------------
1646  if (player->GetItem(&PlayerEquipment::uMainHand)) {
1647  item = player->GetMainHandItem();
1648  item_X = pPaperdoll_BodyX +
1649  paperdoll_Weapon[pBodyComplection][1][0] -
1650  pItemsTable->pItems[item->uItemID].uEquipX;
1651  item_Y = pPaperdoll_BodyY +
1652  paperdoll_Weapon[pBodyComplection][1][1] -
1653  pItemsTable->pItems[item->uItemID].uEquipY;
1654  if (item->uItemID == ITEM_BLASTER)
1655  v181 = "item64v1";
1656  else
1657  v181 = item->GetIconName();
1658 
1659  auto texture = assets->GetImage_Alpha(v181);
1660 
1661  if (item->ItemEnchanted()) {
1662  if (item->AuraEffectRed())
1663  container = "sptext01";
1664  else if (item->AuraEffectBlue())
1665  container = "sp28a";
1666  else if (item->AuraEffectGreen())
1667  container = "sp30a";
1668  else if (item->AuraEffectPurple())
1669  container = "sp91a";
1671  if (_50C9A8_item_enchantment_timer <= 0) {
1673  item->ResetEnchantAnimation();
1674  ptr_50C9A4_ItemToEnchant = nullptr;
1675  }
1676  render->BlendTextures(
1677  item_X, item_Y, texture,
1678  assets->GetImage_ColorKey(container, 0x7FF),
1679  OS_GetTime() / 10, 0, 255);
1680  } else if (item->uAttributes & ITEM_BROKEN) {
1681  render->DrawTransparentRedShade(item_X / 640.0f,
1682  item_Y / 480.0f, texture);
1683  } else if (item->uAttributes & ITEM_IDENTIFIED) {
1684  render->DrawTextureAlphaNew(item_X / 640.0f, item_Y / 480.0f,
1685  texture);
1686  } else {
1687  render->DrawTransparentGreenShade(item_X / 640.0f,
1688  item_Y / 480.0f, texture);
1689  }
1690 
1692  render->ZDrawTextureAlpha(item_X / 640.0f, item_Y / 480.0f,
1693  texture,
1694  player->pEquipment.uMainHand);
1695  }
1696  // --------------------------------------------------(Shield/Щит)---------------------------------------------
1697  if (player->GetItem(&PlayerEquipment::uShield)) {
1698  item = player->GetOffHandItem();
1699  if (item->GetPlayerSkillType() == PLAYER_SKILL_DAGGER ||
1701  // v151 = item->uItemID - 400;
1702  item_X = 596;
1703  two_handed_left_fist = true;
1704  switch (item->uItemID) {
1705  case 400:
1706  item_Y = 86;
1707  break;
1708  case 403:
1709  item_Y = 28;
1710  break;
1711  case 415:
1712  item_X = 595;
1713  item_Y = 33;
1714  break;
1715  default:
1716  item_X = pPaperdoll_BodyX +
1717  paperdoll_Weapon[pBodyComplection][0][0] -
1718  pItemsTable->pItems[item->uItemID].uEquipX;
1719  item_Y = pPaperdoll_BodyY +
1720  paperdoll_Weapon[pBodyComplection][0][1] -
1721  pItemsTable->pItems[item->uItemID].uEquipY;
1722  break;
1723  }
1724  } else {
1725  two_handed_left_fist = false;
1726  item_X = pPaperdoll_BodyX +
1727  paperdoll_Weapon[pBodyComplection][0][0] -
1728  pItemsTable->pItems[item->uItemID].uEquipX;
1729  item_Y = pPaperdoll_BodyY +
1730  paperdoll_Weapon[pBodyComplection][0][1] -
1731  pItemsTable->pItems[item->uItemID].uEquipY;
1732  }
1733  v153 = assets->GetImage_Alpha(item->GetIconName());
1734 
1735  if (item->ItemEnchanted()) {
1736  // if (item->AuraEffectRed())
1737  container = "sptext01";
1738  /*else*/
1739  if (item->AuraEffectBlue())
1740  container = "sp28a";
1741  else if (item->AuraEffectGreen())
1742  container = "sp30a";
1743  else if (item->AuraEffectPurple())
1744  container = "sp91a";
1745 
1747  if (_50C9A8_item_enchantment_timer <= 0) {
1749  item->ResetEnchantAnimation();
1750  ptr_50C9A4_ItemToEnchant = nullptr;
1751  }
1752  render->BlendTextures(
1753  item_X, item_Y, v153,
1754  assets->GetImage_ColorKey(container, 0x7FF),
1755  OS_GetTime() / 10, 0, 255);
1756  } else if (item->uAttributes & ITEM_BROKEN) {
1757  render->DrawTransparentRedShade(item_X / 640.0f,
1758  item_Y / 480.0f, v153);
1759  } else if (!(item->uAttributes & ITEM_IDENTIFIED)) {
1760  render->DrawTransparentGreenShade(item_X / 640.0f,
1761  item_Y / 480.0f, v153);
1762  } else {
1763  render->DrawTextureAlphaNew(item_X / 640.0f, item_Y / 480.0f,
1764  v153);
1765  }
1766 
1767  if (two_handed_left_fist) // two-handed - left fist/двуручие -
1768  // левая кисть
1769  render->DrawTextureAlphaNew(
1770  (pPaperdoll_BodyX +
1771  pPaperdollLeftEmptyHand[pBodyComplection][0]) /
1772  640.0f,
1773  (pPaperdoll_BodyY +
1774  pPaperdollLeftEmptyHand[pBodyComplection][1]) /
1775  480.0f,
1776  papredoll_dlhs[uPlayerID - 1]);
1778  render->ZDrawTextureAlpha(item_X / 640.0f, item_Y / 480.0f,
1779  v153, player->pEquipment.uShield);
1780  }
1781  }
1782  // --------------------------------------------------------(RightHand/Правая
1783  // кисть)--------------------------------------------------
1784  render->DrawTextureAlphaNew(
1785  (pPaperdoll_BodyX + pPaperdoll_RightHand[pBodyComplection][0]) / 640.0f,
1786  (pPaperdoll_BodyY + pPaperdoll_RightHand[pBodyComplection][1]) / 480.0f,
1787  papredoll_drhs[uPlayerID - 1]);
1788  // ---------------------------------------------(two-handed - hand/Двуручие -
1789  // рука)--------------------------------------------------
1790  if (player->GetItem(&PlayerEquipment::uMainHand)) {
1791  if (player->GetMainHandItem()->GetItemEquipType() == EQUIP_TWO_HANDED ||
1792  player->GetMainHandItem()->GetPlayerSkillType() ==
1794  !player->GetItem(&PlayerEquipment::uShield))
1795  render->DrawTextureAlphaNew(
1796  (pPaperdoll_BodyX +
1797  pPaperdoll_SecondLeftHand[pBodyComplection][0]) /
1798  640.0f,
1799  (pPaperdoll_BodyY +
1800  pPaperdoll_SecondLeftHand[pBodyComplection][1]) /
1801  480.0f,
1802  papredoll_dlaus[uPlayerID - 1]);
1803  }
1804  // --------------------------------------------------------(two-handed -
1805  // fist/двуручие - кисть)----------------------------------------------------
1806  if (player->GetItem(&PlayerEquipment::uMainHand)) {
1807  item = player->GetMainHandItem();
1808  if (item->GetItemEquipType() == EQUIP_TWO_HANDED ||
1810  !player->GetItem(&PlayerEquipment::uShield))
1811  render->DrawTextureAlphaNew(
1812  (pPaperdoll_BodyX +
1813  pPaperdoll_SecondLeftHand[pBodyComplection][0]) /
1814  640.0f,
1815  (pPaperdoll_BodyY +
1816  pPaperdoll_SecondLeftHand[pBodyComplection][1]) /
1817  480.0f,
1818  papredoll_dlhus[uPlayerID - 1]);
1819  }
1820 
1821  if (!bRingsShownInCharScreen) //рисование лупы
1822  render->DrawTextureAlphaNew(603 / 640.0f, 299 / 480.0f,
1824 
1825  render->DrawTextureAlphaNew(468 / 640.0f, 0, game_ui_right_panel_frame);
1826 }

Перекрестные ссылки _50C9A8_item_enchantment_timer, assets, ItemGen::AuraEffectBlue(), ItemGen::AuraEffectGreen(), ItemGen::AuraEffectPurple(), ItemGen::AuraEffectRed(), bRingsShownInCharScreen, CHARACTER_RACE_DWARF, EQUIP_TWO_HANDED, game_ui_right_panel_frame, Player::GetArmorItem(), Player::GetBeltItem(), Player::GetBootItem(), Player::GetBowItem(), Player::GetCloakItem(), Player::GetHelmItem(), ItemGen::GetIconName(), AssetsManager::GetImage_Alpha(), AssetsManager::GetImage_ColorKey(), Player::GetItem(), ItemGen::GetItemEquipType(), Player::GetMainHandItem(), Player::GetOffHandItem(), ItemGen::GetPlayerSkillType(), Player::GetRace(), Player::GetSexByVoice(), IsPlayerWearingWatersuit, ITEM_92, ITEM_ARTIFACT_CLOAK_OF_THE_SHEEP, ITEM_ARTIFACT_GOVERNORS_ARMOR, ITEM_ARTIFACT_HERMES_SANDALS, ITEM_ARTIFACT_HEROS_BELT, ITEM_ARTIFACT_LEAGUE_BOOTS, ITEM_ARTIFACT_MINDS_EYE, ITEM_ARTIFACT_YORUBA, ITEM_BLASTER, ITEM_BROKEN, ITEM_ELVEN_CHAINMAIL, ITEM_IDENTIFIED, ITEM_RARE_MOON_CLOAK, ITEM_RARE_SHADOWS_MASK, ITEM_RARE_SUN_CLOAK, ITEM_RARE_VAMPIRES_CAPE, ITEM_RELIC_HARECS_LEATHER, ITEM_RELIC_PHYNAXIAN_CROWN, ITEM_RELIC_SCHOLARS_CAP, ITEM_RELIC_TALEDONS_HELM, ITEM_RELIC_TWILIGHT, ITEM_RILIC_TITANS_BELT, ItemGen::ItemEnchanted(), OS_GetTime(), paperdoll_Armor_Coord, paperdoll_armor_texture, paperdoll_Belt, paperdoll_belt_texture, paperdoll_Boot, paperdoll_boots_texture, paperdoll_Cloak, paperdoll_cloak_collar_texture, paperdoll_cloak_texture, paperdoll_CloakCollar, paperdoll_dbrds, paperdoll_Helm, paperdoll_helm_texture, paperdoll_shoulder_coord, paperdoll_shoulder_second_coord, paperdoll_Weapon, papredoll_dbods, papredoll_dlads, papredoll_dlaus, papredoll_dlhs, papredoll_dlhus, papredoll_drhs, papredoll_flying_feet, Player::pEquipment, pEventTimer, ItemsTable::pItems, pItemsTable, PLAYER_SKILL_DAGGER, PLAYER_SKILL_SPEAR, PLAYER_SKILL_SWORD, pPaperdoll_Beards, pPaperdoll_BodyX, pPaperdoll_BodyY, pPaperdoll_LeftHand, pPaperdoll_RightHand, pPaperdoll_SecondLeftHand, pPaperdollLeftEmptyHand, pPlayers, ptr_50C9A4_ItemToEnchant, render, ItemGen::ResetEnchantAnimation(), SEX_MALE, PlayerEquipment::uArmor, ItemGen::uAttributes, PlayerEquipment::uBelt, PlayerEquipment::uBoot, PlayerEquipment::uBow, PlayerEquipment::uCloak, Player::uCurrentFace, PlayerEquipment::uHelm, ui_character_inventory_magnification_glass, ui_character_inventory_paperdoll_background, ItemGen::uItemID, PlayerEquipment::uMainHand, PlayerEquipment::uShield и Timer::uTimeElapsed.

Используется в CharacterUI_DrawPaperdollWithRingOverlay(), GUIWindow_CharacterRecord::Update() и GUIWindow_Inventory_CastSpell::Update().

+ Граф вызовов:
+ Граф вызова функции:

◆ CharacterUI_DrawPaperdollWithRingOverlay()

void CharacterUI_DrawPaperdollWithRingOverlay ( Player player)

См. определение в файле UICharacter.cpp строка 1911

1911  {
1912  CharacterUI_DrawPaperdoll(player);
1913 
1914  render->DrawTextureAlphaNew(
1916  render->DrawTextureAlphaNew(468 / 640.0f, 0, game_ui_right_panel_frame);
1917  render->DrawTextureAlphaNew(pCharacterScreen_DetalizBtn->uX / 640.0f,
1918  pCharacterScreen_DetalizBtn->uY / 480.0f,
1920 
1921  for (uint i = 0; i < 6; ++i) {
1922  if (!player->pEquipment.uRings[i]) continue;
1923  static int pPaperdollRingsX[6] = {0x1EA, 0x21A, 0x248,
1924  0x1EA, 0x21A, 0x248};
1925  static int pPaperdollRingsY[6] = {0x0CA, 0x0CA, 0x0CA,
1926  0x0FA, 0x0FA, 0x0FA};
1928  pPaperdollRingsX[i], pPaperdollRingsY[i],
1929  &player->pInventoryItemList[player->pEquipment.uRings[i] - 1],
1930  player->pEquipment.uRings[i]);
1931  }
1932  if (player->pEquipment.uAmulet)
1933  CharacterUI_DrawItem(493, 91, player->GetAmuletItem(),
1934  player->pEquipment.uAmulet);
1935  if (player->pEquipment.uGlove)
1936  CharacterUI_DrawItem(586, 88, player->GetGloveItem(),
1937  player->pEquipment.uGlove);
1938 }

Перекрестные ссылки CharacterUI_DrawItem(), CharacterUI_DrawPaperdoll(), game_ui_right_panel_frame, Player::GetAmuletItem(), Player::GetGloveItem(), pCharacterScreen_DetalizBtn, Player::pEquipment, Player::pInventoryItemList, render, PlayerEquipment::uAmulet, PlayerEquipment::uGlove, ui_character_inventory_paperdoll_rings_background, ui_character_inventory_paperdoll_rings_close, PlayerEquipment::uRings, GUIButton::uX и GUIButton::uY.

Используется в GUIWindow_CharacterRecord::Update().

+ Граф вызовов:
+ Граф вызова функции:

◆ CharacterUI_ReleaseButtons()

void CharacterUI_ReleaseButtons ( )

См. определение в файле UICharacter.cpp строка 3371

3371  {
3372  if (dword_507CC0_activ_ch) {
3374  std::vector<GUIButton*> to_delete;
3375  for (GUIButton *pButton : pGUIWindow_CurrentMenu->vButtons) {
3376  if (pButton->field_1C & 0x8000) {
3377  to_delete.push_back(pButton);
3378  }
3379  }
3380  for (GUIButton *pButton : to_delete) {
3381  pButton->Release();
3382  }
3383  for (GUIButton *pButton : pGUIWindow_CurrentMenu->vButtons) {
3384  if (pButton->msg == UIMSG_InventoryLeftClick) {
3385  pButton->uX = dword_50698C_uX;
3386  pButton->uY = dword_506988_uY;
3387  pButton->uZ = dword_506984_uZ;
3388  pButton->uW = dword_506980_uW;
3390  1, 0, 0, 0);
3391  }
3392  }
3393  }
3394 }

Перекрестные ссылки GUIWindow::_41D08F_set_keyboard_control_group(), dword_506980_uW, dword_506984_uZ, dword_506988_uY, dword_50698C_uX, dword_507CC0_activ_ch, GUIButton::field_1C, GUIButton::msg, pGUIWindow_CurrentMenu, GUIButton::Release(), UIMSG_InventoryLeftClick, GUIButton::uW, GUIButton::uX, GUIButton::uY, GUIButton::uZ и GUIWindow::vButtons.

Используется в GUIWindow_CharacterRecord::CharacterUI_SkillsTab_CreateButtons(), Application::Game::EventLoop(), GUIWindow_CharacterRecord::ShowAwardsTab(), GUIWindow_CharacterRecord::ShowInventoryTab(), GUIWindow_CharacterRecord::ShowSkillsTab(), GUIWindow_CharacterRecord::ShowStatsTab() и GUIWindow_CharacterRecord::Update().

+ Граф вызовов:
+ Граф вызова функции:

◆ GetSkillColor()

unsigned int GetSkillColor ( unsigned int  uPlayerClass,
PLAYER_SKILL_TYPE  uPlayerSkillType,
signed int  skill_level 
)

См. определение в файле GUIWindow.cpp строка 1366

1368  {
1369  switch (uPlayerClass % 4) {
1370  case 0:
1371  {
1373  [uPlayerClass][uPlayerSkillType] >= skill_level)
1376  [uPlayerClass + 1][uPlayerSkillType] < skill_level &&
1378  [uPlayerClass + 2][uPlayerSkillType] < skill_level) {
1380  [uPlayerClass + 3][uPlayerSkillType] < skill_level)
1382  }
1384  } break;
1385 
1386  case 1:
1387  {
1389  [uPlayerClass][uPlayerSkillType] >= skill_level)
1392  [uPlayerClass + 1][uPlayerSkillType] < skill_level) {
1394  [uPlayerClass + 2][uPlayerSkillType] < skill_level)
1396  }
1398  } break;
1399 
1400  case 2:
1401  case 3:
1402  {
1404  [uPlayerClass][uPlayerSkillType] < skill_level)
1407  } break;
1408  }
1409  Error("Invalid player class: %u", uPlayerClass);
1410 }

Перекрестные ссылки byte_4ED970_skill_learn_ability_by_class_table, ui_character_skillinfo_can_learn, ui_character_skillinfo_can_learn_gm и ui_character_skillinfo_cant_learn.

Используется в CharacterUI_GetSkillDescText().

+ Граф вызова функции:

◆ DrawSpellDescriptionPopup()

void DrawSpellDescriptionPopup ( int  spell_index)

См. определение в файле UIPopup.cpp строка 1372

1372  {
1373  SpellInfo *spell; // esi@1
1374  unsigned int v3; // eax@2
1375  long v5; // ecx@4
1376  GUIWindow spell_info_window; // [sp+Ch] [bp-68h]@4
1377 
1378  Point pt = pMouse->GetCursorPos();
1379 
1380  spell =
1381  &pSpellStats
1382  ->pInfos[spell_index +
1383  11 * pPlayers[uActiveCharacter]->lastOpenedSpellbookPage +
1384  1];
1385  if (pt.y <= 250)
1386  v3 = pt.y + 30;
1387  else
1388  v3 = 30;
1389  spell_info_window.uFrameY = v3;
1390  spell_info_window.uFrameWidth = 328;
1391  spell_info_window.uFrameHeight = 68;
1392  spell_info_window.uFrameX = 90;
1393  spell_info_window.uFrameZ = 417;
1394  spell_info_window.uFrameW = v3 + 67;
1395  spell_info_window.sHint.clear();
1396  v5 = pFontSmallnum->GetLineWidth(localization->GetString(431)); // Normal
1398  v5) // Master
1400  localization->GetString(432)); // Master
1402  v5) // Expert
1404  localization->GetString(433)); // Expert
1405  if (pFontSmallnum->GetLineWidth(localization->GetString(96)) > v5) // Grand
1407 
1408  String str = StringPrintf(
1409  "%s\n\n%s\t%03d:\t%03d%s\t000\n%s\t%03d:\t%03d%s\t000\n%s\t%03d:\t%03d%"
1410  "s\t000\n%s\t%03d:\t%03d%s",
1411  spell->pDescription, localization->GetString(431), v5 + 3, v5 + 10,
1412  spell->pBasicSkillDesc, // Normal
1413  localization->GetString(433), v5 + 3, v5 + 10,
1414  spell->pExpertSkillDesc, // Expert
1415  localization->GetString(432), v5 + 3, v5 + 10,
1416  spell->pMasterSkillDesc, // Master
1417  localization->GetString(96), v5 + 3, v5 + 10,
1418  spell->pGrandmasterSkillDesc); // Grand
1419  spell_info_window.uFrameHeight +=
1420  pFontSmallnum->CalcTextHeight(str, spell_info_window.uFrameWidth, 0);
1421  if ((signed int)spell_info_window.uFrameHeight < 150)
1422  spell_info_window.uFrameHeight = 150;
1423  spell_info_window.uFrameWidth = game_viewport_width;
1424  spell_info_window.DrawMessageBox(0);
1425  spell_info_window.uFrameWidth -= 12;
1426  spell_info_window.uFrameHeight -= 12;
1427  spell_info_window.uFrameZ =
1428  spell_info_window.uFrameX + spell_info_window.uFrameWidth - 1;
1429  spell_info_window.uFrameW =
1430  spell_info_window.uFrameHeight + spell_info_window.uFrameY - 1;
1431  spell_info_window.DrawTitleText(
1432  pFontArrus, 0x78u, 0xCu, Color16(0xFFu, 0xFFu, 0x9Bu), spell->pName, 3);
1433  spell_info_window.DrawText(pFontSmallnum, 120, 44, 0, str, 0, 0, 0);
1434  spell_info_window.uFrameWidth = 108;
1435  spell_info_window.uFrameZ = spell_info_window.uFrameX + 107;
1436  int skill_level = SkillToMastery(
1437  pPlayers[uActiveCharacter]->pActiveSkills
1438  [pPlayers[uActiveCharacter]->lastOpenedSpellbookPage + 12]);
1439  spell_info_window.DrawTitleText(
1440  pFontComic, 12, 75, 0,
1442  pPlayers[uActiveCharacter]->lastOpenedSpellbookPage + 12),
1443  3);
1444 
1445  auto str2 = StringPrintf(
1446  "%s\n%d", localization->GetString(522), // SP Cost
1447  pSpellDatas[spell_index +
1448  11 * pPlayers[uActiveCharacter]->lastOpenedSpellbookPage +
1449  1]
1450  .mana_per_skill[skill_level - 1]);
1451  spell_info_window.DrawTitleText(
1452  pFontComic, 12,
1453  spell_info_window.uFrameHeight - pFontComic->GetHeight() - 16, 0, str2,
1454  3);
1456 }

Перекрестные ссылки GUIFont::CalcTextHeight(), Color16(), GUIWindow::DrawMessageBox(), GUIWindow::DrawText(), GUIWindow::DrawTitleText(), dword_507B00_spell_info_to_draw_in_popup, game_viewport_width, Mouse::GetCursorPos(), GUIFont::GetHeight(), GUIFont::GetLineWidth(), Localization::GetSkillName(), Localization::GetString(), localization, SpellInfo::pBasicSkillDesc, SpellInfo::pDescription, SpellInfo::pExpertSkillDesc, pFontArrus, pFontComic, pFontSmallnum, SpellInfo::pGrandmasterSkillDesc, SpellStats::pInfos, SpellInfo::pMasterSkillDesc, pMouse, SpellInfo::pName, pPlayers, pSpellDatas, pSpellStats, GUIWindow::sHint, SkillToMastery(), StringPrintf(), uActiveCharacter, GUIWindow::uFrameHeight, GUIWindow::uFrameW, GUIWindow::uFrameWidth, GUIWindow::uFrameX, GUIWindow::uFrameY, GUIWindow::uFrameZ и Point::y.

Используется в UI_OnMouseRightClick().

+ Граф вызовов:
+ Граф вызова функции:

◆ UI_OnMouseRightClick()

void UI_OnMouseRightClick ( int  mouse_x,
int  mouse_y 
)

См. определение в файле UIPopup.cpp строка 1459

1459  {
1460  int v5; // esi@62
1461  // GUIButton *pButton; // esi@84
1462  const char *pStr; // edi@85
1463  // const char *pHint; // edx@113
1464  GUIWindow popup_window; // [sp+4h] [bp-74h]@32
1465 
1467  return;
1468 
1469 
1470  unsigned int pX = mouse_x;
1471  unsigned int pY = mouse_y;
1472 
1473  // if ( render->bWindowMode )
1474  {
1475  Point pt = Point(pX, pY);
1476  if (pt.x < 1 || pt.y < 1 || pt.x > 638 || pt.y > 478) {
1477  back_to_game();
1478  return;
1479  }
1480  }
1481  if (pParty->pPickedItem.uItemID) { // нажатие на портрет перса правой кнопкой
1482  // мыши с раствором
1483  for (uint i = 0; i < 4; ++i) {
1484  if ((signed int)pX > RightClickPortraitXmin[i] &&
1485  (signed int)pX < RightClickPortraitXmax[i] &&
1486  (signed int)pY > 375 && (signed int)pY < 466) {
1487  pPlayers[uActiveCharacter]->UseItem_DrinkPotion_etc(i + 1, 1);
1488  return;
1489  }
1490  }
1491  }
1492 
1493  pEventTimer->Pause();
1494  switch (current_screen_type) {
1497  break;
1498  }
1500  if (!pPlayers[uActiveCharacter]->CanAct()) {
1501  static String hint_reference;
1502  hint_reference = localization->FormatString(
1503  427, pPlayers[uActiveCharacter]->pName,
1505  541)); // %s не в состоянии %s Опознать предметы
1506 
1507  popup_window.sHint = hint_reference;
1508  popup_window.uFrameWidth = 384;
1509  popup_window.uFrameHeight = 180;
1510  popup_window.uFrameY = 40;
1511  if ((signed int)pX <= 320)
1512  popup_window.uFrameX = pX + 30;
1513  else
1514  popup_window.uFrameX = pX - 414;
1515  popup_window.DrawMessageBox(0);
1516  } else {
1517  // this could be put into a chest function
1518 
1519  int chestheight =
1520  9; // pChestHeightsByType[pChests[(int)pGUIWindow_CurrentMenu->par1C].uChestBitmapID];
1521  int chestwidth = 9;
1522  int inventoryYCoord = (pY - 34) / 32; // use pchestoffsets??
1523  int inventoryXCoord = (pX - 42) / 32;
1524  int invMatrixIndex =
1525  inventoryXCoord + (chestheight * inventoryYCoord);
1526 
1527  if (inventoryYCoord >= 0 && inventoryYCoord < chestheight &&
1528  inventoryXCoord >= 0 && inventoryXCoord < chestwidth) {
1529  int chestindex = vChests[(int)pGUIWindow_CurrentMenu->par1C].pInventoryIndices[invMatrixIndex];
1530  if (chestindex < 0) {
1531  invMatrixIndex = (-(chestindex + 1));
1532  chestindex = vChests[(int)pGUIWindow_CurrentMenu->par1C].pInventoryIndices[invMatrixIndex];
1533  }
1534 
1535  if (chestindex) {
1536  int itemindex = chestindex - 1;
1537 
1538  GameUI_DrawItemInfo(&vChests[pChestWindow->par1C].igChestItems[itemindex]);
1539  }
1540  }
1541  }
1542  break;
1543  }
1544 
1545  case CURRENT_SCREEN::SCREEN_GAME: // In the main menu displays a pop-up window(В
1546  // главном меню показывает всплывающее окно)
1547  {
1548  if (GetCurrentMenuID() > 0) break;
1549  if ((signed int)pY > (signed int)pViewport->uViewportBR_Y) {
1550  popup_window.ptr_1C = (void *)((signed int)pX / 118);
1551  if ((signed int)pX / 118 < 4) { // portaits zone
1552  popup_window.sHint.clear();
1553  popup_window.uFrameWidth = 400;
1554  popup_window.uFrameHeight = 200;
1555  popup_window.uFrameX = 38;
1556  popup_window.uFrameY = 60;
1557  pAudioPlayer->StopChannels(-1, -1);
1559  &popup_window, pPlayers[(int)popup_window.ptr_1C + 1]);
1560  }
1561  } else if ((int)pX > pViewport->uViewportBR_X) {
1562  if (pY >= 130) {
1563  if (pX >= 476 && pX <= 636 && pY >= 240 && pY <= 300) { // buff_tooltip zone
1564  popup_window.sHint.clear();
1565  popup_window.uFrameWidth = 400;
1566  popup_window.uFrameHeight = 200;
1567  popup_window.uFrameX = 38;
1568  popup_window.uFrameY = 60;
1569  pAudioPlayer->StopChannels(-1, -1);
1570  popup_window._41D73D_draw_buff_tooltip();
1571  } else if ((int)pX < 485 || (int)pX > 548 ||
1572  (int)pY < 156 ||
1573  (int)pY > 229) { // NPC zone
1574  if (!((signed int)pX < 566 || (signed int)pX > 629 ||
1575  (signed int)pY < 156 || (signed int)pY > 229)) {
1576  pAudioPlayer->StopChannels(-1, -1);
1577  GameUI_DrawNPCPopup((void *)1); // NPC 2
1578  }
1579  } else {
1580  pAudioPlayer->StopChannels(-1, -1);
1581  GameUI_DrawNPCPopup(0); // NPC 1
1582  }
1583  } else { // minimap zone
1584  popup_window.sHint = GameUI_GetMinimapHintText();
1585  popup_window.uFrameWidth = 256;
1586  popup_window.uFrameX = 130;
1587  popup_window.uFrameY = 140;
1588  popup_window.uFrameHeight = 64;
1589  pAudioPlayer->StopChannels(-1, -1);
1590  popup_window.DrawMessageBox(0);
1591  }
1592  } else { // game zone
1593  popup_window.sHint.clear();
1594  popup_window.uFrameWidth = 320;
1595  popup_window.uFrameHeight = 320;
1596  popup_window.uFrameX = pX - 350;
1597  if ((signed int)pX <= 320) popup_window.uFrameX = pX + 30;
1598  popup_window.uFrameY = 40;
1599  // if ( render->pRenderD3D )
1600 
1601  auto vis = EngineIoc::ResolveVis();
1602  v5 = vis->get_picked_object_zbuf_val();
1603  /*else
1604  v5 = render->pActiveZBuffer[pX + pSRZBufferLineOffsets[pY]];*/
1605  if (PID_TYPE(v5) == OBJECT_Actor) {
1606  render->BeginScene();
1607  popup_window.DrawMessageBox(1);
1608  MonsterPopup_Draw(PID_ID(v5), &popup_window);
1609  render->EndScene();
1610  }
1611  if (PID_TYPE(v5) == OBJECT_Item) {
1612  if (!(pObjectList
1613  ->pObjects[pSpriteObjects[PID_ID((unsigned __int16)v5)].uObjectDescID].uFlags & 0x10)) {
1615  &pSpriteObjects[PID_ID((unsigned __int16)v5)].containing_item);
1616  }
1617  }
1618  }
1619  break;
1620  }
1622  if (!MapBookOpen ||
1623  (signed int)pX < (signed int)pViewport->uViewportTL_X ||
1624  (signed int)pX > (signed int)pViewport->uViewportBR_X ||
1625  (signed int)pY < (signed int)pViewport->uViewportTL_Y ||
1626  (signed int)pY > (signed int)pViewport->uViewportBR_Y ||
1627  ((popup_window.sHint = GetMapBookHintText(mouse_x, mouse_y)).empty()))
1628  break;
1629  popup_window.uFrameWidth =
1630  (pFontArrus->GetLineWidth(popup_window.sHint) + 32) + 0.5f;
1631  popup_window.uFrameX = pX + 5;
1632  popup_window.uFrameY = pY + 5;
1633  popup_window.uFrameHeight = 64;
1634  pAudioPlayer->StopChannels(-1, -1);
1635  popup_window.DrawMessageBox(0);
1636  break;
1637  }
1641  if ((signed int)pX > 467 && current_screen_type != CURRENT_SCREEN::SCREEN_E)
1643  else if ((signed int)pY >= 345)
1644  break;
1646  WINDOW_CharacterWindow_Stats) // 2DEvent -
1647  // CharacerScreenStats
1650  WINDOW_CharacterWindow_Skills) // 2DEvent -
1651  // CharacerScreenSkills
1653  else if (
1655  WINDOW_CharacterWindow_Inventory) // 2DEvent -
1656  // CharacerScreenInventory
1658  break;
1659  }
1664  break;
1665  }
1667  if ((signed int)pY < 345 && (signed int)pX < 469)
1669  break;
1670  }
1672  popup_window.sHint.clear();
1673  pStr = 0;
1674  for (GUIButton *pButton : pGUIWindow_CurrentMenu->vButtons) {
1675  if (pButton->uButtonType == 1 && pButton->uButtonType != 3 &&
1676  (signed int)pX > (signed int)pButton->uX &&
1677  (signed int)pX < (signed int)pButton->uZ &&
1678  (signed int)pY > (signed int)pButton->uY &&
1679  (signed int)pY < (signed int)pButton->uW) {
1680  switch (pButton->msg) {
1681  case UIMSG_0: // stats info
1682  popup_window.sHint =
1684  (int)pButton->msg_param % 7);
1686  (int)pButton->msg_param % 7);
1687  break;
1688  case UIMSG_PlayerCreationClickPlus: // Plus button info
1689  pStr = localization->GetString(670); //Добавить
1690  popup_window.sHint = localization->GetString(
1691  671); //"Добавляет очко к выделенному навыку,
1692  //забирая его из накопителя очков"
1693  break;
1694  case UIMSG_PlayerCreationClickMinus: // Minus button
1695  // info
1696  pStr = localization->GetString(668); //Вычесть
1697  popup_window.sHint = localization->GetString(
1698  669); //"Вычитает очко из выделенного навыка,
1699  //возвращая его в накопитель очков"
1700  break;
1701  case UIMSG_PlayerCreationSelectActiveSkill: // Available
1702  // skill
1703  // button
1704  // info
1705  pStr = localization->GetSkillName(
1706  pParty
1707  ->pPlayers
1709  .GetSkillIdxByOrder(pButton->msg_param +
1710  4));
1711  popup_window
1713  pParty
1714  ->pPlayers
1716  .GetSkillIdxByOrder(pButton->msg_param +
1717  4));
1718  break;
1719  case UIMSG_PlayerCreationSelectClass: // Available
1720  // Class Info
1721  popup_window.sHint =
1723  pButton->msg_param);
1724  pStr =
1725  localization->GetClassName(pButton->msg_param);
1726  break;
1727  case UIMSG_PlayerCreationClickOK: // OK Info
1728  popup_window.sHint = localization->GetString(
1729  664); //Щелкните здесь для утверждения состава
1730  //отряда и продолжения игры.
1731  pStr = localization->GetString(665); //Кнопка ОК
1732  break;
1733  case UIMSG_PlayerCreationClickReset: // Clear info
1734  popup_window.sHint = localization->GetString(
1735  666); //Сбрасывает все параметры и навыки
1736  //отряда.
1737  pStr =
1738  localization->GetString(667); //Кнопка Очистить
1739  break;
1740  case UIMSG_PlayerCreation_SelectAttribute: // Character
1741  // info
1742  pStr = pParty->pPlayers[pButton->msg_param].pName;
1743  popup_window
1745  pParty->pPlayers[pButton->msg_param].classType);
1746  break;
1747  }
1748  if (pButton->msg > UIMSG_44 &&
1749  pButton->msg <=
1750  UIMSG_PlayerCreationRemoveDownSkill) { // Sellected
1751  // skills info
1752  pY = 0;
1753  if ((int)pParty->pPlayers[pButton->msg_param]
1754  .GetSkillIdxByOrder(pButton->msg - UIMSG_48) <
1755  37) {
1756  static String hint_reference;
1757  hint_reference = CharacterUI_GetSkillDescText(
1758  pButton->msg_param,
1760  ->pPlayers[pButton->msg_param]
1761  .GetSkillIdxByOrder(pButton->msg -
1762  UIMSG_48));
1763 
1764  popup_window.sHint = hint_reference;
1765  pStr = localization->GetSkillName(
1766  pParty->pPlayers[pButton->msg_param]
1767  .GetSkillIdxByOrder(pButton->msg -
1768  UIMSG_48));
1769  }
1770  }
1771  }
1772  }
1773  if (!popup_window.sHint.empty()) {
1774  String sHint = popup_window.sHint;
1775  popup_window.sHint.clear();
1776  popup_window.uFrameWidth = 384;
1777  popup_window.uFrameHeight = 256;
1778  popup_window.uFrameX = 128;
1779  popup_window.uFrameY = 40;
1780  popup_window.uFrameHeight =
1782  sHint, popup_window.uFrameWidth, 24) +
1783  2 * pFontLucida->GetHeight() + 24;
1784  popup_window.uFrameZ =
1785  popup_window.uFrameX + popup_window.uFrameWidth - 1;
1786  popup_window.uFrameW =
1787  popup_window.uFrameY + popup_window.uFrameHeight - 1;
1788  popup_window.DrawMessageBox(0);
1789  popup_window.uFrameX += 12;
1790  popup_window.uFrameWidth -= 24;
1791  popup_window.uFrameY += 12;
1792  popup_window.uFrameHeight -= 12;
1793  popup_window.uFrameZ =
1794  popup_window.uFrameX + popup_window.uFrameWidth - 1;
1795  popup_window.uFrameW =
1796  popup_window.uFrameY + popup_window.uFrameHeight - 1;
1797 
1798  auto str = StringPrintf("\f%05d%s\f00000\n",
1799  Color16(0xFF, 0xFF, 0x9B), pStr);
1800  popup_window.DrawTitleText(pFontCreate, 0, 0, 0, str.c_str(),
1801  3);
1802  popup_window.DrawText(pFontSmallnum, 1,
1803  pFontLucida->GetHeight(), 0, sHint, 0, 0,
1804  0);
1805  }
1806  break;
1807  }
1808  default:
1809  break;
1810  }
1813 }

Перекрестные ссылки GUIWindow::_41D73D_draw_buff_tooltip(), back_to_game(), ViewingParams::bRedrawGameUI, GUIFont::CalcTextHeight(), CharacterUI_GetSkillDescText(), CharacterUI_SkillsTab_ShowHint(), CharacterUI_StatsTab_ShowHint(), Color16(), current_character_screen_window, current_screen_type, GUIWindow::DrawMessageBox(), DrawSpellDescriptionPopup(), GUIWindow::DrawText(), GUIWindow::DrawTitleText(), dword_507B00_spell_info_to_draw_in_popup, dword_507BF0_is_there_popup_onscreen, Localization::FormatString(), GameUI_CharacterQuickRecord_Draw(), GameUI_DrawItemInfo(), GameUI_DrawNPCPopup(), GameUI_GetMinimapHintText(), Localization::GetAttirubteName(), Localization::GetAttributeDescription(), Localization::GetClassDescription(), Localization::GetClassName(), GetCurrentMenuID(), GUIFont::GetHeight(), GUIFont::GetLineWidth(), GetMapBookHintText(), Localization::GetSkillDescription(), Localization::GetSkillName(), Localization::GetString(), Inventory_ItemPopupAndAlchemy(), localization, MapBookOpen, MENU_MAIN, MonsterPopup_Draw(), GUIButton::msg, GUIButton::msg_param, OBJECT_Actor, OBJECT_Item, GUIWindow::par1C, pAudioPlayer, Timer::Pause(), pChestWindow, pEventTimer, pFontArrus, pFontCreate, pFontLucida, pFontSmallnum, pGUIWindow_CurrentMenu, pObjectList, pParty, Party::pPickedItem, pPlayers, Party::pPlayers, pSpriteObjects, GUIWindow::ptr_1C, pViewport, render, Engine_::IocContainer::ResolveVis(), RightClickPortraitXmax, RightClickPortraitXmin, SCREEN_BOOKS, SCREEN_CASTING, SCREEN_CHARACTERS, SCREEN_CHEST, SCREEN_CHEST_INVENTORY, SCREEN_E, SCREEN_GAME, SCREEN_HOUSE, SCREEN_PARTY_CREATION, SCREEN_SPELL_BOOK, SCREEN_VIDEO, GUIWindow::sHint, ShowPopupShopItem(), AudioPlayer::StopChannels(), StringPrintf(), uActiveCharacter, GUIButton::uButtonType, GUIWindow::uFrameHeight, GUIWindow::uFrameW, GUIWindow::uFrameWidth, GUIWindow::uFrameX, GUIWindow::uFrameY, GUIWindow::uFrameZ, UIMSG_0, UIMSG_44, UIMSG_48, UIMSG_PlayerCreation_SelectAttribute, UIMSG_PlayerCreationClickMinus, UIMSG_PlayerCreationClickOK, UIMSG_PlayerCreationClickPlus, UIMSG_PlayerCreationClickReset, UIMSG_PlayerCreationRemoveDownSkill, UIMSG_PlayerCreationSelectActiveSkill, UIMSG_PlayerCreationSelectClass, ItemGen::uItemID, uPlayerCreationUI_SelectedCharacter, Viewport::uViewportBR_X, Viewport::uViewportBR_Y, Viewport::uViewportTL_X, Viewport::uViewportTL_Y, GUIButton::uW, GUIButton::uX, GUIButton::uY, GUIButton::uZ, GUIWindow::vButtons, vChests, viewparams, WINDOW_CharacterWindow_Inventory, WINDOW_CharacterWindow_Skills, WINDOW_CharacterWindow_Stats, Point::x и Point::y.

Используется в GUI_UpdateWindows() и Application::GameWindowHandler::OnMouseRightClick().

+ Граф вызовов:
+ Граф вызова функции:

◆ DrawPopupWindow()

void DrawPopupWindow ( unsigned int  uX,
unsigned int  uY,
unsigned int  uWidth,
unsigned int  uHeight 
)

См. определение в файле UIPopup.cpp строка 89

90  {
91  unsigned int uNumTiles; // [sp+2Ch] [bp-Ch]@6
92  int coord_x; // [sp+2Ch] [bp-Ch]@3
93  int coord_y; // [sp+34h] [bp-4h]@5
94 
95  if (!parchment) return;
96 
97  render->SetUIClipRect(uX, uY, uX + uWidth, uY + uHeight);
98 
99  unsigned int parchment_width = parchment->GetWidth();
100  unsigned int parchment_height = parchment->GetHeight();
101 
102  uNumTiles = uWidth / parchment_width;
103  if (uWidth % parchment_width) ++uNumTiles;
104  coord_y = uY;
105  for (uint j = 0; j <= uHeight / parchment_height; j++) {
106  coord_x = uX - parchment_width;
107  for (uint i = uNumTiles + 1; i; --i) {
108  coord_x += parchment_width;
109  render->DrawTextureNew(coord_x / 640.0f, coord_y / 480.0f,
110  parchment);
111  }
112  coord_y += parchment_height;
113  }
114 
115  render->DrawTextureAlphaNew(uX / 640.0f, uY / 480.0f, messagebox_corner_x);
116  render->DrawTextureAlphaNew(
117  uX / 640.0f, (uY + uHeight - messagebox_corner_y->GetHeight()) / 480.0f,
119  render->DrawTextureAlphaNew(
120  (uX + uWidth - messagebox_corner_z->GetWidth()) / 640.0f, uY / 480.0f,
122  render->DrawTextureAlphaNew(
123  (uX + uWidth - messagebox_corner_z->GetWidth()) / 640.0f,
124  (uY + uHeight - messagebox_corner_y->GetHeight()) / 480.0f,
126 
127  if (uWidth >
129  render->SetUIClipRect(uX + messagebox_corner_x->GetWidth(), uY,
130  uX + uWidth - messagebox_corner_z->GetWidth(),
131  uY + uHeight);
132 
133  // horizontal borders
134  for (unsigned int x = uX + messagebox_corner_x->GetWidth();
137  render->DrawTextureAlphaNew(x / 640.0f, uY / 480.0f,
139  render->DrawTextureAlphaNew(
140  x / 640.0f,
141  (uY + uHeight - messagebox_border_bottom->GetHeight()) / 480.0f,
143  }
144  }
145 
146  // vertical borders
147  if (uHeight >
149  render->SetUIClipRect(uX, uY + messagebox_corner_x->GetHeight(),
150  uX + uWidth,
151  uY + uHeight - messagebox_corner_y->GetHeight());
152 
153  for (unsigned int y = uY + messagebox_corner_x->GetHeight();
156  render->DrawTextureAlphaNew(uX / 640.0f, y / 480.0f,
158  render->DrawTextureAlphaNew(
159  (uX + uWidth - messagebox_border_right->GetWidth() - 1) /
160  640.0f,
161  y / 480.0f, messagebox_border_right);
162  }
163  }
164  render->ResetUIClipRect();
165 }

Перекрестные ссылки Image::GetHeight(), Image::GetWidth(), messagebox_border_bottom, messagebox_border_left, messagebox_border_right, messagebox_border_top, messagebox_corner_w, messagebox_corner_x, messagebox_corner_y, messagebox_corner_z, parchment и render.

Используется в GUIWindow::DrawMessageBox().

+ Граф вызовов:
+ Граф вызова функции:

◆ DrawMM7CopyrightWindow()

void DrawMM7CopyrightWindow ( )

См. определение в файле UIMainMenu.cpp строка 172

172  {
173  GUIWindow Dst;
174  Dst.uFrameWidth = 624;
175  Dst.uFrameHeight = 256;
176  Dst.uFrameX = 8;
177  Dst.uFrameY = 30; // c 1999 The 3DO Company.
179  + 2 * (unsigned char)pFontSmallnum->GetHeight()
180  + 24;
181  Dst.uFrameY = 470 - Dst.uFrameHeight;
182  Dst.uFrameZ = Dst.uFrameX + Dst.uFrameWidth - 1;
183  Dst.uFrameW = 469;
184  Dst.DrawMessageBox(0);
185 
186  Dst.uFrameWidth -= 24;
187  Dst.uFrameX += 12;
188  Dst.uFrameY += 12;
189  Dst.uFrameHeight -= 12;
190  Dst.uFrameZ = Dst.uFrameX + Dst.uFrameWidth - 1;
191  Dst.uFrameW = Dst.uFrameY + Dst.uFrameHeight - 1;
193 }

Перекрестные ссылки GUIFont::CalcTextHeight(), GUIWindow::DrawMessageBox(), GUIWindow::DrawTitleText(), GUIFont::GetHeight(), Localization::GetString(), localization, pFontSmallnum, GUIWindow::uFrameHeight, GUIWindow::uFrameW, GUIWindow::uFrameWidth, GUIWindow::uFrameX, GUIWindow::uFrameY, GUIWindow::uFrameZ и ui_mainmenu_copyright_color.

Используется в GUIWindow_MainMenu::Loop().

+ Граф вызовов:
+ Граф вызова функции:

◆ GUI_UpdateWindows()

void GUI_UpdateWindows ( )

См. определение в файле GUIWindow.cpp строка 956

956  {
958  extern bool UI_OnVkKeyDown(unsigned int vkKey);
959  UI_OnVkKeyDown(VK_NEXT);
960  }
961 
962  std::list<GUIWindow *> tmpWindowList(lWindowList);
963  tmpWindowList.reverse(); // new windows are push front - but front should be drawn last?? testing
964  for (GUIWindow *pWindow : tmpWindowList) {
965  pWindow->Update();
966  }
967 
968  if (GetCurrentMenuID() == -1) {
970  }
974  }
975 }

Перекрестные ссылки GameUI_DrawFoodAndGold(), GetCurrentMenuID(), Mouse::GetCursorPos(), lWindowList, MENU_CREATEPARTY, mouse, Engine_::IocContainer::ResolveMouse(), sub_4637E0_is_there_popup_onscreen(), UI_OnMouseRightClick(), UI_OnVkKeyDown(), Point::x и Point::y.

Используется в DoSavegame(), Engine::Draw(), GUICredits::ExecuteCredits(), Application::Game::GameLoop(), GUIWindow_MainMenu::Loop(), MainMenuLoad_Loop(), Application::Menu::MenuLoop() и PartyCreationUI_LoopInternal().

+ Граф вызовов:
+ Граф вызова функции:

◆ GetConditionDrawColor()

int GetConditionDrawColor ( unsigned int  uConditionIdx)

См. определение в файле UIGame.cpp строка 2327

2327  {
2328  switch (uConditionIdx) {
2329  case Condition_Zombie:
2330  case Condition_Good:
2332 
2333  case Condition_Cursed:
2334  case Condition_Weak:
2335  case Condition_Fear:
2336  case Condition_Drunk:
2337  case Condition_Insane:
2338  case Condition_Poison_Weak:
2341 
2342  case Condition_Sleep:
2345  case Condition_Paralyzed:
2346  case Condition_Unconcious:
2348 
2351  case Condition_Dead:
2352  case Condition_Pertified:
2353  case Condition_Eradicated:
2355  }
2356  Error("Invalid condition (%u)", uConditionIdx);
2357 }

Перекрестные ссылки Condition_Cursed, Condition_Dead, Condition_Disease_Medium, Condition_Disease_Severe, Condition_Disease_Weak, Condition_Drunk, Condition_Eradicated, Condition_Fear, Condition_Good, Condition_Insane, Condition_Paralyzed, Condition_Pertified, Condition_Poison_Medium, Condition_Poison_Severe, Condition_Poison_Weak, Condition_Sleep, Condition_Unconcious, Condition_Weak, Condition_Zombie, ui_character_condition_light_color, ui_character_condition_moderate_color, ui_character_condition_normal_color и ui_character_condition_severe_color.

Используется в GUIWindow_CharacterRecord::CharacterUI_StatsTab_Draw(), CharacterUI_StatsTab_ShowHint() и GameUI_CharacterQuickRecord_Draw().

+ Граф вызова функции:

◆ FillAwardsData()

void FillAwardsData ( )

См. определение в файле UICharacter.cpp строка 2598

2598  {
2599  Player *pPlayer = pPlayers[uActiveCharacter];
2600 
2601  memset(achieved_awards.data(), 0, 4000);
2602  num_achieved_awards = 0;
2603 
2604  BtnDown_flag = 0;
2605  BtnUp_flag = 0;
2606  books_page_number = 0;
2608  for (int i = 1; i < 105; ++i) {
2609  if (_449B57_test_bit(pPlayer->_achieved_awards_bits, i) &&
2610  pAwards[i].pText)
2612  }
2614  num_achieved_awards = 0;
2615 
2616  // sort awards index
2617 
2618  if (full_num_items_in_book > 0) {
2619  for (int i = 0; i < full_num_items_in_book; ++i)
2621  (AwardType)(rand() % 16); //случайные значения от 0 до 15
2622  for (int i = 1; i < full_num_items_in_book; ++i) {
2623  for (int j = i; j < full_num_items_in_book; ++j) {
2624  AwardType tmp;
2625  if (pAwards[achieved_awards[j]].uPriority <
2626  pAwards[achieved_awards[i]].uPriority) {
2627  tmp = achieved_awards[j];
2629  achieved_awards[i] = tmp;
2630  }
2631  }
2632  }
2633  }
2634 
2635  // if (full_num_items_in_book > 0)
2636  /* {
2637  std::stable_sort(achieved_awards.begin(), achieved_awards.end(),
2638  awardSort);
2639  }*/
2640 }

Перекрестные ссылки _449B57_test_bit(), Player::_achieved_awards_bits, achieved_awards, books_page_number, books_primary_item_per_page, BtnDown_flag, BtnUp_flag, full_num_items_in_book, num_achieved_awards, pAwards, pPlayers и uActiveCharacter.

Используется в GameUI_OnPlayerPortraitLeftClick() и GUIWindow_CharacterRecord::ShowAwardsTab().

+ Граф вызовов:
+ Граф вызова функции:

◆ CreateAwardsScrollBar()

void CreateAwardsScrollBar ( )

См. определение в файле GUIButton.cpp строка 144

144  {
147  for (GUIButton *pButton : pGUIWindow_CurrentMenu->vButtons) {
148  if (pButton->msg == UIMSG_InventoryLeftClick) {
149  dword_50698C_uX = pButton->uX;
150  dword_506988_uY = pButton->uY;
151  dword_506984_uZ = pButton->uZ;
152  dword_506980_uW = pButton->uW;
153  pButton->uW = 0;
154  pButton->uZ = 0;
155  pButton->uY = 0;
156  pButton->uX = 0;
157  }
158  }
160  438, 46, ui_ar_up_up->GetWidth(), ui_ar_up_up->GetHeight(), 1, 0,
161  UIMSG_ClickAwardsUpBtn, 0, 0, "", {{ui_ar_up_up, ui_ar_up_dn}});
163  438, 292, ui_ar_dn_up->GetWidth(), ui_ar_dn_up->GetHeight(), 1, 0,
164  UIMSG_ClickAwardsDownBtn, 0, 0, "", {{ui_ar_dn_up, ui_ar_dn_dn}});
166  440, 62, 16, 232, 1, 0, UIMSG_ClickAwardScrollBar, 0, 0, "");
167  }
168 }

Перекрестные ссылки awards_scroll_bar_created, GUIWindow::CreateButton(), dword_506980_uW, dword_506984_uZ, dword_506988_uY, dword_50698C_uX, Image::GetHeight(), Image::GetWidth(), GUIButton::msg, pBtn_Down, pBtn_Up, pGUIWindow_CurrentMenu, ui_ar_dn_up, ui_ar_up_up, UIMSG_ClickAwardsDownBtn, UIMSG_ClickAwardsUpBtn, UIMSG_InventoryLeftClick, GUIButton::uW, GUIButton::uX, GUIButton::uY, GUIButton::uZ и GUIWindow::vButtons.

Используется в GUIWindow_CharacterRecord::ShowAwardsTab() и GUIWindow_CharacterRecord::Update().

+ Граф вызовов:
+ Граф вызова функции:

◆ ReleaseAwardsScrollBar()

void ReleaseAwardsScrollBar ( )

См. определение в файле GUIButton.cpp строка 123

123  {
126  ptr_507BA4->Release();
127  pBtn_Up->Release();
128  pBtn_Down->Release();
129  pBtn_Down = 0;
130  pBtn_Up = 0;
131  for (GUIButton *pButton : pGUIWindow_CurrentMenu->vButtons) {
132  if (pButton->msg == UIMSG_InventoryLeftClick) {
133  pButton->uX = dword_50698C_uX;
134  pButton->uY = dword_506988_uY;
135  pButton->uZ = dword_506984_uZ;
136  pButton->uW = dword_506980_uW;
138  1, 0, 0, 0);
139  }
140  }
141  }
142 }

Перекрестные ссылки GUIWindow::_41D08F_set_keyboard_control_group(), awards_scroll_bar_created, dword_506980_uW, dword_506984_uZ, dword_506988_uY, dword_50698C_uX, GUIButton::msg, pBtn_Down, pBtn_Up, pGUIWindow_CurrentMenu, ptr_507BA4, GUIButton::Release(), UIMSG_InventoryLeftClick, GUIButton::uW, GUIButton::uX, GUIButton::uY, GUIButton::uZ и GUIWindow::vButtons.

Используется в Application::Game::EventLoop(), GUIWindow_CharacterRecord::ShowAwardsTab(), GUIWindow_CharacterRecord::ShowInventoryTab(), GUIWindow_CharacterRecord::ShowSkillsTab(), GUIWindow_CharacterRecord::ShowStatsTab() и GUIWindow_CharacterRecord::Update().

+ Граф вызовов:
+ Граф вызова функции:

◆ Inventory_ItemPopupAndAlchemy()

void Inventory_ItemPopupAndAlchemy ( )

См. определение в файле UIPopup.cpp строка 1817

1817  { // needs cleaning
1818  int potion1_id; // edx@25
1819  unsigned int potion2_id; // edi@25
1820  signed int potionID; // edx@27
1821  // unsigned int pOut_y; // edx@57
1822  double v31; // st7@112
1823  Vec3_int_ v39; // [sp-18h] [bp-A8h]@83
1824  GUIWindow message_window; // [sp+Ch] [bp-84h]@137
1825  unsigned int damage_level; // [sp+8Ch] [bp-4h]@23
1826 
1827  if (no_rightlick_in_inventory) return;
1828 
1829  signed int inventoryXCoord; // ecx@2
1830  int inventoryYCoord; // eax@2
1831 
1832  unsigned int pY; // [sp+3Ch] [bp-Ch]@2
1833  unsigned int pX;
1834  // Point cursor = pMouse->GetCursorPos();
1835 
1836  ItemGen *item = nullptr;
1837 
1838  int mousex = pMouse->uMouseClickX; // condense
1839  int mousey = pMouse->uMouseClickY; // condense
1840 
1841  static int RingsX[6] = {0x1EA, 0x21A, 0x248, 0x1EA, 0x21A, 0x248};
1842  static int RingsY[6] = {0x0CA, 0x0CA, 0x0CA, 0x0FA, 0x0FA, 0x0FA};
1843 
1844  static int glovex = 586;
1845  static int glovey = 88;
1846 
1847  static int amuletx = 493;
1848  static int amulety = 91;
1849 
1850  int slot = 32;
1851  int pos = -1;
1852 
1853  pMouse->GetClickPos(&pX, &pY);
1854  inventoryYCoord = (pY - 17) / 32;
1855  inventoryXCoord = (pX - 14) / 32;
1856  int invMatrixIndex =
1857  inventoryXCoord + (14 * inventoryYCoord); // INVETORYSLOTSWIDTH
1858 
1859  if (pX <= 13 || pX >= 462) { // items out of inventory(вещи вне инвентаря)
1860  // this is for player ragdoll items??
1861  // popup checks if ringscreen up here
1862 
1863  if (!ringscreenactive()) { // rings not displayd
1864  int item_pid =
1865  (render->pActiveZBuffer[pX + pSRZBufferLineOffsets[pY]] &
1866  0xFFFF) -
1867  1;
1868  // zbuffer still used for paperdolls
1869 
1870  if (item_pid == -1) return;
1871 
1872  item = &pPlayers[uActiveCharacter]->pInventoryItemList[item_pid];
1873  GameUI_DrawItemInfo(item);
1874  return;
1875  } else { // rings displayed
1876  if (mousex < 490 || mousex > 618) return;
1877 
1878  if (mousey < 88 || mousey > 282) return;
1879 
1880  if (mousex >= amuletx && mousex <= (amuletx + slot) &&
1881  mousey >= amulety && mousey <= (amulety + 2 * slot)) {
1882  // amulet
1883  // pitem = pPlayers[uActiveCharacter]->GetAmuletItem(); //9
1884  pos = 9;
1885  }
1886 
1887  if (mousex >= glovex && mousex <= (glovex + slot) &&
1888  mousey >= glovey && mousey <= (glovey + 2 * slot)) {
1889  // glove
1890  // pitem = pPlayers[uActiveCharacter]->GetGloveItem(); //7
1891  pos = 7;
1892  }
1893 
1894  for (int i = 0; i < 6; ++i) {
1895  if (mousex >= RingsX[i] && mousex <= (RingsX[i] + slot) &&
1896  mousey >= RingsY[i] && mousey <= (RingsY[i] + slot)) {
1897  // ring
1898  // pitem = pPlayers[uActiveCharacter]->GetNthRingItem(i);
1899  // //10+i
1900  pos = 10 + i;
1901  }
1902  }
1903 
1904  if (pos != -1)
1905  item = pPlayers[uActiveCharacter]->GetNthEquippedIndexItem(pos);
1906 
1907  if (!item) return;
1908 
1909  GameUI_DrawItemInfo(item);
1910 
1911  return;
1912  }
1913  }
1914 
1915  // limits check ?
1916  // if (inventoryYCoord >= 0 && inventoryYCoord < INVETORYSLOTSHEIGHT &&
1917  // inventoryXCoord >= 0 && inventoryXCoord < INVETORYSLOTSWIDTH) {
1918 
1919  item = pPlayers[uActiveCharacter]->GetItemAtInventoryIndex(invMatrixIndex);
1920 
1921  if (!item) { // no item
1922  return;
1923  }
1924 
1925  // if (item_pid == -1) //added here to avoid crash
1926  // return;
1927 
1928  // check character condition(проверка состояния персонажа)
1929  if (!pPlayers[uActiveCharacter]->CanAct()) {
1930  static String hint_reference;
1931  hint_reference = localization->FormatString(
1932  427, pPlayers[uActiveCharacter]->pName,
1934  541)); // %s не в состоянии %s Опознать предметы
1935 
1936  message_window.sHint = hint_reference;
1937  message_window.uFrameWidth = 384;
1938  message_window.uFrameHeight = 180;
1939  if (pX <= 320)
1940  message_window.uFrameX = pX + 30;
1941  else
1942  message_window.uFrameX = pX - 414;
1943  message_window.uFrameY = 40;
1944  message_window.DrawMessageBox(0);
1945  return;
1946  }
1947 
1948  int alchemy_skill_points =
1949  pPlayers[uActiveCharacter]->GetActualSkillLevel(PLAYER_SKILL_ALCHEMY);
1950  int alchemy_skill_level =
1951  pPlayers[uActiveCharacter]->GetActualSkillMastery(PLAYER_SKILL_ALCHEMY);
1952 
1953  // for potion bottle(простая бутылка)
1955  GameUI_DrawItemInfo(item);
1956  return;
1957  }
1958 
1959  // for recharge potion(зелье перезарядка)
1961  if (item->uItemID < ITEM_POTION_BOTTLE ||
1962  item->uItemID > ITEM_POTION_REJUVENATION) { // all potions
1963  if (item->GetItemEquipType() !=
1964  EQUIP_WAND) { // can recharge only wands
1965  pAudioPlayer->PlaySound(SOUND_error, 0, 0, -1, 0, 0);
1966  return;
1967  }
1968 
1969  v31 = (70.0 - (double)pParty->pPickedItem.uEnchantmentType) * 0.01;
1970  if (v31 < 0.0) v31 = 0.0;
1971  item->uMaxCharges =
1972  (signed __int64)((double)item->uMaxCharges -
1973  v31 * (double)item->uMaxCharges);
1974  item->uNumCharges =
1975  (signed __int64)((double)item->uMaxCharges -
1976  v31 * (double)item->uMaxCharges);
1977 
1980  return;
1981  }
1982  GameUI_DrawItemInfo(item);
1983  return;
1985  // for harden potion(зелье закалка)
1986  if (item->uItemID < ITEM_POTION_BOTTLE ||
1987  item->uItemID > ITEM_POTION_REJUVENATION) { // bottle and all potions
1988  if (item->IsBroken() || // cant harden broken items
1989  item->uItemID >= ITEM_ARTIFACT_PUCK || // cant harden artifacts
1991  item->GetItemEquipType() > EQUIP_WAND) {
1994  return;
1995  }
1996 
1998 
2002  return;
2003  }
2004  GameUI_DrawItemInfo(item);
2005  return;
2007  // several potions(несколько зелий)
2010  if (item->uItemID < ITEM_POTION_BOTTLE ||
2011  item->uItemID > ITEM_POTION_REJUVENATION) { // all potions
2012  if (item->uItemID >= ITEM_BLASTER &&
2013  item->uItemID <= ITEM_LASER_RIFLE ||
2014  item->uItemID >= ITEM_ARTIFACT_PUCK || item->IsBroken() ||
2015  item->special_enchantment || item->uEnchantmentType ||
2016  item->GetItemEquipType() >=
2017  EQUIP_ARMOUR) { // only melee weapons and bows
2020  return;
2021  }
2022 
2025  item->special_enchantment = ITEM_ENCHANTMENT_40; // of Slaying
2026  v31 = (double)(1800 * pParty->pPickedItem.uEnchantmentType);
2027  } else {
2028  static ITEM_ENCHANTMENT _4E2904_enchantment_by_potion_lut[] = {
2034  (ITEM_ENCHANTMENT)59};
2035  item->special_enchantment = _4E2904_enchantment_by_potion_lut
2036  [pParty->pPickedItem.uItemID - 240];
2037  v31 = (double)(1800 * pParty->pPickedItem.uEnchantmentType);
2038  }
2039 
2040  item->expirte_time =
2042  item->uAttributes = alchemy_skill_level | 0x18;
2043 
2047  return;
2048  }
2049  GameUI_DrawItemInfo(item);
2050  return;
2051  }
2052 
2053  // use reagents(применение реагентов)
2056  item->uItemID == ITEM_POTION_BOTTLE) {
2057  item->uEnchantmentType =
2058  alchemy_skill_points + pParty->pPickedItem.GetDamageDice();
2059  switch (pParty->pPickedItem.uItemID) {
2062  case ITEM_TROLL_BLOOD:
2063  case ITEM_TROLL_RUBY:
2064  case ITEM_DRAGON_EYE:
2066  break;
2067 
2068  case ITEM_PHIMA_ROOT:
2070  case ITEM_HARPY_FEATHER:
2071  case ITEM_MOONSTONE:
2072  case ITEM_ELVISH_TOADSTOOL:
2074  break;
2075 
2076  case ITEM_POPPYSNAPS:
2077  case ITEM_FAE_DUST:
2078  case ITEM_SULFUR:
2079  case ITEM_GARNET:
2080  case ITEM_DEVIL_ICHOR:
2082  break;
2083 
2084  case ITEM_MUSHROOM:
2085  case ITEM_OBSIDIAN:
2087  case ITEM_MERCURY:
2089  item->uItemID = ITEM_POTION_CATALYST;
2090  break;
2091  default:
2092  break;
2093  }
2096  if (dword_4E455C) {
2098  dword_4E455C = 0;
2099  }
2100  return;
2101  }
2102 
2103  // potions mixing(смешивание двух зелий)
2106  item->uItemID >= ITEM_POTION_CATALYST &&
2107  item->uItemID <= ITEM_POTION_REJUVENATION) {
2108  potion1_id = item->uItemID - ITEM_POTION_CURE_WOUNDS;
2110 
2112  item->uItemID == ITEM_POTION_CATALYST)
2113  potionID = 5;
2114  else
2115  potionID = pItemsTable->potion_data[potion2_id][potion1_id];
2116 
2117  damage_level = 0;
2118  if (alchemy_skill_points) {
2119  if (potionID < ITEM_POTION_CURE_DISEASE ||
2120  potionID > ITEM_POTION_AWAKEN) { // < 225 >227
2121  if (potionID >= ITEM_POTION_HASTE &&
2122  potionID <= ITEM_POTION_CURE_INSANITY &&
2123  alchemy_skill_level == 1) // 228 >= potionID <= 239
2124  damage_level = 2;
2125  if (potionID >= ITEM_POTION_MIGHT_BOOST &&
2126  potionID <= ITEM_POTION_BODY_RESISTANE &&
2127  alchemy_skill_level <= 2) // 240 >= potionID <= 261
2128  damage_level = 3;
2129  if (potionID >= ITEM_POTION_STONE_TO_FLESH &&
2130  alchemy_skill_level <= 3) // 262 < potionID
2131  damage_level = 4;
2132  }
2133  } else { // no skill(нет навыка)
2134  if (potionID >= ITEM_POTION_CURE_DISEASE &&
2135  potionID <= ITEM_POTION_AWAKEN) // 225 <= v16 <= 227
2136  damage_level = 1;
2137  if (potionID >= ITEM_POTION_HASTE &&
2138  potionID <= ITEM_POTION_CURE_INSANITY) // 228 <= v16 <= 239
2139  damage_level = 2;
2140  if (potionID >= ITEM_POTION_MIGHT_BOOST &&
2141  potionID <= ITEM_POTION_BODY_RESISTANE) // 240 <= v16 <= 261
2142  damage_level = 3;
2143  if (potionID >= ITEM_POTION_STONE_TO_FLESH) // 262 <= v16
2144  damage_level = 4;
2145  }
2146 
2147  int item_pid = pPlayers[uActiveCharacter]->GetItemListAtInventoryIndex(
2148  invMatrixIndex);
2149  // int pOut_x = item_pid + 1;
2150  // for (uint i = 0; i < 126; ++i)
2151  //{
2152  // if (pPlayers[uActiveCharacter]->pInventoryMatrix[i] == pOut_x)
2153  // {
2154  // pOut_y = i;
2155  // break;
2156  //}
2157  //}
2158  if (!potionID) {
2159  GameUI_DrawItemInfo(item);
2160  return;
2161  }
2162 
2163  if (damage_level > 0) {
2164  pPlayers[uActiveCharacter]->RemoveItemAtInventoryIndex(
2165  invMatrixIndex); // pOut_y); ?? quickfix needs checking
2166 
2167  if (damage_level == 1) {
2168  pPlayers[uActiveCharacter]->ReceiveDamage(rand() % 11 + 10,
2169  DMGT_FIRE);
2170  } else if (damage_level == 2) {
2171  pPlayers[uActiveCharacter]->ReceiveDamage(rand() % 71 + 30,
2172  DMGT_FIRE);
2173  pPlayers[uActiveCharacter]->ItemsPotionDmgBreak(1); // break 1
2174  } else if (damage_level == 3) {
2175  pPlayers[uActiveCharacter]->ReceiveDamage(rand() % 201 + 50,
2176  DMGT_FIRE);
2177  pPlayers[uActiveCharacter]->ItemsPotionDmgBreak(5); // break 5
2178  } else if (damage_level >= 4) {
2180  0);
2181  pPlayers[uActiveCharacter]->ItemsPotionDmgBreak(
2182  0); // break everything
2183  }
2184 
2185  pAudioPlayer->PlaySound(SOUND_fireBall, 0, 0, -1, 0, 0);
2186  pMessageQueue_50CBD0->AddGUIMessage(UIMSG_Escape, 0, 0);
2187  v39.z = pParty->vPosition.z + pParty->sEyelevel;
2188  v39.x = pParty->vPosition.x;
2189  v39.y = pParty->vPosition.y;
2190 
2191  int rot_x, rot_y, rot_z;
2192  Vec3_int_::Rotate(64, pParty->sRotationY, pParty->sRotationX, v39,
2193  &rot_x, &rot_y, &rot_z);
2195  SPRITE_SPELL_FIRE_FIREBALL_IMPACT, rot_x, rot_y, rot_z, 0, 1, 0,
2196  0, 0);
2197  if (dword_4E455C) {
2198  if (pPlayers[uActiveCharacter]->CanAct())
2199  pPlayers[uActiveCharacter]->PlaySound(SPEECH_17, 0);
2201  localization->GetString(444)); // Ouch! Ой!
2202  dword_4E455C = 0;
2203  }
2206  return;
2207  } else { // if ( damage_level == 0 )
2208  if (alchemy_skill_points) {
2209  if (item->uItemID == ITEM_POTION_CATALYST ||
2211  if (item->uItemID == ITEM_POTION_CATALYST)
2212  item->uItemID = pParty->pPickedItem.uItemID;
2214  item->uEnchantmentType =
2216  } else {
2217  item->uItemID = potionID;
2218  item->uEnchantmentType =
2220  item->uEnchantmentType) /
2221  2;
2222  pPlayers[uActiveCharacter]->SetVariable(
2223  VAR_AutoNotes,
2224  pItemsTable->potion_note[potion1_id][potion2_id]);
2225  }
2226  int bottle =
2228  if (bottle)
2230  ->pOwnItems[bottle - 1]
2231  .uAttributes = ITEM_IDENTIFIED;
2232  if (!(pItemsTable->pItems[item->uItemID].uItemID_Rep_St))
2233  item->uAttributes |= 1;
2234  if (!dword_4E455C) {
2237  return;
2238  }
2240  dword_4E455C = 0;
2243  return;
2244  }
2245  GameUI_DrawItemInfo(item);
2246  return;
2247  }
2248  }
2249 
2250  GameUI_DrawItemInfo(item);
2251  return;
2252 }

Перекрестные ссылки _50C9A8_item_enchantment_timer, Condition_Eradicated, DMGT_FIRE, GUIWindow::DrawMessageBox(), dword_4E455C, EQUIP_ARMOUR, EQUIP_SINGLE_HANDED, EQUIP_WAND, ItemGen::expirte_time, Localization::FormatString(), GameTime::FromSeconds(), GameUI_DrawItemInfo(), GameUI_StatusBar_OnEvent(), Mouse::GetClickPos(), ItemGen::GetDamageDice(), ItemGen::GetItemEquipType(), Party::GetPlayingTime(), Localization::GetString(), ItemGen::IsBroken(), ITEM_ARTIFACT_PUCK, ITEM_AURA_EFFECT_RED, ITEM_BLASTER, ITEM_DEVIL_ICHOR, ITEM_DRAGON_EYE, ITEM_ELVISH_TOADSTOOL, ITEM_ENCHANTMENT_40, ITEM_ENCHANTMENT_OF_FLAME, ITEM_ENCHANTMENT_OF_FROST, ITEM_ENCHANTMENT_OF_POISON, ITEM_ENCHANTMENT_OF_SPARKS, ITEM_FAE_DUST, ITEM_GARNET, ITEM_HARDENED, ITEM_HARPY_FEATHER, ITEM_IDENTIFIED, ITEM_LASER_RIFLE, ITEM_MERCURY, ITEM_METEORITE_FRAGMENT, ITEM_MOONSTONE, ITEM_MUSHROOM, ITEM_OBSIDIAN, ITEM_OOZE_ENDOPLASM_VIAL, ITEM_PHIMA_ROOT, ITEM_POPPYSNAPS, ITEM_POTION_AWAKEN, ITEM_POTION_BODY_RESISTANE, ITEM_POTION_BOTTLE, ITEM_POTION_CATALYST, ITEM_POTION_CURE_DISEASE, ITEM_POTION_CURE_INSANITY, ITEM_POTION_CURE_WEAKNESS, ITEM_POTION_CURE_WOUNDS, ITEM_POTION_FLAMING_POTION, ITEM_POTION_HARDEN_ITEM, ITEM_POTION_HASTE, ITEM_POTION_MAGIC_POTION, ITEM_POTION_MIGHT_BOOST, ITEM_POTION_RECHARGE_ITEM, ITEM_POTION_REJUVENATION, ITEM_POTION_SLAYING_POTION, ITEM_POTION_STONE_TO_FLESH, ITEM_POTION_SWIFT_POTION, ITEM_REAGENT_CRUSHED_ROSE_PETALS, ITEM_REAGENT_PHILOSOPHERS_STONE, ITEM_REAGENT_WIDOWSWEEP_BERRIES, ITEM_SULFUR, ITEM_TROLL_BLOOD, ITEM_TROLL_RUBY, localization, no_rightlick_in_inventory, pAudioPlayer, ItemsTable::pItems, pItemsTable, PLAYER_SKILL_ALCHEMY, AudioPlayer::PlaySound(), pMessageQueue_50CBD0, pMouse, ItemsTable::potion_data, ItemsTable::potion_note, pParty, Party::pPickedItem, pPlayers, pSRZBufferLineOffsets, Mouse::RemoveHoldingItem(), render, ringscreenactive(), Party::sEyelevel, GUIWindow::sHint, SOUND_error, SOUND_fireBall, ItemGen::special_enchantment, SPEECH_17, SPEECH_DO_POTION_FINE, SPRITE_SPELL_FIRE_FIREBALL_IMPACT, Party::sRotationX, Party::sRotationY, SpriteObject::sub_42F7EB_DropItemAt(), uActiveCharacter, ItemGen::uAttributes, ItemGen::uEnchantmentType, GUIWindow::uFrameHeight, GUIWindow::uFrameWidth, GUIWindow::uFrameX, GUIWindow::uFrameY, UIMSG_Escape, ItemGen::uItemID, ItemGen::uMaxCharges, Mouse::uMouseClickX, Mouse::uMouseClickY, ItemGen::uNumCharges, ItemGen::UpdateTempBonus(), VAR_AutoNotes и Party::vPosition.

Используется в UI_OnMouseRightClick().

+ Граф вызовов:
+ Граф вызова функции:

◆ UI_GetHealthManaAndOtherQualitiesStringColor()

unsigned int UI_GetHealthManaAndOtherQualitiesStringColor ( int  current_pos,
int  base_pos 
)

См. определение в файле UIGame.cpp строка 2307

2308  {
2309  unsigned __int16 R, G, B;
2310 
2311  if (actual_value == base_value) {
2312  R = 0, G = 0, B = 0; // White
2313  } else if (actual_value < base_value) {
2314  if (100 * actual_value / base_value >=
2315  25) // Yellow( current_pos > 1/4 )
2316  R = 255, G = 255, B = 100;
2317  else // Red( current_pos < 1/4 )
2318  R = 255, G = 0, B = 0;
2319  } else { // Green
2320  R = 0, G = 255, B = 0;
2321  }
2322 
2323  return Color16(R, G, B);
2324 }

Перекрестные ссылки Color16().

Используется в GUIWindow_CharacterRecord::CharacterUI_StatsTab_Draw(), GameUI_CharacterQuickRecord_Draw() и GUIWindow_QuickReference::Update().

+ Граф вызовов:
+ Граф вызова функции:

◆ GetSizeInInventorySlots()

unsigned int GetSizeInInventorySlots ( unsigned int  uNumPixels)

См. определение в файле UICharacter.cpp строка 919

919  {
920  if ((signed int)uNumPixels < 14) uNumPixels = 14;
921  return ((signed int)(uNumPixels - 14) >> 5) + 1;
922 }

Используется в Player::CanFitItem(), Chest::CanPlaceItemAt(), Player::PutItemArInventoryIndex(), Chest::PutItemInChest(), RemoveItemAtChestIndex() и Player::RemoveItemAtInventoryIndex().

+ Граф вызова функции:

◆ GUI_HandleHotkey()

class GUIButton* GUI_HandleHotkey ( uint8_t  uHotkey)

См. определение в файле GUIWindow.cpp строка 215

215  {
216  char Hot_key_num = toupper(uHotkey);
217  for (GUIWindow *pWindow : lWindowList) {
218  for (GUIButton *result : pWindow->vButtons) {
219  if (result->uHotkey == Hot_key_num) {
220  pMessageQueue_50CBD0->AddGUIMessage(result->msg,
221  result->msg_param, 0);
222  return result;
223  }
224  }
225  if (!pWindow->uFrameX && !pWindow->uFrameY &&
226  (pWindow->uFrameWidth == window->GetWidth() &&
227  pWindow->uFrameHeight == window->GetWidth())) {
228  break;
229  }
230  }
231  return 0;
232 }

Перекрестные ссылки lWindowList и pMessageQueue_50CBD0.

Используется в Application::GameWindowHandler::OnChar().

+ Граф вызова функции:

◆ GUI_ReplaceHotkey()

void GUI_ReplaceHotkey ( uint8_t  uOldHotkey,
uint8_t  uNewHotkey,
char  bFirstCall 
)

См. определение в файле GUIWindow.cpp строка 192

193  {
194  char old_hot_key = toupper(uOldHotkey);
195  uint8_t v9 = toupper(uNewHotkey);
196  if (bFirstCall) {
197  for (GUIWindow *pWindow : lWindowList) {
198  for (GUIButton *j : pWindow->vButtons) {
199  j->field_28 = 0;
200  }
201  }
202  }
203  for (GUIWindow *pWindow : lWindowList) {
204  for (GUIButton *j : pWindow->vButtons) {
205  if (j->uHotkey == old_hot_key) {
206  if (!j->field_28) {
207  j->field_28 = 1;
208  j->uHotkey = v9;
209  }
210  }
211  }
212  }
213 }

Перекрестные ссылки GUIButton::field_28, lWindowList и GUIButton::uHotkey.

Используется в Application::Menu::EventLoop().

+ Граф вызова функции:

◆ DrawBuff_remaining_time_string()

void DrawBuff_remaining_time_string ( int  uY,
GUIWindow window,
GameTime  remaining_time,
GUIFont Font 
)

См. определение в файле GUIWindow.cpp строка 1343

1344  {
1345  window->DrawText(Font, 32, uY, 0, "\r020" + MakeDateTimeString(remaining_time), 0, 0, 0);
1346 }

Перекрестные ссылки MakeDateTimeString().

Используется в GUIWindow::_41D73D_draw_buff_tooltip() и GameUI_CharacterQuickRecord_Draw().

+ Граф вызовов:
+ Граф вызова функции:

◆ GameUI_DrawItemInfo()

void GameUI_DrawItemInfo ( struct ItemGen inspect_item)

См. определение в файле UIPopup.cpp строка 168

168  {
169  unsigned int v2; // eax@3
170  const char *v28; // edi@69
171  int v34; // esi@81
172  char out_text[300]; // [sp+8h] [bp-270h]@40
173  SummonedItem v67;
174  int v77; // [sp+200h] [bp-78h]@12
175  int v78; // [sp+204h] [bp-74h]@5
176  GUIWindow iteminfo_window; // [sp+208h] [bp-70h]@2
177  int v81; // [sp+264h] [bp-14h]@5
178  PlayerSpeech v83; // [sp+26Ch] [bp-Ch]@18
179  char *v84;
180  int v85;
181  char *Str; // [sp+270h] [bp-8h]@65
182 
183  int r_mask = 0xF800;
184  int g_mask = 0x7E0;
185  int b_mask = 0x1F;
186 
187  if (!inspect_item->uItemID) return;
188 
189  auto inspect_item_image =
190  assets->GetImage_ColorKey(inspect_item->GetIconName(), 0x7FF);
191 
192  iteminfo_window.sHint.clear();
193  iteminfo_window.uFrameWidth = 384;
194  iteminfo_window.uFrameHeight = 180;
195  iteminfo_window.uFrameY = 40;
196 
197  Point pt = pMouse->GetCursorPos();
198  if (pt.x <= 320)
199  v2 = pt.x + 30;
200  else
201  v2 = pt.x - iteminfo_window.uFrameWidth - 30;
202  iteminfo_window.uFrameX = v2;
203  v78 = 100 - inspect_item_image->GetWidth();
204  v81 = 144 - inspect_item_image->GetHeight();
205  if (v78 > 0) v78 = v78 / 2;
206  if (v81 <= 0)
207  v81 = 0;
208  else
209  v81 = v81 / 2;
210  if (!pItemsTable->pItems[inspect_item->uItemID].uItemID_Rep_St)
211  inspect_item->SetIdentified();
212  v77 = 0;
213  if (inspect_item->GetItemEquipType() == EQUIP_GOLD)
214  v77 = inspect_item->special_enchantment;
215  if (uActiveCharacter) {
216  // try to identify
217  if (!inspect_item->IsIdentified()) {
218  if (pPlayers[uActiveCharacter]->CanIdentify(inspect_item) == 1)
219  inspect_item->SetIdentified();
220  v83 = SPEECH_9;
221  if (!inspect_item->IsIdentified()) {
223  localization->GetString(446)); // Identify Failed
224  } else {
225  v83 = SPEECH_8;
226  if (inspect_item->GetValue() <
227  100 * (pPlayers[uActiveCharacter]->uLevel + 5))
228  v83 = SPEECH_7;
229  }
230  if (dword_4E455C) {
231  pPlayers[uActiveCharacter]->PlaySound((PlayerSpeech)(int)v83,
232  0);
233  dword_4E455C = 0;
234  }
235  }
236  inspect_item->UpdateTempBonus(pParty->GetPlayingTime());
237  if (inspect_item->IsBroken()) {
238  if (pPlayers[uActiveCharacter]->CanRepair(inspect_item) == 1)
239  inspect_item->uAttributes =
240  inspect_item->uAttributes & 0xFFFFFFFD | 1;
241  v83 = SPEECH_11;
242  if (!inspect_item->IsBroken())
243  v83 = SPEECH_10;
244  else
246  localization->GetString(448)); // Repair Failed
247  if (dword_4E455C) {
248  pPlayers[uActiveCharacter]->PlaySound(v83, 0);
249  dword_4E455C = 0;
250  }
251  }
252  }
253  if (inspect_item->IsBroken()) {
254  iteminfo_window.DrawMessageBox(0);
255  render->SetUIClipRect(
256  iteminfo_window.uFrameX + 12, iteminfo_window.uFrameY + 12,
257  iteminfo_window.uFrameX + iteminfo_window.uFrameWidth - 12,
258  iteminfo_window.uFrameY + iteminfo_window.uFrameHeight - 12);
259  iteminfo_window.uFrameWidth -= 24;
260  iteminfo_window.uFrameHeight -= 12;
261  iteminfo_window.uFrameZ =
262  iteminfo_window.uFrameX + iteminfo_window.uFrameWidth - 1;
263  iteminfo_window.uFrameW =
264  iteminfo_window.uFrameY + iteminfo_window.uFrameHeight - 1;
265 
266  render->DrawTransparentRedShade(
267  (iteminfo_window.uFrameX + v78) / 640.0f,
268  (v81 + iteminfo_window.uFrameY + 30) / 480.0f, inspect_item_image);
269 
270  iteminfo_window.DrawTitleText(
271  pFontArrus, 0, 0xCu, Color16(0xFFu, 0xFFu, 0x9Bu),
272  inspect_item->GetDisplayName().c_str(), 3);
273  iteminfo_window.DrawTitleText(
274  pFontArrus, 0x64u,
275  ((signed int)iteminfo_window.uFrameHeight >> 1) -
277  iteminfo_window.uFrameWidth, 0) /
278  2,
279  Color16(0xFFu, 0x19u, 0x19u), localization->GetString(32),
280  3); // "Broken Item"
281  render->ResetUIClipRect();
282 
283  if (inspect_item_image) {
284  inspect_item_image->Release();
285  inspect_item_image = nullptr;
286  }
287 
288  return;
289  }
290  if (!inspect_item->IsIdentified()) {
291  iteminfo_window.DrawMessageBox(0);
292  render->SetUIClipRect(
293  iteminfo_window.uFrameX + 12, iteminfo_window.uFrameY + 12,
294  iteminfo_window.uFrameX + iteminfo_window.uFrameWidth - 12,
295  iteminfo_window.uFrameY + iteminfo_window.uFrameHeight - 12);
296  iteminfo_window.uFrameWidth -= 24;
297  iteminfo_window.uFrameHeight -= 12;
298  iteminfo_window.uFrameZ =
299  iteminfo_window.uFrameX + iteminfo_window.uFrameWidth - 1;
300  iteminfo_window.uFrameW =
301  iteminfo_window.uFrameY + iteminfo_window.uFrameHeight - 1;
302  render->DrawTextureAlphaNew(
303  (iteminfo_window.uFrameX + v78) / 640.0f,
304  (v81 + iteminfo_window.uFrameY + 30) / 480.0f, inspect_item_image);
305  iteminfo_window.DrawTitleText(
306  pFontArrus, 0, 0xCu, Color16(0xFFu, 0xFFu, 0x9Bu),
307  pItemsTable->pItems[inspect_item->uItemID].pUnidentifiedName, 3);
308  iteminfo_window.DrawTitleText(
309  pFontArrus, 0x64u,
310  ((int)iteminfo_window.uFrameHeight >> 1) -
312  iteminfo_window.uFrameWidth, 0) /
313  2,
314  Color16(0xFFu, 0x19u, 0x19u), localization->GetString(232),
315  3); // Not Identified
316  render->ResetUIClipRect();
317 
318  if (inspect_item_image) {
319  inspect_item_image->Release();
320  inspect_item_image = nullptr;
321  }
322  return;
323  }
324 
326  463, pItemsTable->pItems[inspect_item->uItemID]
327  .pUnidentifiedName); // "Type: %s"
328 
329  strcpy(out_text, str.c_str());
330  out_text[100] = 0;
331  out_text[200] = 0;
332 
333  switch (inspect_item->GetItemEquipType()) {
334  case EQUIP_SINGLE_HANDED:
335  case EQUIP_TWO_HANDED: {
336  sprintf(out_text + 100, "%s: +%d %s: %dd%d",
337  localization->GetString(18), // Attack
338  (int)inspect_item->GetDamageMod(),
339  localization->GetString(53),
340  (int)inspect_item->GetDamageDice(),
341  (int)inspect_item->GetDamageRoll()); // "Damage"
342  if (inspect_item->GetDamageMod()) {
343  char mod[16];
344  sprintf(mod, "+%d", (int)inspect_item->GetDamageMod());
345  strcat(out_text + 100, mod);
346  }
347  break;
348  }
349 
350  case EQUIP_BOW:
351  sprintf(out_text + 100, "%s: +%d %s: %dd%d",
352  localization->GetString(203), // "Shoot"
353  (int)inspect_item->GetDamageMod(),
354  localization->GetString(53), // "Damage"
355  (int)inspect_item->GetDamageDice(),
356  (int)inspect_item->GetDamageRoll());
357  if (inspect_item->GetDamageMod()) {
358  char mod[16];
359  sprintf(mod, "+%d", (int)inspect_item->GetDamageMod());
360  strcat(out_text + 100, mod);
361  }
362  break;
363 
364  case EQUIP_ARMOUR:
365  case EQUIP_SHIELD:
366  case EQUIP_HELMET:
367  case EQUIP_BELT:
368  case EQUIP_CLOAK:
369  case EQUIP_GAUNTLETS:
370  case EQUIP_BOOTS:
371  case EQUIP_RING:
372  case EQUIP_AMULET:
373  if (inspect_item->GetDamageDice()) // "Armor"
374  sprintf(out_text + 100, "%s: +%d", localization->GetString(11),
375  inspect_item->GetDamageDice() +
376  inspect_item->GetDamageMod());
377  break;
378  }
379 
380  if (!v77) {
381  if (inspect_item->GetItemEquipType() ==
382  EQUIP_POTION) { // this is CORRECT! do not move to switch!
383  if (inspect_item->uEnchantmentType)
384  sprintf(out_text + 200, "%s: %d", localization->GetString(449),
385  inspect_item->uEnchantmentType); // "Power"
386  } else if (inspect_item->GetItemEquipType() == EQUIP_REAGENT) {
387  sprintf(out_text + 200, "%s: %d", localization->GetString(449),
388  inspect_item->GetDamageDice()); // "Power"
389  } else if (inspect_item->uEnchantmentType) {
390  sprintf(
391  out_text + 200, "%s: %s +%d", localization->GetString(210),
392  pItemsTable->pEnchantments[inspect_item->uEnchantmentType - 1]
393  .pBonusStat,
394  inspect_item->m_enchantmentStrength); // "Special"
395  } else if (inspect_item->special_enchantment) {
396  sprintf(
397  out_text + 200, "%s: %s", localization->GetString(210),
399  ->pSpecialEnchantments[inspect_item->special_enchantment -
400  1]
401  .pBonusStatement);
402  } else if (inspect_item->uNumCharges) {
403  sprintf(out_text + 200, "%s: %lu", localization->GetString(464),
404  inspect_item->uNumCharges); // "Charges"
405  }
406  }
407  iteminfo_window.uFrameWidth -= 12;
408  iteminfo_window.uFrameZ =
409  iteminfo_window.uFrameX + iteminfo_window.uFrameWidth - 1;
410  iteminfo_window.uFrameW =
411  iteminfo_window.uFrameY + iteminfo_window.uFrameHeight - 1;
412  Str = (char *)(3 * (pFontArrus->GetHeight() + 8));
413  v84 = &out_text[0];
414  for (uint i = 1; i <= 3; i++) {
415  if (*v84)
416  Str += pFontComic->CalcTextHeight(v84, iteminfo_window.uFrameWidth,
417  100) +
418  3;
419  v84 += 100;
420  }
421  v28 = pItemsTable->pItems[inspect_item->uItemID].pDescription;
422  if (*v28)
424  pItemsTable->pItems[inspect_item->uItemID].pDescription,
425  iteminfo_window.uFrameWidth, 100);
426  iteminfo_window.uFrameHeight =
427  assets->GetImage_ColorKey(inspect_item->GetIconName(), 0x7FF)
428  ->GetHeight() +
429  v81 + 54;
430  if ((signed int)Str > (signed int)iteminfo_window.uFrameHeight)
431  iteminfo_window.uFrameHeight = (unsigned int)Str;
432  if (inspect_item->uAttributes & ITEM_TEMP_BONUS &&
433  (inspect_item->special_enchantment || inspect_item->uEnchantmentType))
434  iteminfo_window.uFrameHeight += pFontComic->GetHeight();
435  v85 = 0;
436  if (pFontArrus->GetHeight()) {
437  iteminfo_window.uFrameWidth -= 24;
438  if (pFontArrus->CalcTextHeight(inspect_item->GetIdentifiedName(),
439  iteminfo_window.uFrameWidth, 0) /
440  (signed int)pFontArrus->GetHeight())
441  v85 = pFontArrus->GetHeight();
442  iteminfo_window.uFrameWidth += 24;
443  }
444  iteminfo_window.uFrameWidth += 12;
445  iteminfo_window.uFrameHeight += (unsigned int)v85;
446  iteminfo_window.uFrameW =
447  iteminfo_window.uFrameY + iteminfo_window.uFrameHeight - 1;
448  iteminfo_window.uFrameZ =
449  iteminfo_window.uFrameX + iteminfo_window.uFrameWidth - 1;
450  iteminfo_window.DrawMessageBox(0);
451  render->SetUIClipRect(
452  iteminfo_window.uFrameX + 12, iteminfo_window.uFrameY + 12,
453  iteminfo_window.uFrameX + iteminfo_window.uFrameWidth - 12,
454  iteminfo_window.uFrameY + iteminfo_window.uFrameHeight - 12);
455  iteminfo_window.uFrameWidth -= 12;
456  iteminfo_window.uFrameHeight -= 12;
457  iteminfo_window.uFrameZ =
458  iteminfo_window.uFrameX + iteminfo_window.uFrameWidth - 1;
459  iteminfo_window.uFrameW =
460  iteminfo_window.uFrameY + iteminfo_window.uFrameHeight - 1;
461  render->DrawTextureAlphaNew((iteminfo_window.uFrameX + v78) / 640.0f,
462  (iteminfo_window.uFrameY +
463  (signed int)(iteminfo_window.uFrameHeight -
464  inspect_item_image->GetHeight()) /
465  2) /
466  480.0f,
467  inspect_item_image);
468 
469  v34 = (int)(v85 + 35);
470  Str = out_text;
471  for (uint i = 1; i <= 3; i++) {
472  if (*Str) {
473  iteminfo_window.DrawText(pFontComic, 100, v34, 0, Str, 0, 0, 0);
474  v34 += pFontComic->CalcTextHeight(Str, iteminfo_window.uFrameWidth,
475  100, 0) +
476  3;
477  }
478  Str += 100;
479  }
480  v28 = pItemsTable->pItems[inspect_item->uItemID].pDescription;
481  if (*v28)
482  iteminfo_window.DrawText(pFontSmallnum, 100, v34, 0, v28, 0, 0, 0);
483  iteminfo_window.uFrameX += 12;
484  iteminfo_window.uFrameWidth -= 24;
485  iteminfo_window.DrawTitleText(pFontArrus, 0, 0xCu,
486  Color16(0xFFu, 0xFFu, 0x9Bu),
487  inspect_item->GetIdentifiedName(), 3);
488  iteminfo_window.uFrameWidth += 24;
489  iteminfo_window.uFrameX -= 12;
490  if (v77) {
491  auto txt = StringPrintf("%s: %lu", localization->GetString(465),
492  v77); // Value
493  iteminfo_window.DrawText(
494  pFontComic, 100,
495  iteminfo_window.uFrameHeight - pFontComic->GetHeight(), 0, txt, 0,
496  0, 0);
497  render->ResetUIClipRect();
498  } else {
499  if ((inspect_item->uAttributes & ITEM_TEMP_BONUS) &&
500  (inspect_item->special_enchantment ||
501  inspect_item->uEnchantmentType)) {
502  v67.Initialize(inspect_item->expirte_time -
504 
505  String txt4 = "Duration:";
506  Str = (char *)(v67.field_18_expire_year - game_starting_year);
507  if (v67.field_18_expire_year != 1168) {
508  txt4 += StringPrintf(
509  " %d:yr", v67.field_18_expire_year - game_starting_year);
510  }
511 
512  if ((((v67.field_14_exprie_month || Str) &&
513  ((txt4 +=
514  StringPrintf(" %d:mo", v67.field_14_exprie_month),
515  v67.field_14_exprie_month) ||
516  Str) ||
517  v67.field_C_expire_day) &&
518  ((txt4 += StringPrintf(" %d:dy", v67.field_C_expire_day),
519  v67.field_14_exprie_month) ||
520  Str || v67.field_C_expire_day) ||
521  v67.field_8_expire_hour) &&
522  ((txt4 += StringPrintf(" %d:hr", v67.field_8_expire_hour),
523  v67.field_14_exprie_month) ||
524  Str || v67.field_C_expire_day ||
525  v67.field_8_expire_hour) ||
526  v67.field_4_expire_minute) {
527  txt4 += StringPrintf(" %d:mn", v67.field_4_expire_minute);
528  }
529  iteminfo_window.DrawText(
530  pFontComic, 100,
531  iteminfo_window.uFrameHeight - 2 * pFontComic->GetHeight(), 0,
532  txt4.data(), 0, 0, 0);
533  }
534 
535  auto txt2 = StringPrintf("%s: %lu", localization->GetString(465),
536  inspect_item->GetValue());
537  iteminfo_window.DrawText(
538  pFontComic, 100,
539  iteminfo_window.uFrameHeight - pFontComic->GetHeight(), 0,
540  txt2.data(), 0, 0, 0);
541 
542  String txt3;
543  if (inspect_item->uAttributes & ITEM_STOLEN) {
544  txt3 = localization->GetString(187); // "Stolen"
545  } else {
546  if (!(inspect_item->uAttributes & ITEM_HARDENED)) {
547  render->ResetUIClipRect();
548  return;
549  }
550  txt3 = localization->GetString(651); // "Hardened"
551  }
552 
553  int tempatt = (inspect_item->uAttributes & 0xFFFF0000) | r_mask;
554 
555  iteminfo_window.DrawText(
556  pFontComic, pFontComic->GetLineWidth(txt2.data()) + 132,
557  iteminfo_window.uFrameHeight - pFontComic->GetHeight(), tempatt,
558  txt3, 0, 0, 0);
559  render->ResetUIClipRect();
560  }
561 }

Перекрестные ссылки assets, GUIFont::CalcTextHeight(), Color16(), GUIWindow::DrawMessageBox(), GUIWindow::DrawText(), GUIWindow::DrawTitleText(), dword_4E455C, EQUIP_AMULET, EQUIP_ARMOUR, EQUIP_BELT, EQUIP_BOOTS, EQUIP_BOW, EQUIP_CLOAK, EQUIP_GAUNTLETS, EQUIP_GOLD, EQUIP_HELMET, EQUIP_POTION, EQUIP_REAGENT, EQUIP_RING, EQUIP_SHIELD, EQUIP_SINGLE_HANDED, EQUIP_TWO_HANDED, ItemGen::expirte_time, SummonedItem::field_14_exprie_month, SummonedItem::field_18_expire_year, SummonedItem::field_4_expire_minute, SummonedItem::field_8_expire_hour, SummonedItem::field_C_expire_day, Localization::FormatString(), game_starting_year, GameUI_StatusBar_OnEvent(), Mouse::GetCursorPos(), ItemGen::GetDamageDice(), ItemGen::GetDamageMod(), ItemGen::GetDamageRoll(), ItemGen::GetDisplayName(), GUIFont::GetHeight(), ItemGen::GetIconName(), ItemGen::GetIdentifiedName(), AssetsManager::GetImage_ColorKey(), ItemGen::GetItemEquipType(), GUIFont::GetLineWidth(), Party::GetPlayingTime(), Localization::GetString(), ItemGen::GetValue(), SummonedItem::Initialize(), ItemGen::IsBroken(), ItemGen::IsIdentified(), ITEM_HARDENED, ITEM_STOLEN, ITEM_TEMP_BONUS, localization, ItemGen::m_enchantmentStrength, ItemEnchantment::pBonusStat, ItemSpecialEnchantment::pBonusStatement, ItemsTable::pEnchantments, pFontArrus, pFontComic, pFontSmallnum, ItemsTable::pItems, pItemsTable, pMouse, pParty, pPlayers, ItemsTable::pSpecialEnchantments, render, ItemGen::SetIdentified(), GUIWindow::sHint, ItemGen::special_enchantment, SPEECH_10, SPEECH_11, SPEECH_7, SPEECH_8, SPEECH_9, StringPrintf(), uActiveCharacter, ItemGen::uAttributes, ItemGen::uEnchantmentType, GUIWindow::uFrameHeight, GUIWindow::uFrameW, GUIWindow::uFrameWidth, GUIWindow::uFrameX, GUIWindow::uFrameY, GUIWindow::uFrameZ, ItemGen::uItemID, ItemGen::uNumCharges, ItemGen::UpdateTempBonus() и Point::x.

Используется в Inventory_ItemPopupAndAlchemy(), ShowPopupShopItem() и UI_OnMouseRightClick().

+ Граф вызовов:
+ Граф вызова функции:

◆ MonsterPopup_Draw()

void MonsterPopup_Draw ( unsigned int  uActorID,
GUIWindow window 
)

См. определение в файле UIPopup.cpp строка 563

563  {
564  bool monster_full_informations = false;
565  static Actor pMonsterInfoUI_Doll;
566  if (!uActiveCharacter) {
567  uActiveCharacter = 1;
568  }
569 
570  int Popup_Y_Offset =
571  monster_popup_y_offsets[(pActors[uActorID].pMonsterInfo.uID - 1) / 3] -
572  40;
573 
574  uint16_t v9 = 0;
575  if (pActors[uActorID].pMonsterInfo.uID ==
576  pMonsterInfoUI_Doll.pMonsterInfo.uID) {
577  v9 = pMonsterInfoUI_Doll.uCurrentActionLength;
578  } else {
579  memcpy(&pMonsterInfoUI_Doll, &pActors[uActorID],
580  sizeof(pMonsterInfoUI_Doll));
581  pMonsterInfoUI_Doll.uCurrentActionAnimation = ANIM_Bored;
582  pMonsterInfoUI_Doll.uCurrentActionTime = 0;
583  v9 = rand() % 256 + 128;
584  pMonsterInfoUI_Doll.uCurrentActionLength = v9;
585  }
586 
587  if (pMonsterInfoUI_Doll.uCurrentActionTime > v9) {
588  pMonsterInfoUI_Doll.uCurrentActionTime = 0;
589  if (pMonsterInfoUI_Doll.uCurrentActionAnimation == ANIM_Bored ||
590  pMonsterInfoUI_Doll.uCurrentActionAnimation == ANIM_AtkMelee) {
591  pMonsterInfoUI_Doll.uCurrentActionAnimation = ANIM_Standing;
592  pMonsterInfoUI_Doll.uCurrentActionLength = rand() % 128 + 128;
593  } else {
594  // rand();
595  pMonsterInfoUI_Doll.uCurrentActionAnimation = ANIM_Bored;
596  if ((pMonsterInfoUI_Doll.pMonsterInfo.uID < 115 ||
597  pMonsterInfoUI_Doll.pMonsterInfo.uID > 186) &&
598  (pMonsterInfoUI_Doll.pMonsterInfo.uID < 232 ||
599  pMonsterInfoUI_Doll.pMonsterInfo.uID > 249) &&
600  rand() % 30 < 100)
601  pMonsterInfoUI_Doll.uCurrentActionAnimation = ANIM_AtkMelee;
602  pMonsterInfoUI_Doll.uCurrentActionLength =
603  8 *
605  ->pSpriteSFrames[pActors[uActorID].pSpriteIDs
606  [(signed __int16)pMonsterInfoUI_Doll
607  .uCurrentActionAnimation]]
608  .uAnimLength;
609  }
610  }
611 
612  Rect doll_rect = {pWindow->uFrameX + 13, pWindow->uFrameY + 52,
613  (pWindow->uFrameX + 13) + 128,
614  (pWindow->uFrameY + 52) + 128};
615  {
616  SpriteFrame *Portrait_Sprite = pSpriteFrameTable->GetFrame(
617  pActors[uActorID]
618  .pSpriteIDs[pMonsterInfoUI_Doll.uCurrentActionAnimation],
619  pMonsterInfoUI_Doll.uCurrentActionTime);
620 
621  // Draw portrait border
622  render->ResetUIClipRect();
623  render->FillRectFast(doll_rect.x, doll_rect.y, 128, 128, Color16(0, 0, 0));
624  render->RasterLine2D(
625  doll_rect.x - 1, doll_rect.y - 1, doll_rect.z + 1, doll_rect.y - 1,
626  Color16(0xE1u, 255, 0x9Bu)); // горизонтальная верхняя линия
627  render->RasterLine2D(
628  doll_rect.x - 1, doll_rect.w + 1, doll_rect.x - 1, doll_rect.y - 1,
629  Color16(0xE1u, 255, 0x9Bu)); // горизонтальная нижняя линия
630  render->RasterLine2D(
631  doll_rect.z + 1, doll_rect.w + 1, doll_rect.x - 1, doll_rect.w + 1,
632  Color16(0xE1u, 255, 0x9Bu)); // левая вертикальная линия
633  render->RasterLine2D(
634  doll_rect.z + 1, doll_rect.y - 1, doll_rect.z + 1, doll_rect.w + 1,
635  Color16(0xE1u, 255, 0x9Bu)); // правая вертикальная линия
636 
637  // Draw portrait
638  render->DrawMonsterPortrait(doll_rect, Portrait_Sprite, Popup_Y_Offset);
639  }
640 
641  // Draw name and profession
642  String str;
643  if (pActors[uActorID].sNPC_ID) {
644  if (GetNPCData(pActors[uActorID].sNPC_ID)->uProfession)
645  str = localization->FormatString(
646  429, GetNPCData(pActors[uActorID].sNPC_ID)->pName,
648  GetNPCData(pActors[uActorID].sNPC_ID)
649  ->uProfession)); // "%s the %s" / ^Pi[%s] %s
650  else
651  str = GetNPCData(pActors[uActorID].sNPC_ID)->pName;
652  } else {
653  if (pActors[uActorID].dword_000334_unique_name)
654  str =
656  ->pPlaceStrings[pActors[uActorID].dword_000334_unique_name];
657  else
658  str =
659  pMonsterStats->pInfos[pActors[uActorID].pMonsterInfo.uID].pName;
660  }
661  pWindow->DrawTitleText(pFontComic, 0, 0xCu, Color16(0xFFu, 0xFFu, 0x9Bu),
662  str, 3);
663 
664  // health bar
665  Actor::DrawHealthBar(&pActors[uActorID], pWindow);
666 
667  bool normal_level = false;
668  bool expert_level = false;
669  bool master_level = false;
670  bool grandmaster_level = false;
671  bool for_effects = false;
672 
673  int skill_points = 0;
674  unsigned int skill_level = 0;
675 
676  pMonsterInfoUI_Doll.uCurrentActionTime += pMiscTimer->uTimeElapsed;
677  if (pPlayers[uActiveCharacter]->GetActualSkillLevel(
679  skill_points =
680  (unsigned __int8)pPlayers[uActiveCharacter]->GetActualSkillLevel(
682  skill_level = pPlayers[uActiveCharacter]->GetActualSkillMastery(
684  1;
685  if (skill_level == 0) { // (normal)
686  if (skill_points + 10 >= pActors[uActorID].pMonsterInfo.uLevel)
687  normal_level = 1;
688  } else if (skill_level == 1) { // (expert)
689  if (2 * skill_points + 10 >=
690  pActors[uActorID].pMonsterInfo.uLevel) {
691  normal_level = 1;
692  expert_level = 1;
693  }
694  } else if (skill_level == 2) { // (master)
695  if (3 * skill_points + 10 >=
696  pActors[uActorID].pMonsterInfo.uLevel) {
697  normal_level = 1;
698  expert_level = 1;
699  master_level = 1;
700  }
701  } else if (skill_level == 3) { // grandmaster
702  normal_level = 1;
703  expert_level = 1;
704  master_level = 1;
705  grandmaster_level = 1;
706  }
707  }
708 
709  PlayerSpeech speech;
710  if (pActors[uActorID].uAIState != Dead &&
711  pActors[uActorID].uAIState != Dying &&
713  pPlayers[uActiveCharacter]->GetActualSkillLevel(
715  if (normal_level | expert_level | master_level | grandmaster_level) {
716  if (pActors[uActorID].pMonsterInfo.uLevel >=
717  pPlayers[uActiveCharacter]->uLevel - 5)
719  else
721  } else {
723  }
724  pPlayers[uActiveCharacter]->PlaySound(speech, 0);
725  }
726 
727  if ((signed int)(pParty->pPlayers[uActiveCharacter - 1]
728  .GetActualSkillMastery(PLAYER_SKILL_MONSTER_ID)) >= 3)
729  for_effects = 1;
730 
731  if (monster_full_informations == true) {
732  normal_level = 1; //
733  expert_level = 1; //
734  master_level = 1; //
735  grandmaster_level = 1; //
736  for_effects = 1;
737  }
738 
739  int pTextHeight = 0;
740  const char *pText = nullptr;
741  int pTextColorID = 0;
742  pWindow->DrawText(pFontSmallnum, 12, 196, Color16(0xE1u, 255, 0x9Bu),
743  localization->GetString(631), 0, 0, 0); // Effects
744  if (!for_effects && false) {
745  pWindow->DrawText(pFontSmallnum, 28, pFontSmallnum->GetHeight() + 193,
746  Color16(0xE1u, 255, 0x9Bu),
747  localization->GetString(630), 0, 0, 0); //?
748  } else {
749  pText = "";
750  pTextHeight = pFontSmallnum->GetHeight() + 193;
751  for (uint i = 1; i <= 21; ++i) {
752  if (pActors[uActorID].pActorBuffs[i].Active()) {
753  switch (i) {
754  case ACTOR_BUFF_CHARM:
755  pTextColorID = 60;
756  pText = localization->GetString(591); // Charmed
757  break;
758  case ACTOR_BUFF_SUMMONED:
759  pTextColorID = 82;
760  pText = localization->GetString(649); // Summoned
761  break;
762  case ACTOR_BUFF_SHRINK:
763  pTextColorID = 92;
764  pText = localization->GetString(592); // Shrunk
765  break;
766  case ACTOR_BUFF_AFRAID:
767  pTextColorID = 63;
768  pText = localization->GetString(4); // Afraid
769  break;
770  case ACTOR_BUFF_STONED:
771  pText = localization->GetString(220); // Stoned
772  pTextColorID = 81;
773  break;
775  pText = localization->GetString(162); // Paralyzed
776  pTextColorID = 81;
777  break;
778  case ACTOR_BUFF_SLOWED:
779  pText = localization->GetString(593); // Slowed
780  pTextColorID = 35;
781  break;
782  case ACTOR_BUFF_BERSERK:
783  pText = localization->GetString(608); // Berserk
784  pTextColorID = 62;
785  break;
788  pText = "";
789  pTextColorID = 0;
790  continue;
791  case ACTOR_BUFF_FATE:
792  pTextColorID = 47;
793  pText = localization->GetString(221); // Fate
794  break;
795  case ACTOR_BUFF_ENSLAVED:
796  pTextColorID = 66;
797  pText = localization->GetString(607); // Enslaved
798  break;
800  pTextColorID = 85;
801  pText =
802  localization->GetString(610); // Day of Protection
803  break;
805  pTextColorID = 86;
806  pText = localization->GetString(609); // Hour of Power
807  break;
808  case ACTOR_BUFF_SHIELD:
809  pTextColorID = 17;
810  pText = localization->GetString(279); // Shield
811  break;
813  pTextColorID = 38;
814  pText = localization->GetString(442); // Stoneskin
815  break;
816  case ACTOR_BUFF_BLESS:
817  pTextColorID = 46;
818  pText = localization->GetString(443); // Bless
819  break;
820  case ACTOR_BUFF_HEROISM:
821  pTextColorID = 51;
822  pText = localization->GetString(440); // Heroism
823  break;
824  case ACTOR_BUFF_HASTE:
825  pTextColorID = 5;
826  pText = localization->GetString(441); // Haste
827  break;
829  pTextColorID = 95;
830  pText =
831  localization->GetString(229); // Pain Reflection
832  break;
834  pTextColorID = 73;
835  pText = localization->GetString(228); // Hammerhands
836  break;
837  default:
838  pText = "";
839  break;
840  }
841  if (_stricmp(pText, "")) {
842  pWindow->DrawText(pFontSmallnum, 28, pTextHeight,
843  GetSpellColor(pTextColorID), pText, 0, 0,
844  0);
845  pTextHeight =
846  pTextHeight + *(char *)((int)pFontSmallnum + 5) - 3;
847  }
848  }
849  }
850  if (!_stricmp(pText, ""))
851  pWindow->DrawText(pFontSmallnum, 28, pTextHeight,
852  Color16(0xE1u, 255, 0x9Bu),
853  localization->GetString(153), 0, 0, 0); // Нет
854  }
855 
856  String txt2;
857  if (normal_level) {
858  auto str =
859  StringPrintf("%s\f%05u\t100%d\n", localization->GetString(108), 0,
860  pActors[uActorID].pMonsterInfo.uHP);
861  pWindow->DrawText(pFontSmallnum, 150, (int)doll_rect.y,
862  Color16(0xE1u, 255, 0x9Bu), str, 0, 0, 0);
863  pTextHeight = doll_rect.y + pFontSmallnum->GetHeight() - 3;
864  txt2 = StringPrintf("%s\f%05u\t100%d\n", localization->GetString(12), 0,
865  pActors[uActorID].pMonsterInfo.uAC); // Armor Class
866  } else {
867  auto str = StringPrintf(
868  "%s\f%05u\t100%s\n", localization->GetString(108), 0,
870  630)); //? - [630] actually displays a question mark
871  pWindow->DrawText(pFontSmallnum, 150, (int)doll_rect.y,
872  Color16(0xE1u, 255, 0x9Bu), str, 0, 0, 0);
873  pTextHeight = doll_rect.y + pFontSmallnum->GetHeight() - 3;
874  txt2 = StringPrintf(
875  "%s\f%05u\t100%s\n", localization->GetString(12), 0,
877  630)); //? - [630] actually displays a question mark
878  }
879  pWindow->DrawText(pFontSmallnum, 150, pTextHeight,
880  Color16(0xE1u, 255, 0x9Bu), txt2, 0, 0, 0);
881  pTextHeight = pTextHeight + pFontSmallnum->GetHeight() - 6 +
883 
884  const char *content[11] = {0};
885  content[0] = localization->GetSpellSchoolName(0);
886  content[1] = localization->GetSpellSchoolName(1);
887  content[2] = localization->GetSpellSchoolName(2);
888  content[3] = localization->GetSpellSchoolName(3);
889  content[4] = localization->GetString(624); // Physical
890  content[5] = localization->GetString(138); // Magic
891  content[6] = localization->GetSpellSchoolName(5);
892  content[7] = localization->GetSpellSchoolName(4);
893  content[8] = localization->GetSpellSchoolName(6);
894  content[9] = localization->GetSpellSchoolName(7);
895  content[10] = localization->GetSpellSchoolName(8);
896 
897  String txt4;
898  if (expert_level) {
899  auto txt3 = StringPrintf(
900  "%s\f%05u\t080%s\n", localization->GetString(18), 0,
901  content[pActors[uActorID].pMonsterInfo.uAttack1Type]); // Attack
902  pWindow->DrawText(pFontSmallnum, 150, (int)pTextHeight,
903  Color16(0xE1u, 255, 0x9Bu), txt3, 0, 0, 0);
904 
905  pTextHeight = pTextHeight + pFontSmallnum->GetHeight() - 3;
906  if (pActors[uActorID].pMonsterInfo.uAttack1DamageBonus)
907  txt4 = StringPrintf(
908  "%s\f%05u\t080%dd%d+%d\n", localization->GetString(53), 0,
909  pActors[uActorID].pMonsterInfo.uAttack1DamageDiceRolls,
910  pActors[uActorID].pMonsterInfo.uAttack1DamageDiceSides,
911  pActors[uActorID].pMonsterInfo.uAttack1DamageBonus);
912  else
913  txt4 = StringPrintf(
914  "%s\f%05u\t080%dd%d\n", localization->GetString(53), 0,
915  pActors[uActorID].pMonsterInfo.uAttack1DamageDiceRolls,
916  pActors[uActorID].pMonsterInfo.uAttack1DamageDiceSides);
917  } else {
918  auto txt3 =
919  StringPrintf("%s\f%05u\t080%s\n", localization->GetString(18), 0,
920  localization->GetString(630));
921  pWindow->DrawText(pFontSmallnum, 150, (int)pTextHeight,
922  Color16(0xE1u, 255, 0x9Bu), txt3, 0, 0, 0);
923  pTextHeight = pTextHeight + pFontSmallnum->GetHeight() - 3;
924  txt4 = StringPrintf("%s\f%05u\t080%s\n", localization->GetString(53), 0,
925  localization->GetString(630));
926  }
927  pWindow->DrawText(pFontSmallnum, 150, pTextHeight,
928  Color16(0xE1u, 255, 0x9Bu), txt4, 0, 0, 0);
929 
930  pTextHeight = pTextHeight + pFontSmallnum->GetHeight() - 6 +
932  if (!master_level) {
933  auto txt5 =
934  StringPrintf("%s\f%05u\t080%s\n", localization->GetString(628), 0,
935  localization->GetString(630)); // "Spell" "?"
936  pWindow->DrawText(pFontSmallnum, 150, (int)pTextHeight,
937  Color16(0xE1u, 255, 0x9Bu), txt5, 0, 0, 0);
938  pTextHeight = pTextHeight + pFontSmallnum->GetHeight() - 3;
939  } else {
940  pText = localization->GetString(628); // Spell
941  if (pActors[uActorID].pMonsterInfo.uSpell1ID &&
942  pActors[uActorID].pMonsterInfo.uSpell2ID)
943  pText = localization->GetString(629); // Spells
944  if (pActors[uActorID].pMonsterInfo.uSpell1ID) {
945  auto txt6 = StringPrintf(
946  "%s\f%05u\t070%s\n", pText, 0,
947  pSpellStats->pInfos[pActors[uActorID].pMonsterInfo.uSpell1ID]
948  .pShortName); // "%s\f%05u\t060%s\n"
949  pWindow->DrawText(pFontSmallnum, 150, (int)pTextHeight,
950  Color16(0xE1u, 255, 0x9Bu), txt6, 0, 0, 0);
951  pTextHeight = pTextHeight + pFontSmallnum->GetHeight() - 3;
952  }
953  if (pActors[uActorID].pMonsterInfo.uSpell2ID) {
954  auto txt6 = StringPrintf(
955  "\f%05u\t070%s\n", 0,
956  pSpellStats->pInfos[pActors[uActorID].pMonsterInfo.uSpell2ID]
957  .pShortName); // "%s\f%05u\t060%s\n"
958  pWindow->DrawText(pFontSmallnum, 150, (int)pTextHeight,
959  Color16(0xE1u, 255, 0x9Bu), txt6, 0, 0, 0);
960  pTextHeight = pTextHeight + pFontSmallnum->GetHeight() - 3;
961  }
962  if (!pActors[uActorID].pMonsterInfo.uSpell1ID &&
963  !pActors[uActorID].pMonsterInfo.uSpell2ID) {
964  auto txt6 = StringPrintf(
965  "%s\f%05u\t070%s\n", localization->GetString(628), 0,
966  localization->GetString(153)); // "%s\f%05u\t060%s\n"
967  pWindow->DrawText(pFontSmallnum, 150, (int)pTextHeight,
968  Color16(0xE1u, 255, 0x9Bu), txt6, 0, 0, 0);
969  pTextHeight = pTextHeight + pFontSmallnum->GetHeight() - 3;
970  }
971  }
972 
973  pTextHeight = pTextHeight + pFontSmallnum->GetHeight() - 3;
974  pWindow->DrawText(pFontSmallnum, 150, pTextHeight,
975  Color16(0xE1u, 255, 0x9Bu), localization->GetString(626),
976  0, 0, 0); // Immune
977  pTextHeight = pTextHeight + pFontSmallnum->GetHeight() - 3;
978 
979  const char *string_name[10] = {0};
980  string_name[0] = localization->GetSpellSchoolName(0); // Fire
981  string_name[1] = localization->GetSpellSchoolName(1); // Air
982  string_name[2] = localization->GetSpellSchoolName(2);
983  string_name[3] = localization->GetSpellSchoolName(3);
984  string_name[4] = localization->GetSpellSchoolName(4);
985  string_name[5] = localization->GetSpellSchoolName(5);
986  string_name[6] = localization->GetSpellSchoolName(6);
987  string_name[7] = localization->GetSpellSchoolName(7);
988  string_name[8] = localization->GetSpellSchoolName(8);
989  string_name[9] = localization->GetString(624); // Physical
990 
991  unsigned char resistances[11] = {0};
992  resistances[0] = pActors[uActorID].pMonsterInfo.uResFire;
993  resistances[1] = pActors[uActorID].pMonsterInfo.uResAir;
994  resistances[2] = pActors[uActorID].pMonsterInfo.uResWater;
995  resistances[3] = pActors[uActorID].pMonsterInfo.uResEarth;
996  resistances[4] = pActors[uActorID].pMonsterInfo.uResMind;
997  resistances[5] = pActors[uActorID].pMonsterInfo.uResSpirit;
998  resistances[6] = pActors[uActorID].pMonsterInfo.uResBody;
999  resistances[7] = pActors[uActorID].pMonsterInfo.uResLight;
1000  resistances[8] = pActors[uActorID].pMonsterInfo.uResPhysical;
1001  resistances[9] = pActors[uActorID].pMonsterInfo.uResDark;
1002 
1003  if (grandmaster_level) {
1004  for (uint i = 0; i < 10; i++) {
1005  if (resistances[i] == 200) {
1006  pText = localization->GetString(625); // Immune
1007  } else {
1008  if (resistances[i])
1009  pText = localization->GetString(627); // Resistant
1010  else
1011  pText = localization->GetString(153); // None
1012  }
1013 
1014  auto txt7 =
1015  StringPrintf("%s\f%05u\t070%s\n", string_name[i], 0, pText);
1016  pWindow->DrawText(pFontSmallnum, 170, pTextHeight,
1017  Color16(0xE1u, 255, 0x9Bu), txt7, 0, 0, 0);
1018  pTextHeight = pTextHeight + pFontSmallnum->GetHeight() - 3;
1019  }
1020  } else {
1021  for (uint i = 0; i < 10; ++i) {
1022  auto txt8 = StringPrintf("%s\f%05u\t070%s\n", string_name[i], 0,
1023  localization->GetString(630)); // "?"
1024  pWindow->DrawText(pFontSmallnum, 170, pTextHeight,
1025  Color16(0xE1u, 255, 0x9Bu), txt8, 0, 0, 0);
1026  pTextHeight = pTextHeight + pFontSmallnum->GetHeight() - 3;
1027  }
1028  }
1029 
1030  // cast spell: Detect life
1031  if (pParty->pPartyBuffs[PARTY_BUFF_DETECT_LIFE].Active()) {
1032  auto txt9 =
1033  StringPrintf("%s: %d", localization->GetString(650),
1034  pActors[uActorID].sCurrentHP); // Current Hit Points
1035  pFontSmallnum->GetLineWidth(txt9);
1036  pWindow->DrawTitleText(
1037  pFontSmallnum, 0,
1038  pWindow->uFrameHeight - pFontSmallnum->GetHeight() - 12, 0, txt9,
1039  3);
1040  }
1041 }

Перекрестные ссылки ACTOR_BUFF_AFRAID, ACTOR_BUFF_BERSERK, ACTOR_BUFF_BLESS, ACTOR_BUFF_CHARM, ACTOR_BUFF_DAY_OF_PROTECTION, ACTOR_BUFF_ENSLAVED, ACTOR_BUFF_FATE, ACTOR_BUFF_HASTE, ACTOR_BUFF_HEROISM, ACTOR_BUFF_HOUR_OF_POWER, ACTOR_BUFF_MASS_DISTORTION, ACTOR_BUFF_PAIN_HAMMERHANDS, ACTOR_BUFF_PAIN_REFLECTION, ACTOR_BUFF_PARALYZED, ACTOR_BUFF_SHIELD, ACTOR_BUFF_SHRINK, ACTOR_BUFF_SLOWED, ACTOR_BUFF_SOMETHING_THAT_HALVES_AC, ACTOR_BUFF_STONED, ACTOR_BUFF_STONESKIN, ACTOR_BUFF_SUMMONED, ANIM_AtkMelee, ANIM_Bored, ANIM_Standing, Color16(), Dead, Actor::DrawHealthBar(), GUIWindow::DrawText(), GUIWindow::DrawTitleText(), dword_507BF0_is_there_popup_onscreen, Dying, Localization::FormatString(), SpriteFrameTable::GetFrame(), GUIFont::GetHeight(), GUIFont::GetLineWidth(), GetNPCData(), Localization::GetNpcProfessionName(), GetSpellColor(), Localization::GetSpellSchoolName(), Localization::GetString(), localization, monster_popup_y_offsets, pActors, PARTY_BUFF_DETECT_LIFE, pFontComic, pFontSmallnum, SpellStats::pInfos, MonsterStats::pInfos, PLAYER_SKILL_MONSTER_ID, pMiscTimer, Actor::pMonsterInfo, pMonsterStats, NPCData::pName, MonsterInfo::pName, pParty, Party::pPartyBuffs, MonsterStats::pPlaceStrings, pPlayers, Party::pPlayers, SpellInfo::pShortName, pSpellStats, pSpriteFrameTable, SpriteFrameTable::pSpriteSFrames, render, SPEECH_IDENTIFY_MONSTER_106, SPEECH_IDENTIFY_MONSTER_STRONGER, SPEECH_IDENTIFY_MONSTER_WEAKER, StringPrintf(), uActiveCharacter, Actor::uCurrentActionAnimation, Actor::uCurrentActionLength, Actor::uCurrentActionTime, GUIWindow::uFrameHeight, GUIWindow::uFrameX, GUIWindow::uFrameY, MonsterInfo::uID, NPCData::uProfession, Timer::uTimeElapsed, Rect::w, Rect::x, Rect::y и Rect::z.

Используется в UI_OnMouseRightClick().

+ Граф вызовов:
+ Граф вызова функции:

◆ SetUserInterface()

void SetUserInterface ( enum PartyAlignment  alignment,
bool  bReplace 
)

См. определение в файле GUIWindow.cpp строка 1032

1032  {
1033  extern void set_default_ui_skin();
1035 
1036  if (!parchment) {
1037  parchment = assets->GetImage_ColorKey("parchment", 0x7FF);
1038  }
1039 
1040  if (align == PartyAlignment::PartyAlignment_Evil) {
1041  if (bReplace) {
1044  assets->GetImage_PCXFromIconsLOD("ib-b-C.pcx");
1048  assets->GetImage_PCXFromIconsLOD("IB-Foot-c.pcx");
1049 
1051 
1052  game_ui_minimap_frame = assets->GetImage_Alpha("ib-autmask-c");
1054  assets->GetImage_ColorKey("IB-COMP-C", 0x7FF);
1055 
1059 
1060  ui_btn_npc_left = assets->GetImage_ColorKey("IB-NPCLD-C", 0x7FF);
1061  ui_btn_npc_right = assets->GetImage_ColorKey("IB-NPCRD-C", 0x7FF);
1062  game_ui_btn_zoomin = assets->GetImage_Alpha("ib-autout-C");
1063  game_ui_btn_zoomout = assets->GetImage_Alpha("ib-autin-C");
1065  assets->GetImage_ColorKey("IB-selec-C", 0x7FF);
1066  game_ui_btn_cast = assets->GetImage_Alpha("ib-m1d-c");
1067  game_ui_btn_rest = assets->GetImage_Alpha("ib-m2d-c");
1070 
1072  assets->GetImage_ColorKey("isg-01-c", 0x7FF);
1074  assets->GetImage_ColorKey("isg-02-c", 0x7FF);
1076  assets->GetImage_ColorKey("isg-03-c", 0x7FF);
1078  assets->GetImage_ColorKey("isg-04-c", 0x7FF);
1079 
1082 
1085 
1087  assets->GetImage_ColorKey("ib-bcu-c", 0x7FF);
1088 
1089  game_ui_evtnpc = assets->GetImage_ColorKey("evtnpc-c", 0x7FF);
1091  assets->GetImage_ColorKey("fr_inven-c", 0x7FF);
1092  messagebox_corner_y = assets->GetImage_Alpha("cornr_ll-c");
1093  messagebox_corner_w = assets->GetImage_Alpha("cornr_lr-c");
1094  messagebox_corner_x = assets->GetImage_Alpha("cornr_ul-c");
1095  messagebox_corner_z = assets->GetImage_Alpha("cornr_ur-c");
1099  messagebox_border_top = assets->GetImage_Alpha("edge_top-c");
1100  _591428_endcap = assets->GetImage_ColorKey("endcap-c", 0x7FF);
1101  } else {
1104  assets->GetImage_PCXFromIconsLOD("ib-b-c.pcx");
1108  assets->GetImage_PCXFromIconsLOD("IB-Foot-c.pcx");
1109 
1111  game_ui_minimap_frame = assets->GetImage_Alpha("ib-autmask-c");
1113  assets->GetImage_ColorKey("IB-COMP-C", 0x7FF);
1117 
1118  ui_btn_npc_left = assets->GetImage_ColorKey("IB-NPCLD-C", 0x7FF);
1119  ui_btn_npc_right = assets->GetImage_ColorKey("IB-NPCRD-C", 0x7FF);
1121  assets->GetImage_ColorKey("ib-autout-C", 0x7FF);
1123  assets->GetImage_ColorKey("ib-autin-C", 0x7FF);
1125  assets->GetImage_ColorKey("IB-selec-C", 0x7FF);
1126  game_ui_btn_cast = assets->GetImage_Alpha("ib-m1d-c");
1127  game_ui_btn_rest = assets->GetImage_Alpha("ib-m2d-c");
1131  assets->GetImage_ColorKey("ib-bcu-c", 0x7FF);
1132 
1134  assets->GetImage_ColorKey("isg-01-c", 0x7FF);
1136  assets->GetImage_ColorKey("isg-02-c", 0x7FF);
1138  assets->GetImage_ColorKey("isg-03-c", 0x7FF);
1140  assets->GetImage_ColorKey("isg-04-c", 0x7FF);
1141 
1142  game_ui_evtnpc = assets->GetImage_ColorKey("evtnpc-c", 0x7FF);
1144  assets->GetImage_ColorKey("fr_inven", 0x7FF);
1145 
1148 
1151  }
1152  uGameUIFontMain = Color16(0xC8u, 0, 0);
1153  uGameUIFontShadow = Color16(10, 0, 0);
1154  } else if (align == PartyAlignment::PartyAlignment_Neutral) {
1155  if (bReplace) {
1158  assets->GetImage_PCXFromIconsLOD("ib-b-a.pcx");
1162  assets->GetImage_PCXFromIconsLOD("IB-Foot-a.pcx");
1163 
1165  game_ui_minimap_frame = assets->GetImage_Alpha("ib-autmask-a");
1167  assets->GetImage_ColorKey("IB-COMP-a", 0x7FF);
1171 
1172  ui_btn_npc_left = assets->GetImage_ColorKey("IB-NPCLD-a", 0x7FF);
1173  ui_btn_npc_right = assets->GetImage_ColorKey("IB-NPCRD-a", 0x7FF);
1175  assets->GetImage_ColorKey("ib-autout-a", 0x7FF);
1177  assets->GetImage_ColorKey("ib-autin-a", 0x7FF);
1179  assets->GetImage_ColorKey("IB-selec-a", 0x7FF);
1180  game_ui_btn_cast = assets->GetImage_Alpha("ib-m1d-a");
1181  game_ui_btn_rest = assets->GetImage_Alpha("ib-m2d-a");
1184 
1186  assets->GetImage_ColorKey("isg-01-a", 0x7FF);
1188  assets->GetImage_ColorKey("isg-02-a", 0x7FF);
1190  assets->GetImage_ColorKey("isg-03-a", 0x7FF);
1192  assets->GetImage_ColorKey("isg-04-a", 0x7FF);
1193 
1198 
1200  assets->GetImage_ColorKey("ib-bcu-a", 0x7FF);
1201 
1202  game_ui_evtnpc = assets->GetImage_ColorKey("evtnpc", 0x7FF);
1204  assets->GetImage_ColorKey("fr_inven", 0x7FF);
1205  messagebox_corner_y = assets->GetImage_Alpha("cornr_ll");
1206  messagebox_corner_w = assets->GetImage_Alpha("cornr_lr");
1207  messagebox_corner_x = assets->GetImage_Alpha("cornr_ul");
1208  messagebox_corner_z = assets->GetImage_Alpha("cornr_ur");
1213  _591428_endcap = assets->GetImage_ColorKey("endcap", 0x7FF);
1214  } else {
1217  assets->GetImage_PCXFromIconsLOD("ib-b-A.pcx");
1221  assets->GetImage_PCXFromIconsLOD("IB-Foot-a.pcx");
1222 
1224  game_ui_minimap_frame = assets->GetImage_Alpha("ib-autmask-a");
1226  assets->GetImage_ColorKey("IB-COMP-A", 0x7FF);
1230 
1231  ui_btn_npc_left = assets->GetImage_ColorKey("IB-NPCLD-A", 0x7FF);
1232  ui_btn_npc_right = assets->GetImage_ColorKey("IB-NPCRD-A", 0x7FF);
1234  assets->GetImage_ColorKey("IB-selec-A", 0x7FF);
1235  game_ui_btn_cast = assets->GetImage_Alpha("ib-m1d-a");
1236  game_ui_btn_rest = assets->GetImage_Alpha("ib-m2d-a");
1240  assets->GetImage_ColorKey("ib-autout-a", 0x7FF);
1242  assets->GetImage_ColorKey("ib-autin-a", 0x7FF);
1244  assets->GetImage_ColorKey("ib-bcu-a", 0x7FF);
1245 
1247  assets->GetImage_ColorKey("isg-01-a", 0x7FF);
1249  assets->GetImage_ColorKey("isg-02-a", 0x7FF);
1251  assets->GetImage_ColorKey("isg-03-a", 0x7FF);
1253  assets->GetImage_ColorKey("isg-04-a", 0x7FF);
1254 
1255  game_ui_evtnpc = assets->GetImage_ColorKey("evtnpc", 0x7FF);
1257  assets->GetImage_ColorKey("fr_inven", 0x7FF);
1258 
1263 
1264  messagebox_corner_y = assets->GetImage_Alpha("cornr_ll");
1265  messagebox_corner_w = assets->GetImage_Alpha("cornr_lr");
1266  messagebox_corner_x = assets->GetImage_Alpha("cornr_ul");
1267  messagebox_corner_z = assets->GetImage_Alpha("cornr_ur");
1272  _591428_endcap = assets->GetImage_ColorKey("endcap", 0x7FF);
1273  }
1274  uGameUIFontMain = Color16(0xAu, 0, 0);
1275  uGameUIFontShadow = Color16(230, 214, 193);
1276  } else if (align == PartyAlignment::PartyAlignment_Good) {
1277  if (bReplace) {
1280  assets->GetImage_PCXFromIconsLOD("ib-b-B.pcx");
1284  assets->GetImage_PCXFromIconsLOD("IB-Foot-b.pcx");
1285 
1287  game_ui_minimap_frame = assets->GetImage_Alpha("ib-autmask-b");
1289  assets->GetImage_ColorKey("IB-COMP-B", 0x7FF);
1293 
1294  ui_btn_npc_left = assets->GetImage_ColorKey("IB-NPCLD-B", 0x7FF);
1295  ui_btn_npc_right = assets->GetImage_ColorKey("IB-NPCRD-B", 0x7FF);
1297  assets->GetImage_ColorKey("ib-autout-B", 0x7FF);
1299  assets->GetImage_ColorKey("ib-autin-B", 0x7FF);
1301  assets->GetImage_ColorKey("IB-selec-B", 0x7FF);
1302  game_ui_btn_cast = assets->GetImage_Alpha("ib-m1d-b");
1303  game_ui_btn_rest = assets->GetImage_Alpha("ib-m2d-b");
1306 
1308  assets->GetImage_ColorKey("isg-01-b", 0x7FF);
1310  assets->GetImage_ColorKey("isg-02-b", 0x7FF);
1312  assets->GetImage_ColorKey("isg-03-b", 0x7FF);
1314  assets->GetImage_ColorKey("isg-04-b", 0x7FF);
1315 
1320 
1322  assets->GetImage_ColorKey("ib-bcu-b", 0x7FF);
1323  game_ui_evtnpc = assets->GetImage_ColorKey("evtnpc-b", 0x7FF);
1325  assets->GetImage_ColorKey("fr_inven-b", 0x7FF);
1326  messagebox_corner_y = assets->GetImage_Alpha("cornr_ll-b");
1327  messagebox_corner_w = assets->GetImage_Alpha("cornr_lr-b");
1328  messagebox_corner_x = assets->GetImage_Alpha("cornr_ul-b");
1329  messagebox_corner_z = assets->GetImage_Alpha("cornr_ur-b");
1333  messagebox_border_top = assets->GetImage_Alpha("edge_top-b");
1334  _591428_endcap = assets->GetImage_ColorKey("endcap-b", 0x7FF);
1335  }
1336  uGameUIFontMain = Color16(0, 0, 0xC8u);
1337  uGameUIFontShadow = Color16(255, 255, 255);
1338  } else {
1339  Error("Invalid alignment type: %u", align);
1340  }
1341 }

Перекрестные ссылки _591428_endcap, assets, Color16(), game_ui_bottomframe, game_ui_btn_cast, game_ui_btn_quickref, game_ui_btn_rest, game_ui_btn_settings, game_ui_btn_zoomin, game_ui_btn_zoomout, game_ui_evtnpc, game_ui_leftframe, game_ui_minimap_compass, game_ui_minimap_frame, game_ui_player_alert_green, game_ui_player_alert_red, game_ui_player_alert_yellow, game_ui_player_selection_frame, game_ui_playerbuff_bless, game_ui_playerbuff_hammerhands, game_ui_playerbuff_pain_reflection, game_ui_playerbuff_preservation, game_ui_right_panel_frame, game_ui_rightframe, game_ui_statusbar, game_ui_topframe, IconFrameTable::GetIcon(), AssetsManager::GetImage_Alpha(), AssetsManager::GetImage_ColorKey(), AssetsManager::GetImage_PCXFromIconsLOD(), UIAnimation::icon, Icon::id, IconFrameTable::InitializeAnimation(), messagebox_border_bottom, messagebox_border_left, messagebox_border_right, messagebox_border_top, messagebox_corner_w, messagebox_corner_x, messagebox_corner_y, messagebox_corner_z, parchment, PartyAlignment_Evil, PartyAlignment_Good, PartyAlignment_Neutral, pIconsFrameTable, pUIAnim_WizardEye, pUIAnum_Torchlight, set_default_ui_skin(), uGameUIFontMain, uGameUIFontShadow, ui_btn_npc_left, ui_btn_npc_right, ui_character_inventory_background и ui_exit_cancel_button_background.

Используется в Application::Game::EventLoop(), GUIWindow::InitializeGUI(), LoadGame(), WinApiWindow::OnOSMenu() и Party::Reset().

+ Граф вызовов:
+ Граф вызова функции:

◆ CreateMsgScrollWindow()

void CreateMsgScrollWindow ( signed int  mscroll_id)

См. определение в файле GUIWindow.cpp строка 1014

1014  {
1015  if (!pGUIWindow_ScrollWindow && mscroll_id >= 700) {
1016  if (mscroll_id <= 782) {
1018  new GUIWindow_Scroll(0, 0, window->GetWidth(),
1019  window->GetHeight(), mscroll_id - 700, "");
1020  }
1021  }
1022 }

Перекрестные ссылки pGUIWindow_ScrollWindow.

Используется в Player::UseItem_DrinkPotion_etc().

+ Граф вызова функции:

◆ free_book_subwindow()

void free_book_subwindow ( )

См. определение в файле GUIWindow.cpp строка 1025

1025  {
1029  }
1030 }

Перекрестные ссылки pGUIWindow_ScrollWindow и GUIWindow::Release().

Используется в back_to_game().

+ Граф вызовов:
+ Граф вызова функции:

◆ CreateScrollWindow()

void CreateScrollWindow ( )

См. определение в файле GUIWindow.cpp строка 977

977  {
979  a1.sHint.clear();
980  a1.uFrameX = 1;
981  a1.uFrameY = 1;
982  a1.uFrameWidth = 468;
983  unsigned int v0 =
985  a1.uFrameWidth, 0) +
986  2 * (unsigned char)pFontCreate->GetHeight() + 24;
987  a1.uFrameHeight = v0;
988  if ((v0 + a1.uFrameY) > 479) {
989  v0 = 479 - a1.uFrameY;
990  a1.uFrameHeight = 479 - a1.uFrameY;
991  }
992  a1.uFrameZ = a1.uFrameWidth + a1.uFrameX - 1;
993  a1.uFrameW = v0 + a1.uFrameY - 1;
994  a1.DrawMessageBox(0);
995  a1.uFrameX += 12;
996  a1.uFrameWidth -= 24;
997  a1.uFrameY += 12;
998  a1.uFrameHeight -= 12;
999  a1.uFrameZ = a1.uFrameWidth + a1.uFrameX - 1;
1000  a1.uFrameW = a1.uFrameHeight + a1.uFrameY - 1;
1001  char *v1 =
1002  pItemsTable->pItems[(unsigned int)pGUIWindow_ScrollWindow->ptr_1C + 700]
1003  .pName;
1004 
1005  a1.DrawTitleText(
1006  pFontCreate, 0, 0, 0,
1007  StringPrintf(format_4E2D80, Color16(0xFFu, 0xFFu, 0x9Bu), v1), 3);
1008  a1.DrawText(pFontSmallnum, 1, pFontCreate->GetHeight() - 3, 0,
1009  pScrolls[(unsigned int)pGUIWindow_ScrollWindow->ptr_1C], 0, 0,
1010  0);
1011 }

Перекрестные ссылки GUIFont::CalcTextHeight(), Color16(), GUIWindow::DrawMessageBox(), GUIWindow::DrawText(), GUIWindow::DrawTitleText(), format_4E2D80, GUIFont::GetHeight(), GUIWindow::par1C, pFontCreate, pFontSmallnum, pGUIWindow_ScrollWindow, ItemsTable::pItems, pItemsTable, pScrolls, GUIWindow::ptr_1C, GUIWindow::sHint, StringPrintf(), GUIWindow::uFrameHeight, GUIWindow::uFrameW, GUIWindow::uFrameWidth, GUIWindow::uFrameX, GUIWindow::uFrameY и GUIWindow::uFrameZ.

Используется в GUIWindow_Scroll::Update().

+ Граф вызовов:
+ Граф вызова функции:

◆ OnPaperdollLeftClick()

void OnPaperdollLeftClick ( )

См. определение в файле UICharacter.cpp строка 2712

2712  {
2713  int mousex = pMouse->uMouseClickX;
2714  int mousey = pMouse->uMouseClickY;
2715 
2716  static int RingsX[6] = {0x1EA, 0x21A, 0x248, 0x1EA, 0x21A, 0x248};
2717  static int RingsY[6] = {0x0CA, 0x0CA, 0x0CA, 0x0FA, 0x0FA, 0x0FA};
2718 
2719  static int glovex = 586;
2720  static int glovey = 88;
2721 
2722  static int amuletx = 493;
2723  static int amulety = 91;
2724 
2725  int slot = 32;
2726  int pos = -1;
2727 
2728  ItemGen *pitem = NULL; // condesnse with this??
2729  // pitem.Reset();
2730 
2731  unsigned int pSkillType; // esi@5
2732  // unsigned __int16 v5; // ax@7
2733  // int equippos; // esi@27
2734  // int v8; // eax@29
2735  int v17; // eax@44
2736 
2737  int v23; // eax@62
2738  int v26; // eax@69
2739  int v34; // esi@90
2740 
2741  // unsigned int v48; // [sp+30h] [bp-1Ch]@88
2742  unsigned int v50; // [sp+38h] [bp-14h]@50
2743  // int v51; // [sp+3Ch] [bp-10h]@1
2744  int freeslot; // [sp+40h] [bp-Ch]@5
2745  ITEM_EQUIP_TYPE pEquipType = EQUIP_NONE;
2746  CastSpellInfo *pSpellInfo;
2747 
2748  int twohandedequip = 0;
2749  ItemGen _this; // [sp+Ch] [bp-40h]@1
2750  _this.Reset();
2751  int mainhandequip = pPlayers[uActiveCharacter]->pEquipment.uMainHand;
2752  unsigned int shieldequip = pPlayers[uActiveCharacter]->pEquipment.uShield;
2753 
2754  if (mainhandequip && pPlayers[uActiveCharacter]
2755  ->pInventoryItemList[mainhandequip - 1]
2756  .GetItemEquipType() == EQUIP_TWO_HANDED)
2757  twohandedequip = mainhandequip;
2758 
2759  unsigned int pickeditem = pParty->pPickedItem.uItemID;
2760 
2761  if (pParty->pPickedItem.uItemID) { // hold item
2762  pEquipType = pParty->pPickedItem.GetItemEquipType();
2763  pSkillType = pParty->pPickedItem.GetPlayerSkillType();
2764 
2765  if (pSkillType == 4) { // PLAYER_SKILL_SPEAR
2766  if (shieldequip) {
2767  if (pPlayers[uActiveCharacter]->GetActualSkillMastery(
2769  3) { // cant use spear in one hand till master
2770  pPlayers[uActiveCharacter]->PlaySound(SPEECH_39, 0);
2771 
2772  return;
2773  }
2774 
2775  pickeditem = pParty->pPickedItem.uItemID;
2776  }
2777  } else {
2778  if ((pSkillType == 8 || pSkillType == 1 ||
2779  pSkillType == 2) // shield sword or dagger to place
2780  && mainhandequip &&
2782  ->pInventoryItemList[mainhandequip - 1]
2783  .GetPlayerSkillType() == 4) { // spear in mainhand
2784  if (pPlayers[uActiveCharacter]->GetActualSkillMastery(
2786  3) { // cant use spear in one hand till master
2787  pPlayers[uActiveCharacter]->PlaySound(SPEECH_39, 0);
2788  return;
2789  }
2790  }
2791  }
2792 
2793  if (!pPlayers[uActiveCharacter]->CanEquip_RaceAndAlignmentCheck(
2794  pickeditem)) { // special item checks
2795  pPlayers[uActiveCharacter]->PlaySound(SPEECH_39, 0);
2796  return;
2797  }
2798 
2799  if (pParty->pPickedItem.uItemID ==
2800  ITEM_WETSUIT) { // wetsuit check is done above
2801  pPlayers[uActiveCharacter]->EquipBody((ITEM_EQUIP_TYPE)3);
2803  return;
2804  }
2805 
2806  switch (pEquipType) {
2807  case EQUIP_BOW:
2808  case EQUIP_ARMOUR:
2809  case EQUIP_HELMET:
2810  case EQUIP_BELT:
2811  case EQUIP_CLOAK:
2812  case EQUIP_GAUNTLETS:
2813  case EQUIP_BOOTS:
2814  case EQUIP_AMULET:
2815 
2816  if (!pPlayers[uActiveCharacter]->HasSkill(
2817  pSkillType)) { // hasnt got the skill to use that
2818  pPlayers[uActiveCharacter]->PlaySound(SPEECH_39, 0);
2819  return;
2820  }
2821 
2822  if (pPlayers[uActiveCharacter]->HasUnderwaterSuitEquipped() &&
2823  (pEquipType != EQUIP_ARMOUR || engine->IsUnderwater())) { // cant put anything on wearing wetsuit
2824  pAudioPlayer->PlaySound(SOUND_error, 0, 0, -1, 0, 0);
2825  return;
2826  }
2827 
2828  pPlayers[uActiveCharacter]->EquipBody(
2829  pEquipType); // equips item
2830 
2831  if (pParty->pPickedItem.uItemID ==
2832  ITEM_WETSUIT) // just taken wetsuit off
2834 
2835  return;
2836 
2837  // ------------------------dress rings(одевание
2838  // колец)----------------------------------
2839  case EQUIP_RING:
2840 
2842  ->HasUnderwaterSuitEquipped()) { // cant put anything
2843  // on wearing wetsuit
2844  pAudioPlayer->PlaySound(SOUND_error, 0, 0, -1, 0, 0);
2845  return;
2846  }
2847 
2848  if (!bRingsShownInCharScreen) { // rings not displayd
2849  //слоты для колец
2850  // equippos = 0;
2851 
2852  for (int equippos = 0; equippos < 6; ++equippos) {
2854  ->pEquipment.uRings[equippos]) { // 0 to 5
2855  freeslot = pPlayers[uActiveCharacter]
2856  ->FindFreeInventoryListSlot();
2857  if (freeslot >= 0) { // drop ring into free space
2858  pParty->pPickedItem.uBodyAnchor = equippos + 11;
2859  memcpy(
2861  ->pInventoryItemList[freeslot],
2862  &pParty->pPickedItem,
2863  sizeof(pPlayers[uActiveCharacter]
2864  ->pInventoryItemList[freeslot]));
2866  ->pEquipment.uRings[equippos] =
2867  freeslot + 1;
2869  return;
2870  }
2871  }
2872  }
2873 
2874  // cant fit rings so swap out
2875  freeslot =
2876  pPlayers[uActiveCharacter]->pEquipment.uRings[5] -
2877  1; // slot of last ring
2878  memcpy(&_this, &pParty->pPickedItem,
2879  sizeof(_this)); // copy hold item to this
2881  ->pInventoryItemList[freeslot]
2882  .uBodyAnchor = 0;
2883  pParty->pPickedItem.Reset(); // drop holding item
2886  ->pInventoryItemList[freeslot]); // set holding
2887  // item to ring
2888  // to swap out
2889  _this.uBodyAnchor = 16;
2890  memcpy(&pPlayers[uActiveCharacter]
2891  ->pInventoryItemList[freeslot],
2892  &_this, 0x24u); // swap from this in
2893  pPlayers[uActiveCharacter]->pEquipment.uRings[5] =
2894  freeslot + 1; // anchor
2895  return;
2896 
2897  } else { // rings displayed
2898  // if in ring area
2899  for (int i = 0; i < 6; ++i) {
2900  if (mousex >= RingsX[i] &&
2901  mousex <= (RingsX[i] + slot) &&
2902  mousey >= RingsY[i] &&
2903  mousey <= (RingsY[i] +
2904  slot)) { // check against ring slots
2905  pos = i;
2906  }
2907  }
2908 
2909  if (pos != -1) { // we have a position to aim for
2910  pitem =
2911  pPlayers[uActiveCharacter]->GetNthEquippedIndexItem(
2912  pos + 10);
2913  if (!pitem) { // no item in slot so just drop
2914  freeslot = pPlayers[uActiveCharacter]
2915  ->FindFreeInventoryListSlot();
2916  if (freeslot >= 0) { // drop ring into free space
2917  pParty->pPickedItem.uBodyAnchor = pos + 11;
2918  memcpy(
2920  ->pInventoryItemList[freeslot],
2921  &pParty->pPickedItem,
2922  sizeof(pPlayers[uActiveCharacter]
2923  ->pInventoryItemList[freeslot]));
2925  ->pEquipment.uRings[pos] = freeslot + 1;
2927  return;
2928  }
2929  } else { // item so swap out
2930  freeslot = pPlayers[uActiveCharacter]
2931  ->pEquipment.uRings[pos] -
2932  1; // slot of ring selected
2933  memcpy(&_this, &pParty->pPickedItem,
2934  sizeof(_this)); // copy hold item to this
2936  ->pInventoryItemList[freeslot]
2937  .uBodyAnchor = 0;
2938  pParty->pPickedItem.Reset(); // drop holding item
2940  &pPlayers[uActiveCharacter]->pInventoryItemList
2941  [freeslot]); // set holding item to ring
2942  // to swap out
2943  _this.uBodyAnchor = pos + 11;
2944  memcpy(&pPlayers[uActiveCharacter]
2945  ->pInventoryItemList[freeslot],
2946  &_this, 0x24u); // swap from this in
2947  pPlayers[uActiveCharacter]->pEquipment.uRings[pos] =
2948  freeslot + 1; // anchor
2949  return;
2950  }
2951 
2952  } else { // not click on right area so exit
2953  return;
2954  }
2955 
2956  return; // shouldnt get here but in case??
2957  }
2958 
2959  // ------------------dress shield(одеть
2960  // щит)------------------------------------------------------
2961  case EQUIP_SHIELD: //Щит
2963  ->HasUnderwaterSuitEquipped()) { // в акваланге
2964  pAudioPlayer->PlaySound(SOUND_error, 0, 0, -1, 0, 0);
2965  return;
2966  }
2967  if (!pPlayers[uActiveCharacter]->HasSkill(
2968  pSkillType)) { // нет навыка
2969  pPlayers[uActiveCharacter]->PlaySound(SPEECH_39, 0);
2970  return;
2971  }
2972  if (shieldequip) { // смена щита щитом
2973  --shieldequip;
2974  memcpy(&_this, &pParty->pPickedItem, sizeof(_this));
2976  ->pInventoryItemList[shieldequip]
2977  .uBodyAnchor = 0;
2981  ->pInventoryItemList[shieldequip]);
2982  _this.uBodyAnchor = 1;
2983  memcpy(&pPlayers[uActiveCharacter]
2984  ->pInventoryItemList[shieldequip],
2985  &_this, 0x24u);
2986  pPlayers[uActiveCharacter]->pEquipment.uShield =
2987  shieldequip + 1;
2988  if (twohandedequip == EQUIP_SINGLE_HANDED) return;
2989  } else {
2990  freeslot =
2991  pPlayers[uActiveCharacter]->FindFreeInventoryListSlot();
2992  if (freeslot < 0) return;
2993  if (!twohandedequip) { // обычная установка щита на пустую
2994  // руку
2996  v17 = freeslot + 1;
2997  memcpy(&pPlayers[uActiveCharacter]
2998  ->pInventoryItemList[freeslot],
2999  &pParty->pPickedItem,
3000  sizeof(pPlayers[uActiveCharacter]
3001  ->pInventoryItemList[freeslot]));
3002  pPlayers[uActiveCharacter]->pEquipment.uShield = v17;
3004  return;
3005  }
3006  mainhandequip--; //ставим щит когда держит двуручный меч
3007  memcpy(&_this, &pParty->pPickedItem, sizeof(_this));
3009  ->pInventoryItemList[mainhandequip]
3010  .uBodyAnchor = 0;
3014  ->pInventoryItemList[mainhandequip]);
3015  _this.uBodyAnchor = 1;
3016  memcpy(&pPlayers[uActiveCharacter]
3017  ->pInventoryItemList[freeslot],
3018  &_this,
3019  sizeof(pPlayers[uActiveCharacter]
3020  ->pInventoryItemList[freeslot]));
3021  pPlayers[uActiveCharacter]->pEquipment.uShield =
3022  freeslot + 1;
3023  }
3024  pPlayers[uActiveCharacter]->pEquipment.uMainHand = 0;
3025  return;
3026  // -------------------------taken in hand(взять в
3027  // руку)-------------------------------------------
3028  case EQUIP_SINGLE_HANDED:
3029  case EQUIP_WAND:
3030  if (pPlayers[uActiveCharacter]->HasUnderwaterSuitEquipped() &&
3031  pParty->pPickedItem.uItemID != 64 &&
3032  pParty->pPickedItem.uItemID != 65) {
3033  pAudioPlayer->PlaySound(SOUND_error, 0, 0, -1, 0, 0);
3034  return;
3035  }
3036  if (!pPlayers[uActiveCharacter]->HasSkill(pSkillType)) {
3037  pPlayers[uActiveCharacter]->PlaySound(SPEECH_39, 0);
3038  return;
3039  }
3040  v50 = 0;
3041 
3042  if (pSkillType == 2 &&
3043  (pPlayers[uActiveCharacter]->GetActualSkillMastery(
3045  1) // dagger in left hand at expert
3046  || pSkillType == 1 &&
3047  (pPlayers[uActiveCharacter]->GetActualSkillMastery(
3049  2)) { // sword in left hand at master
3050  // v18 = pMouse->uMouseClickX;
3051  // v19 = pMouse->uMouseClickY;
3052  if ((signed int)pMouse->uMouseClickX >= 560) {
3053  if (!twohandedequip) {
3054  if (shieldequip) {
3055  --shieldequip;
3056  memcpy(&_this, &pParty->pPickedItem,
3057  sizeof(_this));
3059  ->pInventoryItemList[shieldequip]
3060  .uBodyAnchor = 0;
3064  ->pInventoryItemList[shieldequip]);
3065  _this.uBodyAnchor = 1;
3066  memcpy(&pPlayers[uActiveCharacter]
3067  ->pInventoryItemList[shieldequip],
3068  &_this, 0x24u);
3069  pPlayers[uActiveCharacter]->pEquipment.uShield =
3070  shieldequip + 1;
3071  if (pEquipType != EQUIP_WAND) return;
3072  v50 = _this.uItemID;
3073  break;
3074  }
3075  v23 = pPlayers[uActiveCharacter]
3076  ->FindFreeInventoryListSlot();
3077  if (v23 < 0) return;
3079  memcpy(&pPlayers[uActiveCharacter]
3080  ->pInventoryItemList[v23],
3081  &pParty->pPickedItem,
3082  sizeof(pPlayers[uActiveCharacter]
3083  ->pInventoryItemList[v23]));
3084  pPlayers[uActiveCharacter]->pEquipment.uShield =
3085  v23 + 1;
3087  if (pEquipType != EQUIP_WAND) return;
3088  v50 = pPlayers[uActiveCharacter]->pInventoryItemList[v23].uItemID;
3089  break;
3090  }
3091  }
3092  }
3093  if (!mainhandequip) {
3094  v26 =
3095  pPlayers[uActiveCharacter]->FindFreeInventoryListSlot();
3096  if (v26 < 0) return;
3098  memcpy(&pPlayers[uActiveCharacter]->pInventoryItemList[v26],
3099  &pParty->pPickedItem,
3100  sizeof(pPlayers[uActiveCharacter]
3101  ->pInventoryItemList[v26]));
3102  pPlayers[uActiveCharacter]->pEquipment.uMainHand = v26 + 1;
3104  if (pEquipType != EQUIP_WAND) return;
3105  break;
3106  }
3107  --mainhandequip;
3108  memcpy(&_this, &pParty->pPickedItem, sizeof(_this));
3110  ->pInventoryItemList[mainhandequip]
3111  .uBodyAnchor = 0;
3115  ->pInventoryItemList[mainhandequip]);
3116  _this.uBodyAnchor = 2;
3117  memcpy(&pPlayers[uActiveCharacter]
3118  ->pInventoryItemList[mainhandequip],
3119  &_this, 0x24);
3120  pPlayers[uActiveCharacter]->pEquipment.uMainHand =
3121  mainhandequip + 1;
3122  if (pEquipType == EQUIP_WAND) v50 = _this.uItemID;
3123  if (twohandedequip)
3124  pPlayers[uActiveCharacter]->pEquipment.uShield = 0;
3125  break;
3126  // ---------------------------take two hands(взять двумя
3127  // руками)---------------------------------
3128  case EQUIP_TWO_HANDED:
3129  if (pPlayers[uActiveCharacter]->HasUnderwaterSuitEquipped()) {
3130  pAudioPlayer->PlaySound(SOUND_error, 0, 0, -1, 0, 0);
3131  return;
3132  }
3133  if (!pPlayers[uActiveCharacter]->HasSkill(pSkillType)) {
3134  pPlayers[uActiveCharacter]->PlaySound(SPEECH_39, 0);
3135  return;
3136  }
3137  if (mainhandequip) { // взять двуручный меч когда нет
3138  // щита(замещение оружия)
3139  if (shieldequip) {
3140  pAudioPlayer->PlaySound(SOUND_error, 0, 0, -1, 0, 0);
3141  return;
3142  }
3143  --mainhandequip;
3144  memcpy(&_this, &pParty->pPickedItem, sizeof(_this));
3146  ->pInventoryItemList[mainhandequip]
3147  .uBodyAnchor = 0;
3151  ->pInventoryItemList[mainhandequip]);
3152  _this.uBodyAnchor = 2;
3153  memcpy(&pPlayers[uActiveCharacter]
3154  ->pInventoryItemList[mainhandequip],
3155  &_this, 0x24u);
3156  pPlayers[uActiveCharacter]->pEquipment.uMainHand =
3157  mainhandequip + 1;
3158  } else {
3159  freeslot =
3160  pPlayers[uActiveCharacter]->FindFreeInventoryListSlot();
3161  if (freeslot >= 0) {
3162  if (shieldequip) { // взять двуручный меч когда есть
3163  // щит(замещение щитом)
3164  shieldequip--;
3165  memcpy(&_this, &pParty->pPickedItem, sizeof(_this));
3167  ->pInventoryItemList[shieldequip]
3168  .uBodyAnchor = 0;
3172  ->pInventoryItemList[shieldequip]);
3173  _this.uBodyAnchor = 2;
3174  memcpy(&pPlayers[uActiveCharacter]
3175  ->pInventoryItemList[freeslot],
3176  &_this,
3177  sizeof(pPlayers[uActiveCharacter]
3178  ->pInventoryItemList[freeslot]));
3179  pPlayers[uActiveCharacter]->pEquipment.uShield = 0;
3180  pPlayers[uActiveCharacter]->pEquipment.uMainHand =
3181  freeslot + 1;
3182  } else {
3184  memcpy(&pPlayers[uActiveCharacter]
3185  ->pInventoryItemList[freeslot],
3186  &pParty->pPickedItem,
3187  sizeof(pPlayers[uActiveCharacter]
3188  ->pInventoryItemList[freeslot]));
3189  pPlayers[uActiveCharacter]->pEquipment.uMainHand =
3190  freeslot + 1;
3192  }
3193  }
3194  }
3195  return;
3196  //-------------------------------------------------------------------------------
3197  default:
3198  pPlayers[uActiveCharacter]->UseItem_DrinkPotion_etc(
3199  uActiveCharacter, 0); //выпить напиток и др.
3200  return;
3201  }
3202  return;
3203  }
3204 
3205  // no hold item
3206 
3207  // check if on rings screen - it doesnt use zbuffer
3209  // assume slot width 32 as per inventory
3210  if (mousex < 490 || mousex > 618) return;
3211 
3212  if (mousey < 88 || mousey > 282) return;
3213 
3214  if (mousex >= amuletx && mousex <= (amuletx + slot) &&
3215  mousey >= amulety && mousey <= (amulety + 2 * slot)) {
3216  // amulet
3217  // pitem = pPlayers[uActiveCharacter]->GetAmuletItem(); //9
3218  pos = 9;
3219  }
3220 
3221  if (mousex >= glovex && mousex <= (glovex + slot) && mousey >= glovey &&
3222  mousey <= (glovey + 2 * slot)) {
3223  // glove
3224  // pitem = pPlayers[uActiveCharacter]->GetGloveItem(); //7
3225  pos = 7;
3226  }
3227 
3228  for (int i = 0; i < 6; ++i) {
3229  if (mousex >= RingsX[i] && mousex <= (RingsX[i] + slot) &&
3230  mousey >= RingsY[i] && mousey <= (RingsY[i] + slot)) {
3231  // ring
3232  // pitem = pPlayers[uActiveCharacter]->GetNthRingItem(i); //10+i
3233  pos = 10 + i;
3234  }
3235  }
3236 
3237  if (pos != -1)
3238  pitem = pPlayers[uActiveCharacter]->GetNthEquippedIndexItem(pos);
3239 
3240  if (!pitem) return;
3241  // pPlayers[uActiveCharacter]->get
3242 
3243  // enchanting??
3244  if (_50C9A0_IsEnchantingInProgress) { // наложить закл на экипировку
3245  /* *((char *)pGUIWindow_CastTargetedSpell->ptr_1C + 8) &=
3246  *0x7Fu;//CastSpellInfo
3247  *((short *)pGUIWindow_CastTargetedSpell->ptr_1C + 2) =
3248  *uActiveCharacter - 1;
3249  *((int *)pGUIWindow_CastTargetedSpell->ptr_1C + 3) = v36;
3250  *((short *)pGUIWindow_CastTargetedSpell->ptr_1C + 3) =
3251  *pEquipType;*/
3253  pSpellInfo->uFlags &= 0x7F;
3254  pSpellInfo->uPlayerID_2 = uActiveCharacter - 1;
3255  pSpellInfo->spell_target_pid =
3256  pPlayers[uActiveCharacter]->pEquipment.pIndices[pos];
3257  pSpellInfo->field_6 = pEquipType;
3258 
3259  ptr_50C9A4_ItemToEnchant = pitem;
3262  pMouse->SetCursorImage("MICON1");
3266  } else {
3267  if (!ptr_50C9A4_ItemToEnchant) { // снять вещь
3268  pParty->SetHoldingItem(pitem);
3270  ->pEquipment.pIndices[pitem->uBodyAnchor - 1] = 0;
3271  pitem->Reset();
3272 
3273  // pParty->SetHoldingItem(&pPlayers[uActiveCharacter]->pInventoryItemList[v34
3274  // - 1]);
3275  // pPlayers[uActiveCharacter]->pEquipment.pIndices[pPlayers[uActiveCharacter]->pInventoryItemList[v34
3276  // - 1].uBodyAnchor - 1] = 0;
3277  // pPlayers[uActiveCharacter]->pInventoryItemList[v34 -
3278  // 1].Reset();
3279 
3280  // return
3281  // &this->pInventoryItemList[this->pEquipment.pIndices[index] -
3282  // 1];
3283  }
3284  }
3285 
3286  // for (uint i = 0; i < 6; ++i)
3287  //{
3288  // if (!player->pEquipment.uRings[i])
3289  // continue;
3290 
3291  // CharacterUI_DrawItem(pPaperdollRingsX[i], pPaperdollRingsY[i],
3292  // &player->pInventoryItemList[player->pEquipment.uRings[i] - 1],
3293  // player->pEquipment.uRings[i]);
3294  //}
3295  // if (player->pEquipment.uAmulet)
3296  // CharacterUI_DrawItem(493, 91, player->GetAmuletItem(),
3297  // player->pEquipment.uAmulet);
3298  // if (player->pEquipment.uGlove)
3299  // CharacterUI_DrawItem(586, 88, player->GetGloveItem(),
3300  // player->pEquipment.uGlove);
3301 
3302  } else { // z picking as before
3303  v34 =
3304  render
3305  ->pActiveZBuffer[pMouse->uMouseClickX +
3307  0xFFFF;
3308  if (v34) {
3309  // v36 = v34 - 1;
3310  // v38 = &pPlayers[uActiveCharacter]->pInventoryItemList[v34 - 1];
3311  pEquipType = pPlayers[uActiveCharacter]
3312  ->pInventoryItemList[v34 - 1]
3313  .GetItemEquipType();
3314  if (pPlayers[uActiveCharacter]->pInventoryItemList[v34 - 1].uItemID == ITEM_WETSUIT) {
3315  if (engine->IsUnderwater()) {
3316  pAudioPlayer->PlaySound(SOUND_error, 0, 0, -1, 0, 0);
3317  return;
3318  }
3320  }
3321 
3322  if (_50C9A0_IsEnchantingInProgress) { // наложить закл на экипировку
3323  /* *((char *)pGUIWindow_CastTargetedSpell->ptr_1C + 8) &=
3324  *0x7Fu;//CastSpellInfo
3325  *((short *)pGUIWindow_CastTargetedSpell->ptr_1C + 2) =
3326  *uActiveCharacter - 1;
3327  *((int *)pGUIWindow_CastTargetedSpell->ptr_1C + 3) = v36;
3328  *((short *)pGUIWindow_CastTargetedSpell->ptr_1C + 3) =
3329  *pEquipType;*/
3330  pSpellInfo =
3332  pSpellInfo->uFlags &= 0x7F;
3333  pSpellInfo->uPlayerID_2 = uActiveCharacter - 1;
3334  pSpellInfo->spell_target_pid = v34 - 1;
3335  pSpellInfo->field_6 = pEquipType;
3336 
3338  &pPlayers[uActiveCharacter]->pInventoryItemList[v34 - 1];
3341  pMouse->SetCursorImage("MICON1");
3345  } else {
3346  if (!ptr_50C9A4_ItemToEnchant) { // снять вещь
3348  ->pInventoryItemList[v34 - 1]);
3350  ->pEquipment.pIndices[pPlayers[uActiveCharacter]
3351  ->pInventoryItemList[v34 - 1]
3352  .uBodyAnchor -
3353  1] = 0;
3355  ->pInventoryItemList[v34 - 1]
3356  .Reset();
3357  }
3358  }
3359  } else { // снять лук
3360  if (pPlayers[uActiveCharacter]->pEquipment.uBow) {
3361  _this = pPlayers[uActiveCharacter]->pInventoryItemList
3362  [pPlayers[uActiveCharacter]->pEquipment.uBow - 1];
3363  pParty->SetHoldingItem(&_this);
3364  _this.Reset();
3365  pPlayers[uActiveCharacter]->pEquipment.uBow = 0;
3366  }
3367  }
3368  }
3369 }

Перекрестные ссылки _50C9A0_IsEnchantingInProgress, _50C9D0_AfterEnchClickEventId, _50C9D4_AfterEnchClickEventSecondParam, _50C9D8_AfterEnchClickEventTimeout, bRingsShownInCharScreen, engine, EQUIP_AMULET, EQUIP_ARMOUR, EQUIP_BELT, EQUIP_BOOTS, EQUIP_BOW, EQUIP_CLOAK, EQUIP_GAUNTLETS, EQUIP_HELMET, EQUIP_NONE, EQUIP_RING, EQUIP_SHIELD, EQUIP_SINGLE_HANDED, EQUIP_TWO_HANDED, EQUIP_WAND, CastSpellInfo::field_6, GUIMessageQueue::Flush(), ItemGen::GetItemEquipType(), ItemGen::GetPlayerSkillType(), ITEM_WETSUIT, pAudioPlayer, pGUIWindow_CastTargetedSpell, PLAYER_SKILL_DAGGER, PLAYER_SKILL_SPEAR, PLAYER_SKILL_SWORD, AudioPlayer::PlaySound(), pMessageQueue_50CBD0, pMouse, pParty, Party::pPickedItem, pPlayers, pSRZBufferLineOffsets, GUIWindow::ptr_1C, ptr_50C9A4_ItemToEnchant, Mouse::RemoveHoldingItem(), render, ItemGen::Reset(), Mouse::SetCursorImage(), Party::SetHoldingItem(), SOUND_error, SPEECH_39, CastSpellInfo::spell_target_pid, uActiveCharacter, ItemGen::uBodyAnchor, CastSpellInfo::uFlags, ItemGen::uItemID, Mouse::uMouseClickX, Mouse::uMouseClickY, CastSpellInfo::uPlayerID_2, WetsuitOff() и WetsuitOn().

Используется в Application::Game::EventLoop().

+ Граф вызовов:
+ Граф вызова функции:

◆ DrawJoinGuildWindow()

void DrawJoinGuildWindow ( int  pEventCode)

См. определение в файле GUIWindow.cpp строка 794

794  {
795  uDialogueType = 81; // enum JoinGuildDialog
796  current_npc_text = (char *)pNPCTopics[pEventCode + 99].pText;
797  ContractSelectText(pEventCode);
799  pDialogueWindow = new GUIWindow(WINDOW_Dialogue, 0, 0, window->GetWidth(), 350, pEventCode);
801  471, 445, 169, 35, 1, 0, UIMSG_Escape, 0, 0,
802  localization->GetString(34),
803  { { ui_exit_cancel_button_background } }); // Cancel
804  pDialogueWindow->CreateButton(0, 0, 0, 0, 1, 0,
806  pDialogueWindow->CreateButton(480, 160, 140, 30, 1, 0, UIMSG_ClickNPCTopic,
807  82, 0, localization->GetString(122));
810 }

Перекрестные ссылки ContractSelectText(), GUIWindow::CreateButton(), current_npc_text, Localization::GetString(), localization, pBtn_ExitCancel, pDialogueWindow, pNPCTopics, GUIWindow::Release(), uDialogueType, UIMSG_Escape и WINDOW_Dialogue.

Используется в ClickNPCTopic() и OnSelectNPCDialogueOption().

+ Граф вызовов:
+ Граф вызова функции:

◆ DialogueEnding()

void DialogueEnding ( )

См. определение в файле GUIWindow.cpp строка 812

812  {
814  if (pDialogueWindow) {
816  }
817  pDialogueWindow = nullptr;
818  pMiscTimer->Resume();
819  pEventTimer->Resume();
820 }

Перекрестные ссылки pDialogueWindow, pEventTimer, pMiscTimer, GUIWindow::Release(), Timer::Resume() и sDialogue_SpeakingActorNPC_ID.

Используется в Application::Game::EventLoop().

+ Граф вызовов:
+ Граф вызова функции:

◆ sub_4637E0_is_there_popup_onscreen()

char sub_4637E0_is_there_popup_onscreen ( )

См. определение в файле GUIWindow.cpp строка 1361

1361  {
1363 }

Перекрестные ссылки dword_507BF0_is_there_popup_onscreen.

Используется в Engine::_44EEA7(), Application::Game::EventLoop(), GUI_UpdateWindows() и Mouse::UI_OnMouseLeftClick().

+ Граф вызова функции:

◆ ClickNPCTopic()

void ClickNPCTopic ( int  uMessageParam)

См. определение в файле GUIWindow.cpp строка 1412

1412  {
1413  int pEventNumber; // ecx@8
1414  Player *v4; // esi@20
1415  char *v12; // eax@53
1416  char *v13; // eax@56
1417  char *v14; // eax@57
1418  char *v15; // eax@58
1419  int pPrice; // ecx@70
1420  char *v22; // [sp-Ch] [bp-18h]@73
1421  char *v24; // [sp-8h] [bp-14h]@73
1422 
1423  uDialogueType = uMessageParam + 1;
1424  NPCData *pCurrentNPCInfo =
1425  HouseNPCData[pDialogueNPCCount - ((dword_591080 != 0) ? 1 : 0)]; //- 1
1426  if (uMessageParam <= 24) {
1427  switch (uMessageParam) {
1428  case 13:
1430  pNPCStats->pProfessions[pCurrentNPCInfo->uProfession]
1431  .pJoinText,
1432  uActiveCharacter - 1, 0, 0, 0);
1435  BackToHouseMenu();
1436  return;
1437  case 19:
1438  pEventNumber = pCurrentNPCInfo->evt_A;
1439  break;
1440  case 20:
1441  pEventNumber = pCurrentNPCInfo->evt_B;
1442  break;
1443  case 21:
1444  pEventNumber = pCurrentNPCInfo->evt_C;
1445  break;
1446  case 22:
1447  pEventNumber = pCurrentNPCInfo->evt_D;
1448  break;
1449  case 23:
1450  pEventNumber = pCurrentNPCInfo->evt_E;
1451  break;
1452  case 24:
1453  pEventNumber = pCurrentNPCInfo->evt_F;
1454  break;
1455  default:
1456  BackToHouseMenu();
1457  return;
1458  }
1459  /*switch ( pEventNumber )
1460  {
1461  case 139:
1462  OracleDialogue();
1463  goto _return;
1464  case 311:
1465  CheckBountyRespawnAndAward();
1466  goto _return;
1467  }*/
1468  if (pEventNumber < 200 || pEventNumber > 310) {
1469  if (pEventNumber < 400 || pEventNumber > 410) {
1470  if (pEventNumber == 139) {
1471  OracleDialogue();
1472  } else {
1473  if (pEventNumber == 311) {
1475  } else {
1476  current_npc_text.clear();
1478  EventProcessor(pEventNumber, 0, 1);
1479  activeLevelDecoration = nullptr;
1480  }
1481  }
1482  } else {
1483  dword_F8B1D8 = uMessageParam;
1484  DrawJoinGuildWindow(pEventNumber - 400);
1485  }
1486  } else {
1487  _4B3FE5_training_dialogue(pEventNumber);
1488  }
1489  BackToHouseMenu();
1490  return;
1491  }
1492  if (uMessageParam != 76) {
1493  if (uMessageParam == 77) {
1494  // uBoxHeight = pCurrentNPCInfo->uProfession;
1495  __debugbreak(); // probably hirelings found in buildings, not
1496  // present in MM7, changed
1497  // "pCurrentNPCInfo->uProfession - 1" to
1498  // "pCurrentNPCInfo->uProfession", have to check in
1499  // other versions whether it's ok
1502  pNPCStats->pProfessions[pCurrentNPCInfo->uProfession]
1503  .pJoinText,
1504  uActiveCharacter - 1, 0, 0, 0);
1505  } else {
1507  pNPCStats->pProfessions[pCurrentNPCInfo->uProfession]
1508  .pBenefits,
1509  uActiveCharacter - 1, 0, 0, 0);
1510  }
1513  } else {
1514  if (uMessageParam == 79) {
1515  if (contract_approved) {
1517  if (uActiveCharacter) {
1518  v12 =
1519  (char *)&pPlayers[uActiveCharacter]
1520  ->pActiveSkills[dword_F8B1AC_award_bit_number];
1521  *(short *)v12 &= 0x3Fu;
1523  case 2:
1524  v15 = (char *)&pPlayers[uActiveCharacter]
1525  ->pActiveSkills
1527  *v15 |= 0x40u;
1528  break;
1529  case 3:
1530  v14 = (char *)&pPlayers[uActiveCharacter]
1531  ->pActiveSkills
1533  *v14 |= 0x80u;
1534  break;
1535  case 4:
1536  v13 = (char *)&pPlayers[uActiveCharacter]
1537  ->pActiveSkills
1539  v13[1] |= 1u;
1540  break;
1541  }
1542  pPlayers[uActiveCharacter]->PlaySound(SPEECH_85, 0);
1543  }
1544  pMessageQueue_50CBD0->AddGUIMessage(UIMSG_Escape, 1, 0);
1545  /*if ( (signed int)pMessageQueue_50CBD0->uNumMessages < 40 )
1546  {
1547  pMessageQueue_50CBD0->pMessages[pMessageQueue_50CBD0->uNumMessages].eType
1548  = UIMSG_Escape;
1549  pMessageQueue_50CBD0->pMessages[pMessageQueue_50CBD0->uNumMessages].param
1550  = 1;
1551  *(&pMessageQueue_50CBD0->uNumMessages + 3 *
1552  pMessageQueue_50CBD0->uNumMessages + 3) = 0;
1553  ++pMessageQueue_50CBD0->uNumMessages;
1554  }*/
1555  }
1556  } else {
1557  if (uMessageParam == 82 && contract_approved) { // join guild
1559  v4 = pParty->pPlayers.data();
1560  do {
1561  v4->SetVariable(VAR_Award,
1563  ++v4;
1564  } while ((signed int)v4 <
1565  (signed int)pParty->pHirelings.data());
1566  switch (dword_F8B1D8) {
1567  case 19:
1568  pEventNumber = pCurrentNPCInfo->evt_A;
1569  if (pEventNumber >= 400 && pEventNumber <= 416)
1570  pCurrentNPCInfo->evt_A = 0;
1571  break;
1572  case 20:
1573  pEventNumber = pCurrentNPCInfo->evt_B;
1574  if (pEventNumber >= 400 && pEventNumber <= 416)
1575  pCurrentNPCInfo->evt_B = 0;
1576  break;
1577  case 21:
1578  pEventNumber = pCurrentNPCInfo->evt_C;
1579  if (pEventNumber >= 400 && pEventNumber <= 416)
1580  pCurrentNPCInfo->evt_C = 0;
1581  break;
1582  case 22:
1583  pEventNumber = pCurrentNPCInfo->evt_D;
1584  if (pEventNumber >= 400 && pEventNumber <= 416)
1585  pCurrentNPCInfo->evt_D = 0;
1586  break;
1587  case 23:
1588  pEventNumber = pCurrentNPCInfo->evt_E;
1589  if (pEventNumber >= 400 && pEventNumber <= 416)
1590  pCurrentNPCInfo->evt_E = 0;
1591  break;
1592  case 24:
1593  pEventNumber = pCurrentNPCInfo->evt_F;
1594  if (pEventNumber >= 400 && pEventNumber <= 416)
1595  pCurrentNPCInfo->evt_F = 0;
1596  break;
1597  }
1598  pMessageQueue_50CBD0->AddGUIMessage(UIMSG_Escape, 1, 0);
1599  if (uActiveCharacter) {
1600  pPlayers[uActiveCharacter]->PlaySound(
1601  (PlayerSpeech)SPEECH_86, 0);
1602  BackToHouseMenu();
1603  return;
1604  }
1605  }
1606  }
1607  }
1608  BackToHouseMenu();
1609  return;
1610  }
1611 
1612  if (pParty->pHirelings[0].pName && pParty->pHirelings[1].pName) {
1614  533)); // ""I cannot join you, you're party is full""
1615  BackToHouseMenu();
1616  return;
1617  }
1618 
1619  if (pCurrentNPCInfo->uProfession != 51) { // burglars have no hiring price
1620  __debugbreak(); // probably hirelings found in buildings, not present
1621  // in MM7, changed "pCurrentNPCInfo->uProfession - 1"
1622  // to "pCurrentNPCInfo->uProfession", have to check in
1623  // other versions whether it's ok
1624  pPrice =
1625  pNPCStats->pProfessions[pCurrentNPCInfo->uProfession].uHirePrice;
1626  if (pParty->GetGold() < (unsigned int)pPrice) {
1627  GameUI_StatusBar_OnEvent(localization->GetString(LSTR_NOT_ENOUGH_GOLD));
1629  uDialogueType = 13;
1631  pNPCStats->pProfessions[pCurrentNPCInfo->uProfession].pJoinText,
1632  uActiveCharacter - 1, 0, 0, 0);
1633  if (uActiveCharacter)
1635  GameUI_StatusBar_OnEvent(localization->GetString(LSTR_NOT_ENOUGH_GOLD));
1636  BackToHouseMenu();
1637  return;
1638  } else {
1639  Party::TakeGold(pPrice);
1640  }
1641  }
1642 
1643  pCurrentNPCInfo->uFlags |= 128;
1646  if (pParty->pHirelings[0].pName) {
1647  memcpy(&pParty->pHirelings[1], pCurrentNPCInfo,
1648  sizeof(pParty->pHirelings[1]));
1649  v24 = pCurrentNPCInfo->pName;
1650  v22 = pParty->pHireling2Name;
1651  } else {
1652  memcpy(pParty->pHirelings.data(), pCurrentNPCInfo, 0x4Cu);
1653  v24 = pCurrentNPCInfo->pName;
1654  v22 = pParty->pHireling1Name;
1655  }
1656  strcpy(v22, v24);
1661 
1662  pMessageQueue_50CBD0->AddGUIMessage(UIMSG_Escape, 1, 0);
1663  if (uActiveCharacter)
1664  pPlayers[uActiveCharacter]->PlaySound((PlayerSpeech)61, 0);
1665 
1666 // _return:
1667  BackToHouseMenu();
1668 }

Перекрестные ссылки _4B3FE5_training_dialogue(), __debugbreak(), activeLevelDecoration, BackToHouseMenu(), BuildDialogueString(), CheckBountyRespawnAndAward(), contract_approved, Party::CountHirelings(), current_npc_text, dialog_menu_id, dialogue_show_profession_details, DrawJoinGuildWindow(), dword_591080, dword_F8B1AC_award_bit_number, dword_F8B1B0_MasteryBeingTaught, dword_F8B1D8, EventProcessor(), NPCData::evt_A, NPCData::evt_B, NPCData::evt_C, NPCData::evt_D, NPCData::evt_E, NPCData::evt_F, GameUI_StatusBar_OnEvent(), Party::GetGold(), Localization::GetString(), gold_transaction_amount, Party::hirelingScrollPosition, HOUSE_DIALOGUE_MAIN, HouseNPCData, localization, NPCHireableDialogPrepare(), OracleDialogue(), NPCProfession::pBenefits, pDialogueNPCCount, Party::pHireling1Name, Party::pHireling2Name, Party::pHirelings, NPCProfession::pJoinText, pMessageQueue_50CBD0, NPCData::pName, pNPCStats, pParty, pPlayers, Party::pPlayers, NPCStats::pProfessions, PrepareHouse(), GUIWindow::ptr_1C, Player::SetVariable(), SPEECH_85, SPEECH_86, SPEECH_NotEnoughGold, Party::TakeGold(), uActiveCharacter, uDialogueType, NPCData::uFlags, NPCProfession::uHirePrice, UIMSG_Escape, NPCData::uProfession, VAR_Award и window_SpeakInHouse.

Используется в Application::Game::EventLoop().

+ Граф вызовов:
+ Граф вызова функции:

◆ _4B3FE5_training_dialogue()

void _4B3FE5_training_dialogue ( int  a4)

См. определение в файле GUIWindow.cpp строка 1673

1673  {
1675  current_npc_text = String(pNPCTopics[a4 + 168].pText);
1677  a4); // might be needed because of contract_approved ?
1679  pDialogueWindow = new GUIWindow(WINDOW_Dialogue, 0, 0, window->GetWidth(), 350, a4);
1681  471, 445, 169, 35, 1, 0, UIMSG_Escape, 0, 0,
1682  localization->GetString(34), { { ui_exit_cancel_button_background } });
1683  pDialogueWindow->CreateButton(0, 0, 0, 0, 1, 0,
1686  480, 160, 0x8Cu, 0x1Eu, 1, 0, UIMSG_ClickNPCTopic, 0x4Fu, 0,
1690 }

Перекрестные ссылки _4B254D_SkillMasteryTeacher(), GUIWindow::CreateButton(), current_npc_text, DIALOGUE_SKILL_TRAINER, Localization::GetString(), localization, pBtn_ExitCancel, pDialogueWindow, pNPCTopics, GUIWindow::Release(), uDialogueType, UIMSG_Escape и WINDOW_Dialogue.

Используется в ClickNPCTopic() и OnSelectNPCDialogueOption().

+ Граф вызовов:
+ Граф вызова функции:

◆ OracleDialogue()

void OracleDialogue ( )

См. определение в файле GUIWindow.cpp строка 1693

1693  {
1694  __int16 *v0; // edi@1
1695  signed int v4; // eax@9
1696  int v5; // ebx@11
1697  signed int v8; // edi@14
1698  ItemGen *v9; // [sp+Ch] [bp-Ch]@11
1699  signed int v10; // [sp+10h] [bp-8h]@13
1700  int v11; // [sp+14h] [bp-4h]@1
1701 
1702  contract_approved = 0;
1703  v11 = 0;
1704  uDialogueType = 84;
1705  current_npc_text = (char *)pNPCTopics[667].pText;
1707 
1708  for (uint i = 0; i <= 53; i++) {
1709  if ((unsigned __int16)_449B57_test_bit(pParty->_quest_bits, *v0)) {
1710  for (uint pl = 0; pl < 4; pl++) {
1711  if (pParty->pPlayers[pl].CompareVariable(VAR_PlayerItemInHands,
1712  *(v0 + 1)))
1713  break;
1714  }
1715  }
1716  ++v11;
1717  }
1719  current_npc_text = (char *)pNPCTopics[666]
1720  .pText; // Here's %s that you lost. Be careful
1723  pParty->pPlayers[0].AddVariable(VAR_PlayerItemInHands, v4);
1724  }
1725  if (contract_approved == 601) {
1726  v5 = 0;
1727  // v12 = pParty->pPlayers.data();//[0].uClass;
1728  v9 = 0;
1729  // while ( 1 )
1730  for (uint i = 0; i < 4; i++) {
1731  if (pParty->pPlayers[i].classType == PLAYER_CLASS_LICH) {
1732  v10 = 0;
1733  // v6 =
1734  // pParty->pPlayers.data();//[0].pInventoryItems[0].field_1A;
1735  for (uint pl = 0; pl < 4; pl++) {
1736  for (v8 = 0; v8 < 126; v8++) { // 138
1737  if (pParty->pPlayers[pl]
1738  .pInventoryItemList[v8]
1739  .uItemID == ITEM_LICH_JAR_FULL) {
1740  if (!pParty->pPlayers[pl]
1741  .pInventoryItemList[v8]
1742  .uHolderPlayer)
1743  v9 = &pParty->pPlayers[pl]
1744  .pInventoryItemList[v8];
1745  if (pParty->pPlayers[pl]
1746  .pInventoryItemList[v8]
1747  .uHolderPlayer == v5)
1748  v10 = 1;
1749  }
1750  }
1751  }
1752  if (!v10) break;
1753  }
1754  // ++v12;
1755  ++v5;
1756  // if ( v12 > &pParty->pPlayers[3] )
1757  // return;
1758  }
1759  if (v9) v9->uHolderPlayer = v5;
1760  }
1761 }

Перекрестные ссылки _449B57_test_bit(), _4F0882_evt_VAR_PlayerItemInHands_vals, Party::_quest_bits, contract_approved, current_npc_text, ITEM_LICH_JAR_FULL, PLAYER_CLASS_LICH, pNPCTopics, pParty, Party::pPlayers, uDialogueType, ItemGen::uHolderPlayer и VAR_PlayerItemInHands.

Используется в ClickNPCTopic() и OnSelectNPCDialogueOption().

+ Граф вызовов:
+ Граф вызова функции:

◆ CheckBountyRespawnAndAward()

void CheckBountyRespawnAndAward ( )

См. определение в файле GUIWindow.cpp строка 1763

1763  {
1764  int i; // eax@2
1765  int rand_monster_id; // edx@3
1766 
1767  uDialogueType = 83;
1769  pDialogueWindow = new GUIWindow(WINDOW_Dialogue, 0, 0, window->GetWidth(), 350, 0);
1771  471, 445, 169, 35, 1, 0, UIMSG_Escape, 0, 0,
1772  localization->GetString(34), // "Cancel"
1773  { { ui_exit_cancel_button_background } });
1774  pDialogueWindow->CreateButton(0, 0, 0, 0, 1, 0,
1776  pDialogueWindow->CreateButton(480, 160, 140, 30, 1, 0, UIMSG_0, 83, 0, "");
1779  // get new monster for hunting
1781  int)((char *)window_SpeakInHouse->ptr_1C - 102)] <
1782  pParty->GetPlayingTime()) {
1784  int)((char *)window_SpeakInHouse->ptr_1C - 102)] = false;
1786  int)((char *)window_SpeakInHouse->ptr_1C - 102)] =
1787  GameTime((int64_t)((double)(0x12750000 *
1788  (pParty->uCurrentMonth +
1789  12 * pParty->uCurrentYear - 14015)) *
1790  0.033333335));
1791  for (i = rand();; i = rand()) {
1792  rand_monster_id = i % 258 + 1;
1793  pParty->monster_id_for_hunting[(int)((char *)window_SpeakInHouse->ptr_1C - 102)] =
1794  rand_monster_id;
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))
1805  break;
1806  }
1807  }
1808  }
1810  int)((char *)window_SpeakInHouse->ptr_1C - 102)];
1812  int)((char *)window_SpeakInHouse->ptr_1C - 102)]) {
1813  bountyHunting_text = pNPCTopics[351].pText;
1815  int)((char *)window_SpeakInHouse->ptr_1C - 102)])
1816  bountyHunting_text = pNPCTopics[353].pText;
1817  } else { // get prize
1819  int)((char *)window_SpeakInHouse->ptr_1C - 102)]) {
1821  100 *
1823  ->pInfos
1824  [(unsigned __int16)pParty->monster_id_for_hunting[(
1825  int)((char *)window_SpeakInHouse->ptr_1C -
1826  102)]]
1827  .uLevel,
1828  0);
1829  for (uint i = 0; i < 4; ++i)
1830  pParty->pPlayers[i].SetVariable(VAR_Award, 86);
1832  100 * pMonsterStats
1834  int)((char *)window_SpeakInHouse->ptr_1C - 102)]]
1835  .uLevel;
1837  int)((char *)window_SpeakInHouse->ptr_1C - 102)] = 0;
1839  int)((char *)window_SpeakInHouse->ptr_1C - 102)] = false;
1840  }
1841  bountyHunting_text = pNPCTopics[352].pText;
1842  }
1843 }

Перекрестные ссылки GUIWindow::CreateButton(), Localization::GetString(), localization, pBtn_ExitCancel, pDialogueWindow, GUIWindow::Release(), uDialogueType, UIMSG_Escape и WINDOW_Dialogue.

Используется в ClickNPCTopic() и OnSelectNPCDialogueOption().

+ Граф вызовов:
+ Граф вызова функции:

◆ _4B254D_SkillMasteryTeacher()

String _4B254D_SkillMasteryTeacher ( int  trainerInfo)

См. определение в файле GUIWindow.cpp строка 1846

1846  {
1847  int teacherLevel; // edx@1
1848  int skillBeingTaught; // ecx@1
1849  int pClassType; // eax@7
1850  int currClassMaxMastery; // eax@7
1851  int pointsInSkillWOutMastery; // ebx@7
1852  int classBaseId; // eax@8
1853  unsigned int skillMastery; // eax@29
1854  unsigned __int16 pointsInSkill; // [sp+1Ch] [bp-10h]@7
1855  int masteryLevelBeingTaught; // [sp+24h] [bp-8h]@7
1856 
1857  contract_approved = 0;
1858  teacherLevel = (trainerInfo - 200) % 3;
1859  skillBeingTaught = (trainerInfo - 200) / 3;
1860  Player *activePlayer = pPlayers[uActiveCharacter];
1861  pClassType = activePlayer->classType;
1862  currClassMaxMastery =
1864  [skillBeingTaught];
1865  masteryLevelBeingTaught = teacherLevel + 2;
1866  dword_F8B1B0_MasteryBeingTaught = masteryLevelBeingTaught;
1867  if (currClassMaxMastery < masteryLevelBeingTaught) {
1868  classBaseId = pClassType - pClassType % 4;
1869 
1871  [skillBeingTaught] >=
1872  masteryLevelBeingTaught) {
1873  return localization->FormatString(
1874  633, localization->GetClassName(
1875  classBaseId +
1876  1)); // You have to be promoted to %s to learn this
1877  // skill level. / Вы должны достичь звания %s
1878  // для обучения этому уровню навыка.
1880  [classBaseId + 2][skillBeingTaught] >=
1881  masteryLevelBeingTaught &&
1883  [classBaseId + 3][skillBeingTaught] >=
1884  masteryLevelBeingTaught) {
1885  return localization->FormatString(
1886  634, localization->GetClassName(classBaseId + 2),
1888  classBaseId +
1889  3)); // You have to be promoted to %s or %s to learn this
1890  // skill level. / Вы должны достичь звания %s или
1891  // %s для обучения этому уровню навыка.
1893  [classBaseId + 2][skillBeingTaught] >=
1894  masteryLevelBeingTaught) {
1895  return localization->FormatString(
1896  633, localization->GetClassName(
1897  classBaseId +
1898  2)); // You have to be promoted to %s to learn this
1899  // skill level. / Вы должны достичь звания %s
1900  // для обучения этому уровню навыка.
1902  [classBaseId + 3][skillBeingTaught] >=
1903  masteryLevelBeingTaught) {
1904  return localization->FormatString(
1905  633, localization->GetClassName(
1906  classBaseId +
1907  3)); // You have to be promoted to %s to learn this
1908  // skill level. / Вы должны достичь звания %s
1909  // для обучения этому уровню навыка.
1910  } else {
1911  return localization->FormatString(
1912  632,
1914  pClassType)); // This skill level can not be learned by the
1915  // %s class. / Этот уровень навыка не
1916  // может быть постигнут классом %s.
1917  }
1918  }
1919 
1920  if (!activePlayer->CanAct())
1921  return String(pNPCTopics[122].pText); // Not in your condition!
1922 
1923  pointsInSkill = activePlayer->pActiveSkills[skillBeingTaught];
1924  pointsInSkillWOutMastery = pointsInSkill & 0x3F;
1925  if (!pointsInSkillWOutMastery)
1926  return String(
1927  pNPCTopics[131].pText); // You must know the skill before you can
1928  // become an expert in it!
1929 
1930  skillMastery = SkillToMastery(pointsInSkill);
1931  if (skillMastery > teacherLevel + 1)
1932  return String(
1933  pNPCTopics[teacherLevel + 128]
1934  .pText); // You are already an SKILLLEVEL in this skill.
1935 
1936  dword_F8B1AC_award_bit_number = skillBeingTaught;
1937  if (masteryLevelBeingTaught == 2 && pointsInSkillWOutMastery < 4 ||
1938  masteryLevelBeingTaught == 3 && pointsInSkillWOutMastery < 7 ||
1939  masteryLevelBeingTaught == 4 && pointsInSkillWOutMastery < 10)
1940  return String(
1941  pNPCTopics[127].pText); // You don't meet the requirements, and
1942  // cannot be taught until you do.
1943 
1945  case PLAYER_SKILL_STAFF:
1946  case PLAYER_SKILL_SWORD:
1947  case PLAYER_SKILL_DAGGER:
1948  case PLAYER_SKILL_AXE:
1949  case PLAYER_SKILL_SPEAR:
1950  case PLAYER_SKILL_BOW:
1951  case PLAYER_SKILL_MACE:
1953  switch (masteryLevelBeingTaught) {
1954  case 2:
1955  gold_transaction_amount = 2000;
1956  break;
1957  case 3:
1958  gold_transaction_amount = 5000;
1959  break;
1960  case 4:
1961  gold_transaction_amount = 8000;
1962  break;
1963  }
1964  break;
1965  case PLAYER_SKILL_BLASTER:
1966  switch (masteryLevelBeingTaught) {
1967  case 2:
1969  break;
1970  case 3:
1972  break;
1973  case 4:
1975  break;
1976  }
1977  break;
1978  case PLAYER_SKILL_SHIELD:
1979  case PLAYER_SKILL_LEATHER:
1980  case PLAYER_SKILL_CHAIN:
1981  case PLAYER_SKILL_PLATE:
1982  switch (masteryLevelBeingTaught) {
1983  case 2:
1984  gold_transaction_amount = 1000;
1985  break;
1986  case 3:
1987  gold_transaction_amount = 3000;
1988  break;
1989  case 4:
1990  gold_transaction_amount = 7000;
1991  break;
1992  }
1993  break;
1994  case PLAYER_SKILL_FIRE:
1995  case PLAYER_SKILL_AIR:
1996  case PLAYER_SKILL_WATER:
1997  case PLAYER_SKILL_EARTH:
1998  case PLAYER_SKILL_SPIRIT:
1999  case PLAYER_SKILL_MIND:
2000  case PLAYER_SKILL_BODY:
2001  switch (masteryLevelBeingTaught) {
2002  case 2:
2003  gold_transaction_amount = 1000;
2004  break;
2005  case 3:
2006  gold_transaction_amount = 4000;
2007  break;
2008  case 4:
2009  gold_transaction_amount = 8000;
2010  break;
2011  }
2012  break;
2013  case PLAYER_SKILL_LIGHT:
2014  switch (masteryLevelBeingTaught) {
2015  case 2:
2016  gold_transaction_amount = 2000;
2017  break;
2018  case 3:
2019  if (!(unsigned __int16)_449B57_test_bit(pParty->_quest_bits,
2020  114))
2021  return String(pNPCTopics[127].pText);
2022  gold_transaction_amount = 5000;
2023  break;
2024  case 4:
2025  if (!activePlayer->ProfessionOrGuildFlagsCorrect(0x22u,
2026  1) ||
2027  !activePlayer->ProfessionOrGuildFlagsCorrect(0x1Au, 1))
2028  return String(pNPCTopics[127].pText);
2029  gold_transaction_amount = 8000;
2030  break;
2031  }
2032  break;
2033  case PLAYER_SKILL_DARK:
2034  switch (masteryLevelBeingTaught) {
2035  case 2:
2036  gold_transaction_amount = 2000;
2037  break;
2038  case 3:
2039  if (!(unsigned __int16)_449B57_test_bit(pParty->_quest_bits,
2040  110))
2041  return String(pNPCTopics[127].pText);
2042  gold_transaction_amount = 5000;
2043  break;
2044  case 4:
2045  if (!activePlayer->ProfessionOrGuildFlagsCorrect(0x23u,
2046  1) ||
2047  !activePlayer->ProfessionOrGuildFlagsCorrect(0x1Bu, 1))
2048  return String(pNPCTopics[127].pText);
2049  gold_transaction_amount = 8000;
2050  break;
2051  }
2052  break;
2053  case PLAYER_SKILL_ITEM_ID:
2054  case PLAYER_SKILL_REPAIR:
2059  case PLAYER_SKILL_STEALING:
2060  case PLAYER_SKILL_ALCHEMY:
2061  switch (masteryLevelBeingTaught) {
2062  case 2:
2064  break;
2065  case 3:
2066  gold_transaction_amount = 2500;
2067  break;
2068  case 4:
2069  gold_transaction_amount = 6000;
2070  break;
2071  }
2072  break;
2073  case PLAYER_SKILL_MERCHANT:
2074  switch (masteryLevelBeingTaught) {
2075  case 2:
2076  gold_transaction_amount = 2000;
2077  break;
2078  case 3:
2079  if (activePlayer->GetBaseWillpower() < 50)
2080  return String(pNPCTopics[127].pText);
2081  gold_transaction_amount = 5000;
2082  break;
2083  case 4:
2084  gold_transaction_amount = 8000;
2085  break;
2086  }
2087  break;
2089  switch (masteryLevelBeingTaught) {
2090  case 2:
2092  break;
2093  case 3:
2094  if (activePlayer->GetBaseEndurance() < 50)
2095  return String(pNPCTopics[127].pText);
2096  gold_transaction_amount = 2500;
2097  break;
2098  case 4:
2099  gold_transaction_amount = 6000;
2100  break;
2101  }
2102  break;
2104  Error("Diplomacy not used");
2105  break;
2106  case PLAYER_SKILL_TIEVERY:
2107  Error("Thievery not used");
2108  break;
2109  case PLAYER_SKILL_DODGE:
2110  switch (masteryLevelBeingTaught) {
2111  case 2:
2112  gold_transaction_amount = 2000;
2113  break;
2114  case 3:
2115  gold_transaction_amount = 5000;
2116  break;
2117  case 4:
2118  if ((activePlayer->pActiveSkills[PLAYER_SKILL_UNARMED] &
2119  63) < 0xA)
2120  return String(pNPCTopics[127].pText);
2121  gold_transaction_amount = 8000;
2122  break;
2123  }
2124  break;
2125  case PLAYER_SKILL_UNARMED:
2126  switch (masteryLevelBeingTaught) {
2127  case 2:
2128  gold_transaction_amount = 2000;
2129  break;
2130  case 3:
2131  gold_transaction_amount = 5000;
2132  break;
2133  case 4:
2134  if ((activePlayer->pActiveSkills[PLAYER_SKILL_DODGE] & 63) <
2135  0xA)
2136  return String(pNPCTopics[127].pText);
2137  gold_transaction_amount = 8000;
2138  break;
2139  }
2140  break;
2141 
2142  case PLAYER_SKILL_LEARNING:
2143  switch (masteryLevelBeingTaught) {
2144  case 2:
2145  gold_transaction_amount = 2000;
2146  break;
2147  case 3:
2148  if (activePlayer->GetBaseIntelligence() < 50)
2149  return String(pNPCTopics[127].pText);
2150  gold_transaction_amount = 5000;
2151  break;
2152  case 4:
2153  gold_transaction_amount = 8000;
2154  break;
2155  }
2156  break;
2157  default:
2158  Error("Unknown skill");
2159  }
2160 
2162  return String(pNPCTopics[124].pText); // You don't have enough gold!
2163 
2164  contract_approved = 1;
2165  if (masteryLevelBeingTaught == 2) {
2166  return localization->FormatString(
2167  534, // Получить степень ^Pr[%s] в навыке ^Pr[%s] за ^I[%lu]
2168  // золот^L[ой;ых;ых]
2169  localization->GetString(433), // Expert
2172  } else if (masteryLevelBeingTaught == 3) {
2173  return localization->FormatString(
2174  534,
2175  localization->GetString(432), // Master
2178  } else if (masteryLevelBeingTaught == 4) {
2179  return localization->FormatString(
2180  534,
2181  localization->GetString(225), // Grandmaster
2184  }
2185 
2186  return String("");
2187 }

Перекрестные ссылки _449B57_test_bit(), Party::_quest_bits, byte_4ED970_skill_learn_ability_by_class_table, Player::CanAct(), Player::classType, contract_approved, dword_F8B1AC_award_bit_number, dword_F8B1B0_MasteryBeingTaught, Localization::FormatString(), Player::GetBaseEndurance(), Player::GetBaseIntelligence(), Player::GetBaseWillpower(), Localization::GetClassName(), Party::GetGold(), Localization::GetSkillName(), Localization::GetString(), gold_transaction_amount, localization, Player::pActiveSkills, PLAYER_SKILL_AIR, PLAYER_SKILL_ALCHEMY, PLAYER_SKILL_ARMSMASTER, PLAYER_SKILL_AXE, PLAYER_SKILL_BLASTER, PLAYER_SKILL_BODY, PLAYER_SKILL_BODYBUILDING, PLAYER_SKILL_BOW, PLAYER_SKILL_CHAIN, PLAYER_SKILL_DAGGER, PLAYER_SKILL_DARK, PLAYER_SKILL_DIPLOMACY, PLAYER_SKILL_DODGE, PLAYER_SKILL_EARTH, PLAYER_SKILL_FIRE, PLAYER_SKILL_ITEM_ID, PLAYER_SKILL_LEARNING, PLAYER_SKILL_LEATHER, PLAYER_SKILL_LIGHT, PLAYER_SKILL_MACE, PLAYER_SKILL_MEDITATION, PLAYER_SKILL_MERCHANT, PLAYER_SKILL_MIND, PLAYER_SKILL_MONSTER_ID, PLAYER_SKILL_PERCEPTION, PLAYER_SKILL_PLATE, PLAYER_SKILL_REPAIR, PLAYER_SKILL_SHIELD, PLAYER_SKILL_SPEAR, PLAYER_SKILL_SPIRIT, PLAYER_SKILL_STAFF, PLAYER_SKILL_STEALING, PLAYER_SKILL_SWORD, PLAYER_SKILL_TIEVERY, PLAYER_SKILL_TRAP_DISARM, PLAYER_SKILL_UNARMED, PLAYER_SKILL_WATER, pNPCTopics, pParty, pPlayers, Player::ProfessionOrGuildFlagsCorrect(), SkillToMastery() и uActiveCharacter.

Используется в _4B3FE5_training_dialogue() и SimpleHouseDialog().

+ Граф вызовов:
+ Граф вызова функции:

◆ BuildDialogueString() [1/2]

String BuildDialogueString ( const char *  lpsz,
unsigned __int8  uPlayerID,
struct ItemGen a3,
char *  a4,
int  a5,
GameTime a6 = nullptr 
)

См. определение в файле GUIWindow.cpp строка 2189

2190  {
2191  String str = String(lpsz);
2192  return BuildDialogueString(str, uPlayerID, a3, a4, a5, a6);
2193 }

Перекрестные ссылки BuildDialogueString().

Используется в AlchemyMagicShopWares(), ArmorShopWares(), BuildDialogueString(), ClickNPCTopic(), GameUI_DrawNPCPopup(), GuildDialog(), ShopDialogIdentify(), ShopDialogRepair(), ShopDialogSellEquip(), GUIWindow_JournalBook::Update(), GUIWindow_Dialogue::Update() и WeaponShopWares().

+ Граф вызовов:
+ Граф вызова функции:

◆ BuildDialogueString() [2/2]

String BuildDialogueString ( String str,
unsigned __int8  uPlayerID,
struct ItemGen a3,
char *  a4,
int  shop_screen,
GameTime a6 = nullptr 
)

См. определение в файле GUIWindow.cpp строка 2196

2197  {
2198  char v1[256] = "";
2199  Player *pPlayer; // ebx@3
2200  const char *pText; // esi@7
2201  int v17; // eax@10
2202  signed __int64 v18; // qax@18
2203  unsigned __int8 *v20; // ebx@32
2204  int v21; // ecx@34
2205  int v29; // eax@68
2206  __int16 v55[56]; // [sp+10h] [bp-128h]@34
2207  SummonedItem v56; // [sp+80h] [bp-B8h]@107
2208  int v63; // [sp+12Ch] [bp-Ch]@32
2209 
2210  pPlayer = &pParty->pPlayers[uPlayerID];
2211 
2212  NPCData *npc = nullptr;
2213  if (dword_5C35D4)
2214  npc = HouseNPCData[(unsigned int)((char *)pDialogueNPCCount +
2215  -(dword_591080 != 0))]; //- 1
2216  else
2218 
2219  String result;
2220 
2221  // pText = a4;
2222  uint len = str.length();
2223  for (int i = 0, dst = 0; i < len; ++i) {
2224  char c = str[i]; // skip through string till we find insertion point
2225  if (c != '%') {
2226  result += c; // add char to result string
2227  } else {
2228  v17 = 10 * (int)(str[i + 1] - '0') + str[i + 2] -
2229  '0'; // v17 tells what the gap needs filling with
2230  i += 2;
2231 
2232  switch (v17) {
2233  case 1:
2234  result += npc->pName;
2235  break;
2236  case 2:
2237  result += pPlayer->pName;
2238  i += 2;
2239  break;
2240  case 3:
2241  case 4:
2242  result += v1;
2243  break;
2244  case 5:
2245  v18 = pParty->GetPlayingTime().GetHoursOfDay();
2246  pText = localization->GetString(397); // "evening"
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) {
2252  if (v18 < 20)
2253  pText = localization->GetString(396); // "day"
2254  } else {
2255  pText = localization->GetString(395); // "morning"
2256  }
2257  }
2258  result += pText;
2259  break;
2260  case 6:
2261  if (pPlayer->uSex)
2262  result += localization->GetString(387); // "lady"
2263  else
2264  result += localization->GetString(385); // "sir"
2265  break;
2266  case 7:
2267  if (pPlayer->uSex)
2268  result += localization->GetString(389); // "Lady"
2269  else
2270  result += localization->GetString(386); // "Sir"
2271  break;
2272  case 8:
2273  v63 = 0;
2274  v20 = (unsigned __int8 *)pPlayer->_achieved_awards_bits;
2275  for (uint _i = 0; _i < 28; ++_i) {
2276  if ((unsigned __int16)_449B57_test_bit(
2277  v20, word_4EE150[i])) {
2278  v21 = v63;
2279  ++v63;
2280  v55[v63] = word_4EE150[i];
2281  }
2282  }
2283  if (v63) {
2284  if (dword_A74CDC == -1) dword_A74CDC = rand() % v63;
2285  pText =
2286  pAwards[v55[dword_A74CDC]]
2287  .pText; // (char *)dword_723E80_award_related[2
2288  // * v55[v24]];
2289  } else {
2290  pText = pNPCTopics[55].pText;
2291  }
2292  result += pText;
2293  break;
2294  case 9:
2295  if (npc->uSex)
2296  result += localization->GetString(384); // "her"
2297  else
2298  result += localization->GetString(383); // "his"
2299  break;
2300  case 10:
2301  if (pPlayer->uSex)
2302  result += localization->GetString(389); // "Lady"
2303  else
2304  result += localization->GetString(388); // "Lord"
2305  break;
2306  case 11:
2308  break;
2309  case 12:
2310  result += GetReputationString(npc->rep);
2311  break;
2312  case 13:
2314  pPlayer->pName[0], pPlayer->uSex);
2315  break;
2316  case 14:
2317  if (npc->uSex)
2318  result += localization->GetString(391); // "sister"
2319  else
2320  result += localization->GetString(390); // "brother"
2321  break;
2322  case 15:
2323  result += localization->GetString(393); // "daughter"
2324  break;
2325  case 16:
2326  if (npc->uSex)
2327  result += localization->GetString(391); // "sister"
2328  else
2329  result += localization->GetString(390); // "brother"
2330  break;
2331  case 17: // hired npc text текст наёмного НПС
2332  {
2333  uint pay_percentage =
2335  100;
2336  if (!pay_percentage) pay_percentage = 1;
2337  sprintf(v1, "%lu", pay_percentage);
2338  result += v1;
2339  break;
2340  }
2341  case 18:
2342  case 19:
2343  case 20:
2344  case 21:
2345  case 22:
2346  case 26:
2347  strncpy(v1, str.c_str() + i + 1, 2);
2348  sprintf(v1, "%lu", atoi(v1));
2349  result += v1;
2350  break;
2351  case 23:
2353  result +=
2354  pMapStats
2356  .pName;
2357  else
2358  result += localization->GetString(394); // "Unknown"
2359  break;
2360 
2361  case 24: // item name
2362  sprintf(v1, format_4E2D80, Color16(255, 255, 155),
2363  a3->GetDisplayName().c_str());
2364  result += v1;
2365  break;
2366 
2367  case 25: // base prices
2368  v29 = pPlayer->GetBaseBuyingPrice(
2369  a3->GetValue(),
2370  p2DEvents[(signed int)a4 - 1].fPriceMultiplier);
2371  switch (shop_screen) {
2372  case 3:
2373  v29 = pPlayer->GetBaseSellingPrice(
2374  a3->GetValue(),
2375  p2DEvents[(signed int)a4 - 1].fPriceMultiplier);
2376  break;
2377  case 4:
2378  v29 = pPlayer->GetBaseIdentifyPrice(
2379  p2DEvents[(signed int)a4 - 1].fPriceMultiplier);
2380  break;
2381  case 5:
2382  v29 = pPlayer->GetBaseRepairPrice(
2383  a3->GetValue(),
2384  p2DEvents[(signed int)a4 - 1].fPriceMultiplier);
2385  break;
2386  case 6:
2387  v29 = pPlayer->GetBaseSellingPrice(
2388  a3->GetValue(),
2389  p2DEvents[(signed int)a4 - 1]
2390  .fPriceMultiplier) /
2391  2;
2392  break;
2393  }
2394  sprintf(v1, "%lu", v29);
2395  result += v1;
2396  break;
2397 
2398  case 27: // actual price
2399  v29 = pPlayer->GetBuyingPrice(
2400  a3->GetValue(),
2401  p2DEvents[(signed int)a4 - 1].fPriceMultiplier);
2402  if (shop_screen == 3) {
2403  // v29 = pPlayer->GetPriceSell(a3->GetValue(),
2404  // p2DEvents[(signed int)a4 - 1].fPriceMultiplier);
2405  v29 = pPlayer->GetPriceSell(
2406  *a3,
2407  p2DEvents[(signed int)a4 - 1].fPriceMultiplier);
2408  // if (a3->IsBroken())
2409  // v29 = 1;
2410  sprintf(v1, "%lu", v29);
2411  result += v1;
2412  break;
2413  }
2414  if (shop_screen != 4) {
2415  if (shop_screen == 5) {
2416  v29 = pPlayer->GetPriceRepair(
2417  a3->GetValue(),
2418  p2DEvents[(signed int)a4 - 1].fPriceMultiplier);
2419  } else {
2420  if (shop_screen == 6) {
2421  // v29 = pPlayer->GetPriceSell(a3->GetValue(),
2422  // p2DEvents[(signed int)a4 -
2423  // 1].fPriceMultiplier) / 2;
2424  v29 = pPlayer->GetPriceSell(
2425  *a3, p2DEvents[(signed int)a4 - 1]
2426  .fPriceMultiplier) /
2427  2;
2428  // if (a3->IsBroken())
2429  // v29 = 1;
2430  if (!v29) // cannot be 0
2431  v29 = 1;
2432  sprintf(v1, "%lu", v29);
2433  result += v1;
2434  break;
2435  }
2436  }
2437  sprintf(v1, "%lu", v29);
2438  result += v1;
2439  break;
2440  }
2441  sprintf(
2442  v1, "%lu",
2443  pPlayer->GetPriceIdentification(
2444  p2DEvents[(signed int)a4 - 1].fPriceMultiplier));
2445  result += v1;
2446  break;
2447 
2448  case 28: // shop type - blacksmith ect..
2449  result += p2DEvents[(signed int)a4 - 1].pProprieterTitle;
2450  break;
2451 
2452  case 29: // identify cost
2453  sprintf(
2454  v1, "%lu",
2455  pPlayer->GetPriceIdentification(
2456  p2DEvents[(signed int)a4 - 1].fPriceMultiplier));
2457  result += v1;
2458  break;
2459  case 30:
2460  if (!a6) {
2461  result += a4;
2462  break;
2463  }
2464  v56.Initialize(*a6);
2466  378,
2469  break;
2470  case 31:
2471  case 32:
2472  case 33:
2473  case 34:
2474  result += pParty->pPlayers[v17 - 31].pName;
2475  break;
2476  default:
2477  if (v17 <= 50 || v17 > 70) {
2478  strncpy(v1, str.c_str() + i + 1, 2);
2479  sprintf(v1, "%lu", atoi(v1));
2480  result += v1;
2481  break;
2482  }
2483  if (v17 - 51 >= 20) {
2484  result += a4;
2485  break;
2486  }
2487 
2488  v56.Initialize(pParty->PartyTimes._s_times[v17 - 51]);
2490  378,
2493  break;
2494  }
2495  }
2496  }
2497 
2498  return result;
2499 }

Перекрестные ссылки _449B57_test_bit(), Player::_achieved_awards_bits, PartyTimeStruct::_s_times, Color16(), dword_591080, dword_5C35D4, dword_A74CDC, SummonedItem::field_14_exprie_month, SummonedItem::field_18_expire_year, SummonedItem::field_C_expire_day, format_4E2D80, Localization::FormatString(), _2devent::fPriceMultiplier, Player::GetBaseBuyingPrice(), Player::GetBaseIdentifyPrice(), Player::GetBaseRepairPrice(), Player::GetBaseSellingPrice(), Player::GetBuyingPrice(), ItemGen::GetDisplayName(), GameTime::GetHoursOfDay(), MapStats::GetMapInfo(), Localization::GetMonthName(), GetNPCData(), Party::GetPartyReputation(), Party::GetPlayingTime(), Player::GetPriceIdentification(), Player::GetPriceRepair(), Player::GetPriceSell(), GetReputationString(), Localization::GetString(), ItemGen::GetValue(), HouseNPCData, SummonedItem::Initialize(), localization, p2DEvents, Party::PartyTimes, pAwards, pCurrentMapName, pDialogueNPCCount, MapStats::pInfos, pMapStats, MapInfo::pName, NPCData::pName, Player::pName, pNPCStats, pNPCTopics, pParty, Party::pPlayers, NPCStats::pProfessions, NPCData::rep, sDialogue_SpeakingActorNPC_ID, NPCStats::sub_495366_MispronounceName(), NPCProfession::uHirePrice, NPCData::uProfession, NPCData::uSex, Player::uSex и word_4EE150.

+ Граф вызовов:

◆ const_2()

int const_2 ( )

◆ SetCurrentMenuID()

void SetCurrentMenuID ( MENU_STATE  )

См. определение в файле GUIWindow.cpp строка 128

128  {
129  sCurrentMenuID = uMenu;
130  logger->Warning(L"CurrentMenu = %s \n", MENU_STATE_to_string(uMenu));
131 }

Перекрестные ссылки logger, MENU_STATE_to_string(), sCurrentMenuID и Log::Warning().

Используется в GUIWindow_MainMenu::EventLoop(), GUICredits::EventLoop(), GUICredits::ExecuteCredits(), Application::Game::GameLoop(), GUIWindow_MainMenu::Loop(), Application::Game::Loop(), MainMenuLoad_EventLoop(), PartyCreationUI_LoopInternal(), GUICredits::Update() и GUIWindow_PartyCreation::Update().

+ Граф вызовов:
+ Граф вызова функции:

◆ GetCurrentMenuID()

MENU_STATE GetCurrentMenuID ( )

См. определение в файле GUIWindow.cpp строка 133

133  {
134  return sCurrentMenuID;
135 }

Перекрестные ссылки sCurrentMenuID.

Используется в CreateParty_EventLoop(), GUICredits::ExecuteCredits(), GUI_UpdateWindows(), GUIWindow_MainMenu::Loop(), Application::Game::Loop(), MainMenuLoad_Loop(), Application::GameWindowHandler::OnMouseLeftClick(), PartyCreationUI_LoopInternal(), UI_DrawSaveLoad(), Mouse::UI_OnMouseLeftClick(), UI_OnMouseRightClick(), GUIWindow_Save::Update() и GUIWindow_Load::Update().

+ Граф вызова функции:

Переменные

◆ pMessageQueue_50CBD0

◆ pMessageQueue_50C9E8

struct GUIMessageQueue* pMessageQueue_50C9E8

См. определение в файле GUIWindow.cpp строка 87

Используется в Application::Game::EventLoop(), Keyboard::ProcessInputActions() и Player::UseItem_DrinkPotion_etc().

◆ current_character_screen_window

◆ lWindowList

◆ windowManager

WindowManager windowManager

См. определение в файле GUIWindow.cpp строка 2501

Используется в Engine::ResetCursor_Palettes_LODs_Level_Audio_SFT_Windows().

◆ pPrimaryWindow

◆ pChestWindow

GUIWindow* pChestWindow

См. определение в файле GUIWindow.cpp строка 49

Используется в Application::Game::EventLoop(), Chest::Open(), Chest::PutItemInChest() и UI_OnMouseRightClick().

◆ pDialogueWindow

◆ window_SpeakInHouse

◆ pGUIWindow_ScrollWindow

GUIWindow* pGUIWindow_ScrollWindow

См. определение в файле GUIWindow.cpp строка 52

Используется в back_to_game(), CreateMsgScrollWindow(), CreateScrollWindow() и free_book_subwindow().

◆ ptr_507BC8

GUIWindow* ptr_507BC8

См. определение в файле GUIWindow.cpp строка 53

Используется в Application::Game::EventLoop().

◆ pGUIWindow_CurrentMenu

◆ ptr_507BD0

GUIWindow* ptr_507BD0

См. определение в файле GUIWindow.cpp строка 55

◆ pGUIWindow_CastTargetedSpell

◆ pModalWindow

GUIWindow* pModalWindow

◆ pGUIWindow_EscMessageWindow

GUIWindow* pGUIWindow_EscMessageWindow

См. определение в файле GUIWindow.cpp строка 58

◆ pBooksButtonOverlay

◆ pGUIWindow2

GUIWindow* pGUIWindow2

См. определение в файле GUIWindow.cpp строка 60

Используется в GUIWindow_MainMenu::Loop(), sub_4451A8_press_any_key(), sub_4452BB(), Mouse::UI_OnMouseLeftClick() и GUIWindow_GenericDialogue::Update().

◆ ui_mainmenu_copyright_color

unsigned int ui_mainmenu_copyright_color

См. определение в файле UICharacter.cpp строка 40

Используется в DrawMM7CopyrightWindow() и set_default_ui_skin().

◆ ui_character_tooltip_header_default_color

unsigned int ui_character_tooltip_header_default_color

См. определение в файле UICharacter.cpp строка 42

Используется в CharacterUI_DrawTooltip() и set_default_ui_skin().

◆ ui_character_default_text_color

unsigned int ui_character_default_text_color

◆ ui_character_skill_highlight_color

unsigned int ui_character_skill_highlight_color

См. определение в файле UICharacter.cpp строка 44

Используется в set_default_ui_skin().

◆ ui_character_header_text_color

◆ ui_character_bonus_text_color

◆ ui_character_bonus_text_color_neg

unsigned int ui_character_bonus_text_color_neg

См. определение в файле UICharacter.cpp строка 47

Используется в set_default_ui_skin() и GUIWindow_QuickReference::Update().

◆ ui_character_skill_upgradeable_color

unsigned int ui_character_skill_upgradeable_color

См. определение в файле UICharacter.cpp строка 48

Используется в CharacterUI_SkillsTab_Draw__DrawSkillTable() и set_default_ui_skin().

◆ ui_character_skill_default_color

unsigned int ui_character_skill_default_color

См. определение в файле UICharacter.cpp строка 49

Используется в CharacterUI_SkillsTab_Draw__DrawSkillTable() и set_default_ui_skin().

◆ ui_character_stat_default_color

unsigned int ui_character_stat_default_color

См. определение в файле UICharacter.cpp строка 50

Используется в Player::GetStatColor() и set_default_ui_skin().

◆ ui_character_stat_buffed_color

unsigned int ui_character_stat_buffed_color

См. определение в файле UICharacter.cpp строка 51

Используется в Player::GetStatColor() и set_default_ui_skin().

◆ ui_character_stat_debuffed_color

unsigned int ui_character_stat_debuffed_color

См. определение в файле UICharacter.cpp строка 52

Используется в Player::GetStatColor() и set_default_ui_skin().

◆ ui_character_skillinfo_can_learn

unsigned int ui_character_skillinfo_can_learn

См. определение в файле UICharacter.cpp строка 53

Используется в GetSkillColor() и set_default_ui_skin().

◆ ui_character_skillinfo_can_learn_gm

unsigned int ui_character_skillinfo_can_learn_gm

См. определение в файле UICharacter.cpp строка 54

Используется в GetSkillColor() и set_default_ui_skin().

◆ ui_character_skillinfo_cant_learn

unsigned int ui_character_skillinfo_cant_learn

См. определение в файле UICharacter.cpp строка 55

Используется в GetSkillColor() и set_default_ui_skin().

◆ ui_character_condition_normal_color

unsigned int ui_character_condition_normal_color

См. определение в файле UICharacter.cpp строка 56

Используется в GetConditionDrawColor() и set_default_ui_skin().

◆ ui_character_condition_light_color

unsigned int ui_character_condition_light_color

См. определение в файле UICharacter.cpp строка 57

Используется в GetConditionDrawColor() и set_default_ui_skin().

◆ ui_character_condition_moderate_color

unsigned int ui_character_condition_moderate_color

См. определение в файле UICharacter.cpp строка 58

Используется в GetConditionDrawColor() и set_default_ui_skin().

◆ ui_character_condition_severe_color

unsigned int ui_character_condition_severe_color

См. определение в файле UICharacter.cpp строка 59

Используется в buttonbox(), GetConditionDrawColor() и set_default_ui_skin().

◆ ui_character_award_color

std::array<unsigned int, 6> ui_character_award_color

См. определение в файле UICharacter.cpp строка 60

Используется в GUIWindow_CharacterRecord::CharacterUI_AwardsTab_Draw() и set_default_ui_skin().

◆ ui_game_minimap_outline_color

unsigned int ui_game_minimap_outline_color

См. определение в файле UICharacter.cpp строка 62

Используется в GameUI_DrawMinimap() и set_default_ui_skin().

◆ ui_game_minimap_actor_friendly_color

unsigned int ui_game_minimap_actor_friendly_color

См. определение в файле UICharacter.cpp строка 63

Используется в GameUI_DrawMinimap() и set_default_ui_skin().

◆ ui_game_minimap_actor_hostile_color

unsigned int ui_game_minimap_actor_hostile_color

См. определение в файле UICharacter.cpp строка 64

Используется в GameUI_DrawMinimap() и set_default_ui_skin().

◆ ui_game_minimap_actor_corpse_color

unsigned int ui_game_minimap_actor_corpse_color

См. определение в файле UICharacter.cpp строка 65

Используется в GameUI_DrawMinimap() и set_default_ui_skin().

◆ ui_game_minimap_decoration_color_1

unsigned int ui_game_minimap_decoration_color_1

См. определение в файле UICharacter.cpp строка 66

Используется в GameUI_DrawMinimap() и set_default_ui_skin().

◆ ui_game_minimap_projectile_color

unsigned int ui_game_minimap_projectile_color

См. определение в файле UICharacter.cpp строка 67

Используется в GameUI_DrawMinimap() и set_default_ui_skin().

◆ ui_game_minimap_treasure_color

unsigned int ui_game_minimap_treasure_color

См. определение в файле UICharacter.cpp строка 68

Используется в GameUI_DrawMinimap() и set_default_ui_skin().

◆ ui_game_character_record_playerbuff_colors

std::array<unsigned int, 24> ui_game_character_record_playerbuff_colors

См. определение в файле UICharacter.cpp строка 69

Используется в GameUI_CharacterQuickRecord_Draw() и set_default_ui_skin().

◆ ui_gamemenu_video_gamma_title_color

unsigned int ui_gamemenu_video_gamma_title_color

См. определение в файле UICharacter.cpp строка 71

Используется в set_default_ui_skin() и GUIWindow_GameVideoOptions::Update().

◆ ui_gamemenu_keys_action_name_color

unsigned int ui_gamemenu_keys_action_name_color

См. определение в файле UICharacter.cpp строка 72

Используется в set_default_ui_skin() и GUIWindow_GameKeyBindings::Update().

◆ ui_gamemenu_keys_key_selection_blink_color_1

unsigned int ui_gamemenu_keys_key_selection_blink_color_1

См. определение в файле UICharacter.cpp строка 73

Используется в GameMenuUI_GetKeyBindingColor() и set_default_ui_skin().

◆ ui_gamemenu_keys_key_selection_blink_color_2

unsigned int ui_gamemenu_keys_key_selection_blink_color_2

См. определение в файле UICharacter.cpp строка 74

Используется в GameMenuUI_GetKeyBindingColor() и set_default_ui_skin().

◆ ui_gamemenu_keys_key_default_color

unsigned int ui_gamemenu_keys_key_default_color

См. определение в файле UICharacter.cpp строка 75

Используется в GameMenuUI_GetKeyBindingColor() и set_default_ui_skin().

◆ ui_book_quests_title_color

unsigned int ui_book_quests_title_color

См. определение в файле UICharacter.cpp строка 77

Используется в set_default_ui_skin() и GUIWindow_QuestBook::Update().

◆ ui_book_quests_text_color

unsigned int ui_book_quests_text_color

См. определение в файле UICharacter.cpp строка 78

Используется в set_default_ui_skin() и GUIWindow_QuestBook::Update().

◆ ui_book_autonotes_title_color

unsigned int ui_book_autonotes_title_color

См. определение в файле UICharacter.cpp строка 79

Используется в set_default_ui_skin() и GUIWindow_AutonotesBook::Update().

◆ ui_book_autonotes_text_color

unsigned int ui_book_autonotes_text_color

См. определение в файле UICharacter.cpp строка 80

Используется в set_default_ui_skin() и GUIWindow_AutonotesBook::Update().

◆ ui_book_map_title_color

unsigned int ui_book_map_title_color

См. определение в файле UICharacter.cpp строка 81

Используется в set_default_ui_skin() и GUIWindow_MapBook::Update().

◆ ui_book_map_coordinates_color

unsigned int ui_book_map_coordinates_color

См. определение в файле UICharacter.cpp строка 82

Используется в set_default_ui_skin() и GUIWindow_MapBook::Update().

◆ ui_book_calendar_title_color

unsigned int ui_book_calendar_title_color

См. определение в файле UICharacter.cpp строка 84

Используется в set_default_ui_skin() и GUIWindow_CalendarBook::Update().

◆ ui_book_calendar_time_color

unsigned int ui_book_calendar_time_color

См. определение в файле UICharacter.cpp строка 85

Используется в set_default_ui_skin() и GUIWindow_CalendarBook::Update().

◆ ui_book_calendar_day_color

unsigned int ui_book_calendar_day_color

См. определение в файле UICharacter.cpp строка 86

Используется в set_default_ui_skin() и GUIWindow_CalendarBook::Update().

◆ ui_book_calendar_month_color

unsigned int ui_book_calendar_month_color

См. определение в файле UICharacter.cpp строка 87

Используется в set_default_ui_skin() и GUIWindow_CalendarBook::Update().

◆ ui_book_calendar_year_color

unsigned int ui_book_calendar_year_color

См. определение в файле UICharacter.cpp строка 88

Используется в set_default_ui_skin() и GUIWindow_CalendarBook::Update().

◆ ui_book_calendar_moon_color

unsigned int ui_book_calendar_moon_color

См. определение в файле UICharacter.cpp строка 89

Используется в set_default_ui_skin() и GUIWindow_CalendarBook::Update().

◆ ui_book_calendar_location_color

unsigned int ui_book_calendar_location_color

См. определение в файле UICharacter.cpp строка 90

Используется в set_default_ui_skin() и GUIWindow_CalendarBook::Update().

◆ ui_book_journal_title_color

unsigned int ui_book_journal_title_color

См. определение в файле UICharacter.cpp строка 92

Используется в set_default_ui_skin() и GUIWindow_JournalBook::Update().

◆ ui_book_journal_text_color

unsigned int ui_book_journal_text_color

См. определение в файле UICharacter.cpp строка 93

Используется в set_default_ui_skin() и GUIWindow_JournalBook::Update().

◆ ui_book_journal_text_shadow

unsigned int ui_book_journal_text_shadow

См. определение в файле UICharacter.cpp строка 94

Используется в set_default_ui_skin() и GUIWindow_JournalBook::Update().

◆ ui_game_dialogue_npc_name_color

unsigned int ui_game_dialogue_npc_name_color

См. определение в файле UICharacter.cpp строка 96

Используется в set_default_ui_skin() и GUIWindow_Dialogue::Update().

◆ ui_game_dialogue_option_highlight_color

unsigned int ui_game_dialogue_option_highlight_color

См. определение в файле UICharacter.cpp строка 97

Используется в set_default_ui_skin() и GUIWindow_Dialogue::Update().

◆ ui_game_dialogue_option_normal_color

unsigned int ui_game_dialogue_option_normal_color

См. определение в файле UICharacter.cpp строка 98

Используется в set_default_ui_skin() и GUIWindow_Dialogue::Update().

◆ ui_house_player_cant_interact_color

unsigned int ui_house_player_cant_interact_color

См. определение в файле UICharacter.cpp строка 100

Используется в HouseUI_CheckIfPlayerCanInteract() и set_default_ui_skin().

◆ ui_exit_cancel_button_background

◆ game_ui_right_panel_frame

◆ dialogue_ui_x_ok_u

Image* dialogue_ui_x_ok_u

См. определение в файле GUIWindow.cpp строка 91

Используется в GUIWindow::HouseDialogManager(), UI_Create(), GUIWindow_Travel::Update() и GUIWindow_Transition::Update().

◆ dialogue_ui_x_x_u

Image* dialogue_ui_x_x_u

◆ ui_buttdesc2

Image* ui_buttdesc2

См. определение в файле GUIWindow.cpp строка 94

Используется в UI_Create().

◆ ui_buttyes2

Image* ui_buttyes2

См. определение в файле GUIWindow.cpp строка 95

Используется в UI_Create().

◆ ui_btn_npc_right

Image* ui_btn_npc_right

См. определение в файле GUIWindow.cpp строка 97

Используется в _42777D_CastSpell_UseWand_ShootArrow() и SetUserInterface().

◆ ui_btn_npc_left

Image* ui_btn_npc_left

См. определение в файле GUIWindow.cpp строка 98

Используется в _42777D_CastSpell_UseWand_ShootArrow() и SetUserInterface().

◆ ui_ar_dn_dn

Image* ui_ar_dn_dn

См. определение в файле GUIWindow.cpp строка 100

Используется в CharacterUI_LoadPaperdollTextures(), GUIWindow_Load::GUIWindow_Load() и GUIWindow_Save::GUIWindow_Save().

◆ ui_ar_dn_up

Image* ui_ar_dn_up

См. определение в файле GUIWindow.cpp строка 101

Используется в CharacterUI_LoadPaperdollTextures() и CreateAwardsScrollBar().

◆ ui_ar_up_dn

Image* ui_ar_up_dn

См. определение в файле GUIWindow.cpp строка 102

Используется в CharacterUI_LoadPaperdollTextures(), GUIWindow_Load::GUIWindow_Load() и GUIWindow_Save::GUIWindow_Save().

◆ ui_ar_up_up

Image* ui_ar_up_up

См. определение в файле GUIWindow.cpp строка 103

Используется в CharacterUI_LoadPaperdollTextures() и CreateAwardsScrollBar().

◆ ui_leather_mm6

Image* ui_leather_mm6

См. определение в файле GUIWindow.cpp строка 105

Используется в UI_Create().

◆ ui_leather_mm7

◆ sCurrentMenuID

MENU_STATE sCurrentMenuID

См. определение в файле GUIWindow.cpp строка 81

Используется в Application::Game::GameLoop(), GetCurrentMenuID() и SetCurrentMenuID().

◆ current_screen_type

enum CURRENT_SCREEN current_screen_type

См. определение в файле GUIWindow.cpp строка 83

Используется в _44100D_should_alter_right_panel(), _494035_timed_effects__water_walking_damage__etc(), back_to_game(), GUIWindow_Book::BasicBookInitialization(), Application::Game::CloseTargetedSpellWindow(), DoInteractionWithTopmostZObject(), DoSavegame(), Engine::DrawGUI(), OtherOverlayList::DrawTurnBasedIcon(), Application::Menu::EventLoop(), Application::Game::EventLoop(), EventProcessor(), GUICredits::ExecuteCredits(), Game_OpenLoadGameDialog(), Game_QuitGameWhilePlaying(), Game_StartHirelingDialogue(), Game_StartNewGameWhilePlaying(), Application::Game::GameLoop(), GameUI_DrawPartySpells(), GameUI_DrawRightPanelItems(), GameUI_DrawTorchlightAndWizardEye(), GameUI_OnPlayerPortraitLeftClick(), GameUI_WritePointedObjectStatusString(), CastSpellInfo::GetCastSpellInInventoryWindow(), GUIWindow_CharacterRecord::GUIWindow_CharacterRecord(), GUIWindow_Dialogue::GUIWindow_Dialogue(), GUIWindow_GenericDialogue::GUIWindow_GenericDialogue(), GUIWindow_House::GUIWindow_House(), GUIWindow_Load::GUIWindow_Load(), GUIWindow_Modal::GUIWindow_Modal(), GUIWindow_PartyCreation::GUIWindow_PartyCreation(), GUIWindow_QuickReference::GUIWindow_QuickReference(), GUIWindow_Rest::GUIWindow_Rest(), GUIWindow_Spellbook::GUIWindow_Spellbook(), GUIWindow_Transition::GUIWindow_Transition(), GUIWindow_Travel::GUIWindow_Travel(), GUIWindow::HouseDialogManager(), LoadGame(), GUIWindow_MainMenu::Loop(), MainMenuLoad_EventLoop(), MainMenuLoad_Loop(), Application::Menu::MenuLoop(), Application::Game::OnEscape(), Engine::OnGameViewportClick(), Application::GameWindowHandler::OnVkDown(), PauseGameDrawing(), Engine::PickKeyboard(), MPlayer::PlayFullscreenMovie(), PrepareToLoadRestUI(), Keyboard::ProcessInputActions(), GUIWindow_Modal::Release(), GUIWindow_Travel::Release(), GUIWindow_Dialogue::Release(), GUIWindow_Transition::Release(), GUIWindow_GenericDialogue::Release(), TeleportToNWCDungeon(), Mouse::UI_OnMouseLeftClick(), UI_OnMouseRightClick(), UI_OnVkKeyDown(), UIShop_Buy_Identify_Repair(), GUIWindow_Inventory::Update(), GUIWindow_Chest::Update(), OnSaveLoad::Update() и Player::UseItem_DrinkPotion_etc().

◆ prev_screen_type

SPEECH_86
@ SPEECH_86
Definition: Player.h:132
Party::pPickedItem
ItemGen pPickedItem
Definition: Party.h:312
UIMSG_DebugGiveSkillP
@ UIMSG_DebugGiveSkillP
Definition: GUIWindow.h:242
uint16_t
unsigned __int16 uint16_t
Definition: SDL_config.h:37
UIMSG_49
@ UIMSG_49
Definition: GUIWindow.h:59
WINDOW_ModalWindow
@ WINDOW_ModalWindow
Definition: GUIWindow.h:314
WINDOW_PressedButton
@ WINDOW_PressedButton
Definition: GUIWindow.h:319
UIMSG_PlayerCreationClickPlus
@ UIMSG_PlayerCreationClickPlus
Definition: GUIWindow.h:48
game_ui_btn_zoomout
Image * game_ui_btn_zoomout
Definition: UIGame.cpp:89
WINDOW_CharacterCreationBtn
@ WINDOW_CharacterCreationBtn
Definition: GUIWindow.h:344
ITEM_POTION_HARDEN_ITEM
@ ITEM_POTION_HARDEN_ITEM
Definition: Items.h:129
MENU_SAVELOAD
@ MENU_SAVELOAD
Definition: GUIWindow.h:254
UIMSG_DebugBlv
@ UIMSG_DebugBlv
Definition: GUIWindow.h:44
game_ui_btn_settings
Image * game_ui_btn_settings
Definition: UIGame.cpp:91
EQUIP_HELMET
@ EQUIP_HELMET
Definition: Items.h:232
UIMSG_PlayerCreationRemoveDownSkill
@ UIMSG_PlayerCreationRemoveDownSkill
Definition: GUIWindow.h:61
UI_OnVkKeyDown
bool UI_OnVkKeyDown(unsigned int vkKey)
Definition: Mouse.cpp:336
ItemGen::uHolderPlayer
char uHolderPlayer
Definition: Items.h:352
UIMSG_HintSelectRemoveQuickSpellBtn
@ UIMSG_HintSelectRemoveQuickSpellBtn
Definition: GUIWindow.h:63
pBtn_Rest
GUIButton * pBtn_Rest
Definition: GUIButton.cpp:55
CURRENT_SCREEN::SCREEN_OPTIONS
@ SCREEN_OPTIONS
ITEM_ARTIFACT_LEAGUE_BOOTS
@ ITEM_ARTIFACT_LEAGUE_BOOTS
Definition: Items.h:165
Player
Definition: Player.h:401
SPEECH_39
@ SPEECH_39
Definition: Player.h:85
PLAYER_SKILL_BLASTER
@ PLAYER_SKILL_BLASTER
Definition: Player.h:178
PartyAlignment::PartyAlignment_Good
@ PartyAlignment_Good
game_ui_btn_cast
Image * game_ui_btn_cast
Definition: UIGame.cpp:87
GUIWindow::DrawText
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)
Definition: GUIWindow.cpp:694
pPlayerConditionAttributeDescription
char * pPlayerConditionAttributeDescription
Definition: mm7_data.cpp:655
uNumActors
size_t uNumActors
Definition: Actor.cpp:39
Party::vPosition
Vec3_int_ vPosition
Definition: Party.h:250
PlayerEquipment::uShield
unsigned int uShield
Definition: Player.h:319
ui_game_minimap_treasure_color
unsigned int ui_game_minimap_treasure_color
Definition: UICharacter.cpp:68
ui_character_skillinfo_can_learn_gm
unsigned int ui_character_skillinfo_can_learn_gm
Definition: UICharacter.cpp:54
GetNPCData
NPCData * GetNPCData(signed int npcid)
Definition: NPC.cpp:43
ui_leather_mm7
Image * ui_leather_mm7
Definition: GUIWindow.cpp:106
face
GLenum GLuint GLint GLenum face
Definition: SDL_opengl_glext.h:3022
ui_mainmenu_copyright_color
unsigned int ui_mainmenu_copyright_color
Definition: UICharacter.cpp:40
Party::uNumBountiesCollected
unsigned int uNumBountiesCollected
Definition: Party.h:286
WINDOW_LoadGame_CancelBtn
@ WINDOW_LoadGame_CancelBtn
Definition: GUIWindow.h:322
PLAYER_SKILL_MONSTER_ID
@ PLAYER_SKILL_MONSTER_ID
Definition: Player.h:203
PLAYER_SKILL_DAGGER
@ PLAYER_SKILL_DAGGER
Definition: Player.h:173
ItemGen::GetDamageMod
unsigned __int8 GetDamageMod()
Definition: Items.cpp:1533
ITEM_RARE_SUN_CLOAK
@ ITEM_RARE_SUN_CLOAK
Definition: Items.h:200
GUIWindow::uFrameW
unsigned int uFrameW
Definition: GUIWindow.h:473
int_get_vector_length
uint32_t int_get_vector_length(int32_t x, int32_t y, int32_t z)
Definition: VectorTypes.cpp:8
dword_4E455C
int dword_4E455C
Definition: mm7_data.cpp:246
DIALOGUE_EVT_D
@ DIALOGUE_EVT_D
Definition: GUIWindow.h:273
PLAYER_BUFF_PAIN_REFLECTION
@ PLAYER_BUFF_PAIN_REFLECTION
Definition: Player.h:24
game_ui_tome_maps
Image * game_ui_tome_maps
Definition: UIGame.cpp:82
messagebox_border_left
Image * messagebox_border_left
Definition: UIPopup.cpp:47
Condition_Poison_Medium
@ Condition_Poison_Medium
Definition: Conditions.h:16
Localization::GetString
const char * GetString(unsigned int index) const
Definition: Localization.cpp:13
UIMSG_CF
@ UIMSG_CF
Definition: GUIWindow.h:175
NPCData::uProfession
unsigned int uProfession
Definition: NPC.h:89
Localization::GetCharacterConditionName
const char * GetCharacterConditionName(unsigned int index) const
Definition: Localization.h:75
UIMSG_SetTurnSpeed
@ UIMSG_SetTurnSpeed
Definition: GUIWindow.h:151
UIMSG_C7
@ UIMSG_C7
Definition: GUIWindow.h:167
pLevelDecorations
std::array< LevelDecoration, 3000 > pLevelDecorations
Definition: Decoration.cpp:8
UIMSG_DebugTerrain
@ UIMSG_DebugTerrain
Definition: GUIWindow.h:234
UIMSG_DebugNoActors
@ UIMSG_DebugNoActors
Definition: GUIWindow.h:231
Player::_expression21_animtime
int _expression21_animtime
Definition: Player.h:792
GameUI_DrawItemInfo
void GameUI_DrawItemInfo(struct ItemGen *inspect_item)
Definition: UIPopup.cpp:168
PlayerFrame
Definition: PlayerFrameTable.h:7
dword_F8B1D8
int dword_F8B1D8
Definition: mm7_data.cpp:777
uSpeakingCharacter
int uSpeakingCharacter
Definition: mm7_data.cpp:764
GUIButton::uHotkey
uint8_t uHotkey
Definition: GUIButton.h:35
Dying
@ Dying
Definition: Actor.h:79
UIMSG_ClickAwardsDownBtn
@ UIMSG_ClickAwardsDownBtn
Definition: GUIWindow.h:137
UIMSG_SPellbook_ShowHightlightedSpellInfo
@ UIMSG_SPellbook_ShowHightlightedSpellInfo
Definition: GUIWindow.h:64
UIMSG_Escape
@ UIMSG_Escape
Definition: GUIWindow.h:96
SOUND_fireBall
@ SOUND_fireBall
Definition: AudioPlayer.h:14
PartyAlignment::PartyAlignment_Neutral
@ PartyAlignment_Neutral
CURRENT_SCREEN::SCREEN_DEBUG
@ SCREEN_DEBUG
ACTOR_BUFF_PAIN_REFLECTION
@ ACTOR_BUFF_PAIN_REFLECTION
Definition: Actor.h:58
DrawBuff_remaining_time_string
void DrawBuff_remaining_time_string(int uY, GUIWindow *window, GameTime remaining_time, GUIFont *Font)
Definition: GUIWindow.cpp:1343
Timer::Time
uint64_t Time()
Definition: Time.cpp:11
NPCProfession::uHirePrice
unsigned int uHirePrice
Definition: NPC.h:115
Timer::uTimeElapsed
unsigned int uTimeElapsed
Definition: Time.h:133
game_ui_btn_zoomin
Image * game_ui_btn_zoomin
Definition: UIGame.cpp:88
Party::uCurrentMonth
unsigned int uCurrentMonth
Definition: Party.h:272
MapStats::pInfos
MapInfo pInfos[77]
Definition: MapInfo.h:79
MENU_NAMEPANELESC
@ MENU_NAMEPANELESC
Definition: GUIWindow.h:258
UIMSG_ClickTownInTP
@ UIMSG_ClickTownInTP
Definition: GUIWindow.h:150
Image::GetHeight
unsigned int GetHeight()
Definition: Image.cpp:230
UIMSG_CycleCharacters
@ UIMSG_CycleCharacters
Definition: GUIWindow.h:143
SPEECH_IDENTIFY_MONSTER_STRONGER
@ SPEECH_IDENTIFY_MONSTER_STRONGER
Definition: Player.h:151
Party::GetPlayingTime
GameTime & GetPlayingTime()
Definition: Party.h:230
ui_btn_npc_right
Image * ui_btn_npc_right
Definition: GUIWindow.cpp:97
ITEM_OBSIDIAN
@ ITEM_OBSIDIAN
Definition: Items.h:116
stru193_math::uDoublePiMask
static const unsigned int uDoublePiMask
Definition: OurMath.h:91
WINDOW_HouseInterior
@ WINDOW_HouseInterior
Definition: GUIWindow.h:309
papredoll_dlhus
Image * papredoll_dlhus[4]
Definition: UICharacter.cpp:201
ITEM_POPPYSNAPS
@ ITEM_POPPYSNAPS
Definition: Items.h:110
PLAYER_SKILL_STAFF
@ PLAYER_SKILL_STAFF
Definition: Player.h:171
WINDOW_Rest
@ WINDOW_Rest
Definition: GUIWindow.h:301
UIMSG_Quit
@ UIMSG_Quit
Definition: GUIWindow.h:114
UIMSG_ShowFinalWindow
@ UIMSG_ShowFinalWindow
Definition: GUIWindow.h:165
ITEM_RELIC_HARECS_LEATHER
@ ITEM_RELIC_HARECS_LEATHER
Definition: Items.h:169
UIMSG_HintBeaconSlot
@ UIMSG_HintBeaconSlot
Definition: GUIWindow.h:147
Mouse::GetCursorPos
Point GetCursorPos()
Definition: Mouse.cpp:108
UIMSG_DebugWizardEye
@ UIMSG_DebugWizardEye
Definition: GUIWindow.h:236
game_ui_minimap_frame
Image * game_ui_minimap_frame
Definition: UIGame.cpp:68
GUIWindow
Definition: GUIWindow.h:433
ITEM_DRAGON_EYE
@ ITEM_DRAGON_EYE
Definition: Items.h:104
EQUIP_CLOAK
@ EQUIP_CLOAK
Definition: Items.h:234
PlayerFrameTable::GetFrameBy_x
PlayerFrame * GetFrameBy_x(unsigned int uFramesetID, unsigned int uFrameID)
Definition: PlayerFrameTable.cpp:17
AssetsManager::GetImage_Solid
Texture * GetImage_Solid(const String &name)
Definition: AssetsManager.cpp:51
UIMSG_ToggleAlwaysRun
@ UIMSG_ToggleAlwaysRun
Definition: GUIWindow.h:187
Mouse
Definition: Mouse.h:279
Rect::x
int x
Definition: Rect.h:4
DIALOGUE_76
@ DIALOGUE_76
Definition: GUIWindow.h:276
messagebox_border_top
Image * messagebox_border_top
Definition: UIPopup.cpp:45
Timer::Resume
void Resume()
Definition: Time.cpp:27
IconFrameTable::InitializeAnimation
void InitializeAnimation(unsigned int uIconID)
Definition: IconFrameTable.cpp:59
CastSpellInfo::uFlags
uint16_t uFlags
Definition: CastSpellInfo.h:28
UIMSG_ShowStatus_ManaHP
@ UIMSG_ShowStatus_ManaHP
Definition: GUIWindow.h:78
Icon::GetAnimationName
const char * GetAnimationName() const
Definition: IconFrameTable.h:15
pSpriteFrameTable
struct SpriteFrameTable * pSpriteFrameTable
Definition: Sprites.cpp:22
CastSpellInfo
Definition: CastSpellInfo.h:17
CURRENT_SCREEN::SCREEN_20
@ SCREEN_20
WINDOW_JournalBook
@ WINDOW_JournalBook
Definition: GUIWindow.h:340
ITEM_POTION_CATALYST
@ ITEM_POTION_CATALYST
Definition: Items.h:121
PaletteManager::SetColorChannelInfo
void SetColorChannelInfo(int uNumRBits, int uNumGBits, int uNumBBits)
Definition: PaletteManager.cpp:167
pConditionImportancyTable
std::array< unsigned int, 18 > pConditionImportancyTable
Definition: Player.cpp:197
EQUIP_BELT
@ EQUIP_BELT
Definition: Items.h:233
OutdoorLocation::pBModels
BSPModelList pBModels
Definition: Outdoor.h:119
ui_exit_cancel_button_background
Image * ui_exit_cancel_button_background
Definition: GUIWindow.cpp:89
ui_game_minimap_actor_friendly_color
unsigned int ui_game_minimap_actor_friendly_color
Definition: UICharacter.cpp:63
pSpriteObjects
std::array< SpriteObject, MAX_SPRITE_OBJECTS > pSpriteObjects
Definition: SpriteObject.cpp:34
UIMSG_35
@ UIMSG_35
Definition: GUIWindow.h:39
CURRENT_SCREEN::SCREEN_6
@ SCREEN_6
INPUT_Autonotes
@ INPUT_Autonotes
Definition: Keyboard.h:22
UIMSG_54
@ UIMSG_54
Definition: GUIWindow.h:69
Viewport::uViewportTL_Y
int uViewportTL_Y
Definition: Viewport.h:23
pMindResistanceAttributeDescription
char * pMindResistanceAttributeDescription
Definition: mm7_data.cpp:668
NPCData::uFlags
unsigned int uFlags
Definition: NPC.h:84
UIMSG_ClickNPCTopic
@ UIMSG_ClickNPCTopic
Definition: GUIWindow.h:142
OBJECT_Item
@ OBJECT_Item
Definition: Actor.h:66
DIALOGUE_ARENA_SELECT_SQUIRE
@ DIALOGUE_ARENA_SELECT_SQUIRE
Definition: GUIWindow.h:281
Mouse::uMouseClickY
unsigned int uMouseClickY
Definition: Mouse.h:365
ITEM_RARE_VAMPIRES_CAPE
@ ITEM_RARE_VAMPIRES_CAPE
Definition: Items.h:203
pMonsterStats
struct MonsterStats * pMonsterStats
Definition: Monsters.cpp:8
paperdoll_Boot
const int paperdoll_Boot[4][7][2]
Definition: UICharacter.cpp:283
UIMSG_LloydsBeacon_FlippingBtn
@ UIMSG_LloydsBeacon_FlippingBtn
Definition: GUIWindow.h:145
UIMSG_DebugLearnSkills
@ UIMSG_DebugLearnSkills
Definition: GUIWindow.h:241
PlayerEquipment::uCloak
unsigned int uCloak
Definition: Player.h:325
HouseNPCData
std::array< struct NPCData *, 7 > HouseNPCData
Definition: mm7_data.cpp:617
uGameState
unsigned int uGameState
Definition: mm7_data.cpp:695
pSRZBufferLineOffsets
std::array< unsigned int, 480 > pSRZBufferLineOffsets
Definition: mm7_data.cpp:511
UIMSG_DebugGiveFood
@ UIMSG_DebugGiveFood
Definition: GUIWindow.h:239
NPCData::Hired
bool Hired()
Definition: NPC.h:80
LoadPartyBuffIcons
static void LoadPartyBuffIcons()
Definition: GUIWindow.cpp:2530
ItemGen::GetItemEquipType
ITEM_EQUIP_TYPE GetItemEquipType()
Definition: Items.cpp:1504
PLAYER_BUFF_SHIELD
@ PLAYER_BUFF_SHIELD
Definition: Player.h:27
UI_OnMouseRightClick
void UI_OnMouseRightClick(int mouse_x, int mouse_y)
Definition: UIPopup.cpp:1459
Party::sRotationX
int sRotationX
Definition: Party.h:252
DIALOGUE_PROFESSION_DETAILS
@ DIALOGUE_PROFESSION_DETAILS
Definition: GUIWindow.h:277
ItemGen::SetIdentified
void SetIdentified()
Definition: Items.h:307
ViewingParams::location_minimap
class Image * location_minimap
Definition: Viewport.h:73
pGUIWindow_CurrentMenu
GUIWindow * pGUIWindow_CurrentMenu
Definition: GUIWindow.cpp:54
_44100D_should_alter_right_panel
bool _44100D_should_alter_right_panel()
Definition: Engine.cpp:2454
WINDOW_Unknown
@ WINDOW_Unknown
Definition: GUIWindow.h:342
GAME_STATE_FINAL_WINDOW
@ GAME_STATE_FINAL_WINDOW
Definition: Engine.h:41
Rect::w
int w
Definition: Rect.h:7
UIMSG_34
@ UIMSG_34
Definition: GUIWindow.h:38
PlayerFrameTable::pFrames
struct PlayerFrame * pFrames
Definition: PlayerFrameTable.h:29
_449B57_test_bit
bool _449B57_test_bit(unsigned __int8 *a1, __int16 a2)
Definition: Party.cpp:1185
SpellStats::pInfos
SpellInfo pInfos[100]
Definition: Spells.h:192
WINDOW_ChangeLocation
@ WINDOW_ChangeLocation
Definition: GUIWindow.h:302
SpellBuff
Definition: Spells.h:147
ITEM_ARTIFACT_YORUBA
@ ITEM_ARTIFACT_YORUBA
Definition: Items.h:158
GUIWindow::CreateButton
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 * >())
Definition: GUIWindow.cpp:717
dialog_menu_id
HOUSE_DIALOGUE_MENU dialog_menu_id
Definition: UIHouses.cpp:50
gold_transaction_amount
int gold_transaction_amount
Definition: mm7_data.cpp:775
DMGT_FIRE
@ DMGT_FIRE
Definition: Items.h:11
PlayerSpeechID
enum PlayerSpeech PlayerSpeechID
Definition: Player.cpp:48
pIconsFrameTable
struct IconFrameTable * pIconsFrameTable
Definition: mm7_data.cpp:168
PLAYER_SKILL_AXE
@ PLAYER_SKILL_AXE
Definition: Player.h:174
ACTOR_BUFF_DAY_OF_PROTECTION
@ ACTOR_BUFF_DAY_OF_PROTECTION
Definition: Actor.h:51
height
EGLSurface EGLint EGLint EGLint EGLint height
Definition: SDL_egl.h:1596
WINDOW_Save
@ WINDOW_Save
Definition: GUIWindow.h:348
EQUIP_SHIELD
@ EQUIP_SHIELD
Definition: Items.h:231
GUIButton::field_28
int field_28
Definition: GUIButton.h:31
uPlayerCreationUI_SelectedCharacter
unsigned int uPlayerCreationUI_SelectedCharacter
Definition: mm7_data.cpp:761
ui_game_minimap_actor_corpse_color
unsigned int ui_game_minimap_actor_corpse_color
Definition: UICharacter.cpp:65
GameUI_DrawNPCPopup
void GameUI_DrawNPCPopup(void *_this)
Definition: UIGame.cpp:891
GUIButton::uZ
unsigned int uZ
Definition: GUIButton.h:25
pHiredNPCsIconsOffsetsY
std::array< unsigned int, 2 > pHiredNPCsIconsOffsetsY
Definition: mm7_data.cpp:472
GUIMessageQueue::Flush
void Flush()
Definition: GUIWindow.cpp:159
UIMSG_CastSpell_Character_Big_Improvement
@ UIMSG_CastSpell_Character_Big_Improvement
Definition: GUIWindow.h:55
CURRENT_SCREEN::SCREEN_CHEST
@ SCREEN_CHEST
INPUT_ZoomOut
@ INPUT_ZoomOut
Definition: Keyboard.h:29
MapStats::GetMapInfo
MAP_TYPE GetMapInfo(const String &Str2)
Definition: MapInfo.cpp:225
Player::GetCloakItem
ItemGen * GetCloakItem()
Definition: Player.cpp:7554
ITEM_ENCHANTMENT_OF_FLAME
@ ITEM_ENCHANTMENT_OF_FLAME
Definition: Items.h:48
UIMSG_ClickHouseNPCPortrait
@ UIMSG_ClickHouseNPCPortrait
Definition: GUIWindow.h:197
ANIM_Standing
@ ANIM_Standing
Definition: Actor.h:99
SkillToMastery
unsigned int SkillToMastery(unsigned int skill_value)
Definition: Player.cpp:7854
PartyAlignment::PartyAlignment_Evil
@ PartyAlignment_Evil
Party::hirelingScrollPosition
unsigned __int8 hirelingScrollPosition
Definition: Party.h:268
CURRENT_SCREEN::SCREEN_SPELL_BOOK
@ SCREEN_SPELL_BOOK
Actor
Definition: Actor.h:151
Party::sEyelevel
int sEyelevel
Definition: Party.h:239
pNPCTopics
std::array< NPCTopic, 789 > pNPCTopics
Definition: mm7_data.cpp:740
AudioPlayer::PlaySound
void PlaySound(SoundID eSoundID, int pid, unsigned int uNumRepeats, int x, int y, int a7)
Definition: AudioPlayer.cpp:195
UIMSG_ClickZoomInBtn
@ UIMSG_ClickZoomInBtn
Definition: GUIWindow.h:191
BLVMapOutlines::uNumOutlines
int uNumOutlines
Definition: Indoor.h:569
game_ui_bottomframe
Image * game_ui_bottomframe
Definition: UIGame.cpp:59
UIMSG_ShowStatus_Funds
@ UIMSG_ShowStatus_Funds
Definition: GUIWindow.h:85
messagebox_border_right
Image * messagebox_border_right
Definition: UIPopup.cpp:48
UIMSG_CastSpell_Character_Small_Improvement
@ UIMSG_CastSpell_Character_Small_Improvement
Definition: GUIWindow.h:121
PlayerFrame::uTextureID
unsigned __int16 uTextureID
Definition: PlayerFrameTable.h:9
UIMSG_SetGraphicsMode
@ UIMSG_SetGraphicsMode
Definition: GUIWindow.h:113
UIMSG_PlayerCreation_VoiceNext
@ UIMSG_PlayerCreation_VoiceNext
Definition: GUIWindow.h:125
Player::CanAct
bool CanAct()
Definition: Player.cpp:549
engine
std::shared_ptr< Engine > engine
Definition: Engine.cpp:130
IndoorLocation::pFaceExtras
struct BLVFaceExtra * pFaceExtras
Definition: Indoor.h:632
UIMSG_DebugGenItem
@ UIMSG_DebugGenItem
Definition: GUIWindow.h:219
GetConditionDrawColor
int GetConditionDrawColor(unsigned int uConditionIdx)
Definition: UIGame.cpp:2327
PlayerFrameTable::GetFrameBy_y
PlayerFrame * GetFrameBy_y(int *a2, int *a3, int a4)
Definition: PlayerFrameTable.cpp:45
CHARACTER_RACE_DWARF
@ CHARACTER_RACE_DWARF
Definition: Player.h:164
EQUIP_REAGENT
@ EQUIP_REAGENT
Definition: Items.h:240
pBtn_Autonotes
GUIButton * pBtn_Autonotes
Definition: GUIButton.cpp:59
Rect::z
int z
Definition: Rect.h:6
CURRENT_SCREEN::SCREEN_CASTING
@ SCREEN_CASTING
UIMSG_CastSpell_Shoot_Monster
@ UIMSG_CastSpell_Shoot_Monster
Definition: GUIWindow.h:56
Texture
Definition: Texture.h:4
Party::GetRedAlert
bool GetRedAlert()
Definition: Party.h:221
SummonedItem::field_4_expire_minute
int field_4_expire_minute
Definition: Items.h:584
game_viewport_width
unsigned int game_viewport_width
Definition: mm7_data.cpp:194
UIMSG_DebugGiveEXP
@ UIMSG_DebugGiveEXP
Definition: GUIWindow.h:243
SpellInfo::pName
char * pName
Definition: Spells.h:176
game_ui_leftframe
Image * game_ui_leftframe
Definition: UIGame.cpp:58
UIMSG_ChangeMusicVolume
@ UIMSG_ChangeMusicVolume
Definition: GUIWindow.h:95
ITEM_RARE_MOON_CLOAK
@ ITEM_RARE_MOON_CLOAK
Definition: Items.h:201
ITEM_HARDENED
@ ITEM_HARDENED
Definition: Items.h:35
MakeDateTimeString
String MakeDateTimeString(GameTime time)
Definition: GUIWindow.cpp:609
PLAYER_SKILL_EARTH
@ PLAYER_SKILL_EARTH
Definition: Player.h:186
WINDOW_CastSpell_InInventory
@ WINDOW_CastSpell_InInventory
Definition: GUIWindow.h:313
SOUND_error
@ SOUND_error
Definition: AudioPlayer.h:19
game_ui_tome_autonotes
Image * game_ui_tome_autonotes
Definition: UIGame.cpp:83
PlayerEquipment::uBow
unsigned int uBow
Definition: Player.h:321
UIMSG_QuickReference
@ UIMSG_QuickReference
Definition: GUIWindow.h:89
UIMSG_BD
@ UIMSG_BD
Definition: GUIWindow.h:156
PlayerEquipment::uAmulet
unsigned int uAmulet
Definition: Player.h:328
BLVFaceExtra::uEventID
uint16_t uEventID
Definition: Indoor.h:512
PlayerEquipment::uGlove
unsigned int uGlove
Definition: Player.h:326
ACTOR_BUFF_HEROISM
@ ACTOR_BUFF_HEROISM
Definition: Actor.h:56
GetReputationString
String GetReputationString(int reputation)
Definition: UIGame.cpp:2360
UIMSG_SaveGame
@ UIMSG_SaveGame
Definition: GUIWindow.h:68
BSPModel::sBoundingRadius
int32_t sBoundingRadius
Definition: BSPModel.h:187
paperdoll_CloakCollar
const int paperdoll_CloakCollar[4][10][2]
Definition: UICharacter.cpp:300
ITEM_MERCURY
@ ITEM_MERCURY
Definition: Items.h:118
num_achieved_awards
int num_achieved_awards
Definition: mm7_data.cpp:28
UIMSG_D3
@ UIMSG_D3
Definition: GUIWindow.h:179
UIMSG_PlayerCreationClickOK
@ UIMSG_PlayerCreationClickOK
Definition: GUIWindow.h:52
bNoNPCHiring
char bNoNPCHiring
Definition: mm7_data.cpp:720
UIMSG_StartNPCDialogue
@ UIMSG_StartNPCDialogue
Definition: GUIWindow.h:128
UIMSG_GameMenuButton
@ UIMSG_GameMenuButton
Definition: GUIWindow.h:90
CURRENT_SCREEN::SCREEN_19
@ SCREEN_19
UIMSG_ClickExitCharacterWindowBtn
@ UIMSG_ClickExitCharacterWindowBtn
Definition: GUIWindow.h:135
UIMSG_CC
@ UIMSG_CC
Definition: GUIWindow.h:172
GetExperienceRequiredForLevel
unsigned __int64 GetExperienceRequiredForLevel(int level)
Definition: UIPopup.cpp:2272
UIMSG_PlayerCreationClickMinus
@ UIMSG_PlayerCreationClickMinus
Definition: GUIWindow.h:49
PLAYER_SKILL_MIND
@ PLAYER_SKILL_MIND
Definition: Player.h:188
game_starting_year
int game_starting_year
Definition: mm7_data.cpp:193
UIMSG_CastSpell_Monster_Improvement
@ UIMSG_CastSpell_Monster_Improvement
Definition: GUIWindow.h:120
Party::_quest_bits
unsigned __int8 _quest_bits[64]
Definition: Party.h:291
dword_506984_uZ
int dword_506984_uZ
Definition: mm7_data.cpp:537
ITEM_RELIC_PHYNAXIAN_CROWN
@ ITEM_RELIC_PHYNAXIAN_CROWN
Definition: Items.h:176
localization
Localization * localization
Definition: Localization.cpp:11
Player::GetBaseRepairPrice
int GetBaseRepairPrice(int uRealValue, float price_multiplier)
Definition: Player.cpp:465
Party::FlyActive
bool FlyActive()
Definition: Party.h:202
UIMSG_ClickSkillsBtn
@ UIMSG_ClickSkillsBtn
Definition: GUIWindow.h:97
SPEECH_NotEnoughGold
@ SPEECH_NotEnoughGold
Definition: Player.h:84
Player::GetAmuletItem
ItemGen * GetAmuletItem()
Definition: Player.cpp:7560
CharacterUI_DrawTooltip
void CharacterUI_DrawTooltip(const char *title, String &content)
Definition: UIPopup.cpp:51
Point::x
unsigned int x
Definition: Point.h:7
game_ui_bar_red
Image * game_ui_bar_red
Definition: UIGame.cpp:113
MENU_MAIN
@ MENU_MAIN
Definition: GUIWindow.h:251
PLAYER_SKILL_LEARNING
@ PLAYER_SKILL_LEARNING
Definition: Player.h:207
Icon::id
int id
Definition: IconFrameTable.h:35
ITEM_POTION_HASTE
@ ITEM_POTION_HASTE
Definition: Items.h:127
WINDOW_Scroll
@ WINDOW_Scroll
Definition: GUIWindow.h:312
BtnDown_flag
int BtnDown_flag
Definition: mm7_data.cpp:528
dialogue_ui_x_x_u
Image * dialogue_ui_x_x_u
Definition: GUIWindow.cpp:92
UIMSG_DebugGiveGold
@ UIMSG_DebugGiveGold
Definition: GUIWindow.h:244
UIMSG_DD
@ UIMSG_DD
Definition: GUIWindow.h:184
papredoll_drhs
Image * papredoll_drhs[4]
Definition: UICharacter.cpp:200
UIMSG_ExitToWindows
@ UIMSG_ExitToWindows
Definition: GUIWindow.h:43
UIMSG_D1
@ UIMSG_D1
Definition: GUIWindow.h:177
WINDOW_RestWindow
@ WINDOW_RestWindow
Definition: GUIWindow.h:325
UIMSG_PlayArcomage
@ UIMSG_PlayArcomage
Definition: GUIWindow.h:33
UIMSG_TransitionWindowCloseBtn
@ UIMSG_TransitionWindowCloseBtn
Definition: GUIWindow.h:199
WINDOW_22
@ WINDOW_22
Definition: GUIWindow.h:306
ITEM_ENCHANTMENT_OF_POISON
@ ITEM_ENCHANTMENT_OF_POISON
Definition: Items.h:50
CURRENT_SCREEN::SCREEN_QUICK_REFERENCE
@ SCREEN_QUICK_REFERENCE
WINDOW_8
@ WINDOW_8
Definition: GUIWindow.h:296
ui_character_inventory_paperdoll_rings_close
Image * ui_character_inventory_paperdoll_rings_close
Definition: UICharacter.cpp:462
Player::GetPriceRepair
int GetPriceRepair(int uRealValue, float price_multiplier)
Definition: Player.cpp:421
PLAYER_SKILL_BOW
@ PLAYER_SKILL_BOW
Definition: Player.h:176
WINDOW_MapsBook
@ WINDOW_MapsBook
Definition: GUIWindow.h:338
PlayerFrame::expression
CHARACTER_EXPRESSION_ID expression
Definition: PlayerFrameTable.h:8
NPCStats::sub_495366_MispronounceName
char * sub_495366_MispronounceName(uint8_t firstLetter, uint8_t genderId)
Definition: NPC.cpp:714
int64_t
__int64 int64_t
Definition: alext.h:31
ptr_50C9A4_ItemToEnchant
ItemGen * ptr_50C9A4_ItemToEnchant
Definition: Items.cpp:35
UIMSG_SelectCharacter
@ UIMSG_SelectCharacter
Definition: GUIWindow.h:93
messagebox_border_bottom
Image * messagebox_border_bottom
Definition: UIPopup.cpp:46
Party::pPlayers
std::array< Player, 4 > pPlayers
Definition: Party.h:310
SPEECH_DO_POTION_FINE
@ SPEECH_DO_POTION_FINE
Definition: Player.h:62
bFlashAutonotesBook
char bFlashAutonotesBook
Definition: mm7_data.cpp:548
pBtn_Calendar
GUIButton * pBtn_Calendar
Definition: GUIButton.cpp:57
GUIWindow::DrawTitleText
void DrawTitleText(GUIFont *font, int horizontal_margin, int vertical_margin, unsigned __int16 uDefaultColor, const char *pInString, int line_spacing)
Definition: GUIWindow.cpp:665
EQUIP_GOLD
@ EQUIP_GOLD
Definition: Items.h:246
GUIFont::GetLineWidth
unsigned int GetLineWidth(const String &str)
Definition: GUIFont.cpp:278
AssetsManager::GetImage_PCXFromIconsLOD
Texture * GetImage_PCXFromIconsLOD(const String &name)
Definition: AssetsManager.cpp:81
GUIWindow::Release
virtual void Release()
Definition: GUIWindow.cpp:292
pPaperdoll_Beards
const int pPaperdoll_Beards[4]
Definition: UICharacter.cpp:330
BLVFace::Clickable
bool Clickable() const
Definition: Indoor.h:453
UIMSG_DebugTakeGold
@ UIMSG_DebugTakeGold
Definition: GUIWindow.h:240
ITEM_POTION_BODY_RESISTANE
@ ITEM_POTION_BODY_RESISTANE
Definition: Items.h:135
Player::uSex
PLAYER_SEX uSex
Definition: Player.h:638
IsPlayerWearingWatersuit
std::array< unsigned __int8, 5 > IsPlayerWearingWatersuit
Definition: mm7_data.cpp:590
ITEM_EQUIP_TYPE
ITEM_EQUIP_TYPE
Definition: Items.h:226
ITEM_POTION_SWIFT_POTION
@ ITEM_POTION_SWIFT_POTION
Definition: Items.h:134
UIMSG_MMT_MainMenu_Continue
@ UIMSG_MMT_MainMenu_Continue
Definition: GUIWindow.h:216
UIMSG_SpellBook_PressTab
@ UIMSG_SpellBook_PressTab
Definition: GUIWindow.h:37
WINDOW_F
@ WINDOW_F
Definition: GUIWindow.h:300
DIALOGUE_ARENA_SELECT_KNIGHT
@ DIALOGUE_ARENA_SELECT_KNIGHT
Definition: GUIWindow.h:282
Icon::GetTexture
Texture * GetTexture()
Definition: IconFrameTable.cpp:9
ACTOR_BUFF_SLOWED
@ ACTOR_BUFF_SLOWED
Definition: Actor.h:45
ItemsTable::potion_note
unsigned __int16 potion_note[50][50]
Definition: Items.h:469
SpellInfo
Definition: Spells.h:175
WetsuitOff
void WetsuitOff(unsigned int uPlayerID)
Definition: UICharacter.cpp:2680
Localization::GetSpellName
const char * GetSpellName(unsigned int index) const
Definition: Localization.h:31
texture
GLenum GLenum GLuint texture
Definition: SDL_opengl_glext.h:1181
GUIFont::GetHeight
unsigned int GetHeight() const
Definition: GUIFont.cpp:84
game_ui_monster_hp_yellow
Image * game_ui_monster_hp_yellow
Definition: UIGame.cpp:62
UIMSG_SpellBookWindow
@ UIMSG_SpellBookWindow
Definition: GUIWindow.h:88
ui_character_inventory_magnification_glass
Image * ui_character_inventory_magnification_glass
Definition: UICharacter.cpp:459
CharacterUI_StatsTab_ShowHint
void CharacterUI_StatsTab_ShowHint()
Definition: UIPopup.cpp:1153
SEX_MALE
@ SEX_MALE
Definition: Player.h:399
MENU_DebugBLVLevel
@ MENU_DebugBLVLevel
Definition: GUIWindow.h:261
paperdoll_Armor_Coord
const int paperdoll_Armor_Coord[4][17][2]
Definition: UICharacter.cpp:351
pSpellPointsAttributeDescription
char * pSpellPointsAttributeDescription
Definition: mm7_data.cpp:653
game_ui_monster_hp_green
Image * game_ui_monster_hp_green
Definition: UIGame.cpp:61
UIMSG_CastSpell_Telekinesis
@ UIMSG_CastSpell_Telekinesis
Definition: GUIWindow.h:157
UIMSG_SelectShopDialogueOption
@ UIMSG_SelectShopDialogueOption
Definition: GUIWindow.h:194
PartyTimeStruct::bountyHunting_next_generation_time
std::array< GameTime, 10 > bountyHunting_next_generation_time
Definition: Party.h:142
DIALOGUE_ARENA_SELECT_CHAMPION
@ DIALOGUE_ARENA_SELECT_CHAMPION
Definition: GUIWindow.h:283
BLVMapOutline::sZ
int16_t sZ
Definition: Indoor.h:417
PrepareHouse
void PrepareHouse(HOUSE_ID house)
Definition: UIHouses.cpp:978
DIALOGUE_EVT_B
@ DIALOGUE_EVT_B
Definition: GUIWindow.h:271
DIALOGUE_18
@ DIALOGUE_18
Definition: GUIWindow.h:269
ItemGen::Reset
void Reset()
Definition: Items.cpp:133
SPEECH_17
@ SPEECH_17
Definition: Player.h:63
ITEM_ARTIFACT_MINDS_EYE
@ ITEM_ARTIFACT_MINDS_EYE
Definition: Items.h:185
UIMSG_RestWindow
@ UIMSG_RestWindow
Definition: GUIWindow.h:87
Player::pActiveSkills
std::array< unsigned __int16, 37 > pActiveSkills
Definition: Player.h:711
index
GLuint index
Definition: SDL_opengl_glext.h:663
Condition_Paralyzed
@ Condition_Paralyzed
Definition: Conditions.h:20
ITEM_POTION_CURE_DISEASE
@ ITEM_POTION_CURE_DISEASE
Definition: Items.h:125
bRingsShownInCharScreen
int bRingsShownInCharScreen
Definition: UICharacter.cpp:38
pPlayers
NZIArray< struct Player *, 5 > pPlayers
Definition: Player.cpp:46
UIMSG_DebugEradicate
@ UIMSG_DebugEradicate
Definition: GUIWindow.h:226
pFontCreate
GUIFont * pFontCreate
Definition: GUIFont.cpp:22
paperdoll_shoulder_second_coord
const int paperdoll_shoulder_second_coord[4][17][2]
Definition: UICharacter.cpp:387
BLVMapOutline
Definition: Indoor.h:412
GUIWindow::uFrameWidth
unsigned int uFrameWidth
Definition: GUIWindow.h:470
dword_591080
int dword_591080
Definition: UIHouses.cpp:47
WINDOW_5D
@ WINDOW_5D
Definition: GUIWindow.h:320
pBtn_ZoomOut
GUIButton * pBtn_ZoomOut
Definition: mm7_data.cpp:550
ItemGen::ItemEnchanted
bool ItemEnchanted() const
Definition: Items.h:279
PLAYER_SKILL_ITEM_ID
@ PLAYER_SKILL_ITEM_ID
Definition: Player.h:192
WINDOW_MainMenu_Load
@ WINDOW_MainMenu_Load
Definition: GUIWindow.h:308
UIMSG_StartHireling2Dialogue
@ UIMSG_StartHireling2Dialogue
Definition: GUIWindow.h:117
Localization::GetSkillName
const char * GetSkillName(unsigned int index) const
Definition: Localization.h:51
GUIButton
Definition: GUIButton.h:11
PLAYER_SKILL_FIRE
@ PLAYER_SKILL_FIRE
Definition: Player.h:183
game_ui_bar_blue
Image * game_ui_bar_blue
Definition: UIGame.cpp:116
pIndoor
IndoorLocation * pIndoor
Definition: Indoor.cpp:49
CharacterUI_GetSkillDescText
String CharacterUI_GetSkillDescText(unsigned int uPlayerID, PLAYER_SKILL_TYPE uPlayerSkillType)
Definition: UIPopup.cpp:1044
UIMSG_OpenQuestBook
@ UIMSG_OpenQuestBook
Definition: GUIWindow.h:168
GUIWindow::uFrameZ
unsigned int uFrameZ
Definition: GUIWindow.h:472
Condition_Insane
@ Condition_Insane
Definition: Conditions.h:13
pManaBarPos
std::array< unsigned int, 4 > pManaBarPos
Definition: mm7_data.cpp:229
ui_character_skillinfo_can_learn
unsigned int ui_character_skillinfo_can_learn
Definition: UICharacter.cpp:53
UIMSG_ChangeVoiceVolume
@ UIMSG_ChangeVoiceVolume
Definition: GUIWindow.h:153
current_screen_type
enum CURRENT_SCREEN current_screen_type
Definition: GUIWindow.cpp:83
ItemGen::uEnchantmentType
int uEnchantmentType
Definition: Items.h:327
ACTOR_BUFF_AFRAID
@ ACTOR_BUFF_AFRAID
Definition: Actor.h:42
ui_character_skillinfo_cant_learn
unsigned int ui_character_skillinfo_cant_learn
Definition: UICharacter.cpp:55
pBtn_Quests
GUIButton * pBtn_Quests
Definition: GUIButton.cpp:60
pFastSpellAttributeDescription
char * pFastSpellAttributeDescription
Definition: mm7_data.cpp:656
PLAYER_SKILL_UNARMED
@ PLAYER_SKILL_UNARMED
Definition: Player.h:202
ITEM_POTION_MAGIC_POTION
@ ITEM_POTION_MAGIC_POTION
Definition: Items.h:123
PlayerEquipment::uBelt
unsigned int uBelt
Definition: Player.h:324
Party::PartyTimes
PartyTimeStruct PartyTimes
Definition: Party.h:249
IconFrameTable::uNumIcons
unsigned int uNumIcons
Definition: IconFrameTable.h:64
pTurnEngine
struct stru262_TurnBased * pTurnEngine
Definition: TurnEngine.cpp:21
ACTOR_BUFF_FATE
@ ACTOR_BUFF_FATE
Definition: Actor.h:49
UIMSG_ShowStatus_DateTime
@ UIMSG_ShowStatus_DateTime
Definition: GUIWindow.h:77
dword_5C35D4
int dword_5C35D4
Definition: mm7_data.cpp:645
Dead
@ Dead
Definition: Actor.h:80
pArmourClassAttributeDescription
char * pArmourClassAttributeDescription
Definition: mm7_data.cpp:654
SPEECH_10
@ SPEECH_10
Definition: Player.h:56
ACTOR_BUFF_SHRINK
@ ACTOR_BUFF_SHRINK
Definition: Actor.h:41
Player::IsEradicated
bool IsEradicated() const
Definition: Player.cpp:7420
p2DEvents
_2devent p2DEvents[525]
Definition: Events.cpp:57
Player::GetMainHandItem
ItemGen * GetMainHandItem()
Definition: Player.cpp:7542
ui_ar_up_up
Image * ui_ar_up_up
Definition: GUIWindow.cpp:103
SPEECH_IDENTIFY_MONSTER_WEAKER
@ SPEECH_IDENTIFY_MONSTER_WEAKER
Definition: Player.h:150
result
GLuint64EXT * result
Definition: SDL_opengl_glext.h:9435
dword_A74CDC
int dword_A74CDC
Definition: mm7_data.cpp:762
pMapStats
struct MapStats * pMapStats
Definition: mm7_data.cpp:20
Party::pPartyBuffs
std::array< SpellBuff, 20 > pPartyBuffs
Definition: Party.h:309
ITEM_STOLEN
@ ITEM_STOLEN
Definition: Items.h:34
GUIWindow::vButtons
std::vector< GUIButton * > vButtons
Definition: GUIWindow.h:489
PlayerFrameTable::uNumFrames
unsigned int uNumFrames
Definition: PlayerFrameTable.h:28
WINDOW_null
@ WINDOW_null
Definition: GUIWindow.h:291
UIMSG_ClickAwardsBtn
@ UIMSG_ClickAwardsBtn
Definition: GUIWindow.h:100
messagebox_corner_w
Image * messagebox_corner_w
Definition: UIPopup.cpp:44
awards_scroll_bar_created
int awards_scroll_bar_created
Definition: mm7_data.cpp:557
OBJECT_Actor
@ OBJECT_Actor
Definition: Actor.h:67
WINDOW_CloseRestWindowBtn
@ WINDOW_CloseRestWindowBtn
Definition: GUIWindow.h:323
game_ui_player_alert_green
Image * game_ui_player_alert_green
Definition: UIGame.cpp:111
ImageHelper::GetWidthLn2
static int GetWidthLn2(Image *img)
Definition: Image.h:59
SPEECH_9
@ SPEECH_9
Definition: Player.h:55
GUIWindow::_41D08F_set_keyboard_control_group
void _41D08F_set_keyboard_control_group(int num_buttons, int a3, int a4, int a5)
Definition: GUIWindow.cpp:273
UIMSG_DebugKillChar
@ UIMSG_DebugKillChar
Definition: GUIWindow.h:225
PLAYER_SKILL_LIGHT
@ PLAYER_SKILL_LIGHT
Definition: Player.h:190
INPUT_ZoomIn
@ INPUT_ZoomIn
Definition: Keyboard.h:28
WINDOW_GameMenu
@ WINDOW_GameMenu
Definition: GUIWindow.h:293
GameUI_DrawFoodAndGold
void GameUI_DrawFoodAndGold()
Definition: UIGame.cpp:1179
ContractSelectText
const char * ContractSelectText(int pEventCode)
Definition: NPC.cpp:1052
Mouse::uMouseClickX
unsigned int uMouseClickX
Definition: Mouse.h:364
UIMSG_31
@ UIMSG_31
Definition: GUIWindow.h:35
uGameUIFontShadow
unsigned int uGameUIFontShadow
Definition: mm7_data.cpp:552
game_ui_btn_quickref
Image * game_ui_btn_quickref
Definition: UIGame.cpp:90
GetCurrentMenuID
MENU_STATE GetCurrentMenuID()
Definition: GUIWindow.cpp:133
dword_507B00_spell_info_to_draw_in_popup
int dword_507B00_spell_info_to_draw_in_popup
Definition: mm7_data.cpp:554
ITEM_METEORITE_FRAGMENT
@ ITEM_METEORITE_FRAGMENT
Definition: Items.h:106
party_buff_icons
std::array< class Image *, 14 > party_buff_icons
Definition: mm7_data.cpp:596
IMAGE_FORMAT_A8R8G8B8
@ IMAGE_FORMAT_A8R8G8B8
Definition: Image.h:7
ui_character_condition_light_color
unsigned int ui_character_condition_light_color
Definition: UICharacter.cpp:57
UIMSG_SelectSpell
@ UIMSG_SelectSpell
Definition: GUIWindow.h:71
PARTY_FLAGS_1_STANDING_ON_WATER
@ PARTY_FLAGS_1_STANDING_ON_WATER
Definition: Party.h:61
UIMSG_DownArrow
@ UIMSG_DownArrow
Definition: GUIWindow.h:130
ITEM_PHIMA_ROOT
@ ITEM_PHIMA_ROOT
Definition: Items.h:105
WINDOW_CharacterCreation
@ WINDOW_CharacterCreation
Definition: GUIWindow.h:343
ITEM_POTION_RECHARGE_ITEM
@ ITEM_POTION_RECHARGE_ITEM
Definition: Items.h:128
pItemsTable
struct ItemsTable * pItemsTable
Definition: Items.cpp:37
CURRENT_SCREEN::SCREEN_E
@ SCREEN_E
Party::PartyFindsGold
void PartyFindsGold(unsigned int uNumGold, int _1_dont_share_with_followers___2_the_same_but_without_a_message__else_normal)
Definition: Party.cpp:976
game_ui_playerbuff_bless
Image * game_ui_playerbuff_bless
Definition: UIGame.cpp:121
current_character_screen_window
enum WindowType current_character_screen_window
Definition: GUIWindow.cpp:78
paperdoll_shoulder_coord
const int paperdoll_shoulder_coord[4][17][2]
Definition: UICharacter.cpp:370
pPaperdoll_LeftHand
const int pPaperdoll_LeftHand[4][2]
Definition: UICharacter.cpp:336
pUIAnum_Torchlight
UIAnimation * pUIAnum_Torchlight
Definition: Party.cpp:48
UIMSG_D5
@ UIMSG_D5
Definition: GUIWindow.h:181
DIALOGUE_ARENA_FIGHT_NOT_OVER_YET
@ DIALOGUE_ARENA_FIGHT_NOT_OVER_YET
Definition: GUIWindow.h:285
WINDOW_DebugMenu
@ WINDOW_DebugMenu
Definition: GUIWindow.h:350
PLAYER_SKILL_BODYBUILDING
@ PLAYER_SKILL_BODYBUILDING
Definition: Player.h:195
CURRENT_SCREEN::SCREEN_24
@ SCREEN_24
MENU_NEWGAME
@ MENU_NEWGAME
Definition: GUIWindow.h:252
PLAYER_SKILL_PERCEPTION
@ PLAYER_SKILL_PERCEPTION
Definition: Player.h:197
DIALOGUE_13
@ DIALOGUE_13
Definition: GUIWindow.h:268
UIMSG_CastQuickSpell
@ UIMSG_CastQuickSpell
Definition: GUIWindow.h:29
SummonedItem::Initialize
void Initialize(GameTime duration)
Definition: Items.h:573
ItemGen::uAttributes
unsigned int uAttributes
Definition: Items.h:349
Player::pInventoryMatrix
std::array< int, 126 > pInventoryMatrix
Definition: Player.h:733
ITEM_ELVISH_TOADSTOOL
@ ITEM_ELVISH_TOADSTOOL
Definition: Items.h:109
y
EGLSurface EGLint EGLint y
Definition: SDL_egl.h:1596
UIMSG_0
@ UIMSG_0
Definition: GUIWindow.h:14
ItemGen::special_enchantment
ITEM_ENCHANTMENT special_enchantment
Definition: Items.h:330
IconFrameTable::GetIcon
Icon * GetIcon(unsigned int idx)
Definition: IconFrameTable.cpp:17
Image::GetWidth
unsigned int GetWidth()
Definition: Image.cpp:217
MENU_EXIT_GAME
@ MENU_EXIT_GAME
Definition: GUIWindow.h:255
CharacterUI_SkillsTab_ShowHint
void CharacterUI_SkillsTab_ShowHint()
Definition: UIPopup.cpp:1127
ItemGen::uMaxCharges
char uMaxCharges
Definition: Items.h:351
game_ui_player_face_eradicated
Image * game_ui_player_face_eradicated
Definition: UIGame.cpp:105
NPCStats::uNumNewNPCs
unsigned int uNumNewNPCs
Definition: NPC.h:179
WINDOW_Load
@ WINDOW_Load
Definition: GUIWindow.h:349
game_ui_bar_green
Image * game_ui_bar_green
Definition: UIGame.cpp:115
parchment
Texture * parchment
Definition: UIPopup.cpp:40
INPUT_Quest
@ INPUT_Quest
Definition: Keyboard.h:18
UIMSG_MouseLeftClickInScreen
@ UIMSG_MouseLeftClickInScreen
Definition: GUIWindow.h:22
Party::GetYellowAlert
bool GetYellowAlert()
Definition: Party.h:225
TurnBased_QueueElem::uPackedID
int uPackedID
Definition: TurnEngine.h:34
CURRENT_SCREEN::SCREEN_PARTY_CREATION
@ SCREEN_PARTY_CREATION
CURRENT_SCREEN::SCREEN_BRANCHLESS_NPC_DIALOG
@ SCREEN_BRANCHLESS_NPC_DIALOG
UIMSG_OpenHistoryBook
@ UIMSG_OpenHistoryBook
Definition: GUIWindow.h:186
MonsterPopup_Draw
void MonsterPopup_Draw(unsigned int uActorID, GUIWindow *pWindow)
Definition: UIPopup.cpp:563
Condition_Fear
@ Condition_Fear
Definition: Conditions.h:11
contract_approved
int contract_approved
Definition: mm7_data.cpp:772
window_SpeakInHouse
GUIWindow * window_SpeakInHouse
Definition: GUIWindow.cpp:51
game_ui_minimap_dirs
std::array< Image *, 8 > game_ui_minimap_dirs
Definition: UIGame.cpp:70
PLAYER_SKILL_DIPLOMACY
@ PLAYER_SKILL_DIPLOMACY
Definition: Player.h:198
PlayerEquipment::uBoot
unsigned int uBoot
Definition: Player.h:327
game_ui_playerbuff_pain_reflection
Image * game_ui_playerbuff_pain_reflection
Definition: UIGame.cpp:118
pBtn_ExitCancel
GUIButton * pBtn_ExitCancel
Definition: GUIButton.cpp:28
activeLevelDecoration
LevelDecoration * activeLevelDecoration
Definition: Decoration.cpp:10
SPEECH_11
@ SPEECH_11
Definition: Player.h:57
HOUSE_ID
HOUSE_ID
Definition: UIHouses.h:50
ITEM_POTION_SLAYING_POTION
@ ITEM_POTION_SLAYING_POTION
Definition: Items.h:137
pParty
Party * pParty
Definition: Party.cpp:30
Engine_::IocContainer::ResolveVis
static Vis * ResolveVis()
Definition: IocContainer.cpp:110
Image
Definition: Image.h:19
HOUSE_DIALOGUE_MAIN
@ HOUSE_DIALOGUE_MAIN
Definition: UIHouses.h:8
len
GLenum GLsizei len
Definition: SDL_opengl_glext.h:2929
buf
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: SDL_opengl_glext.h:2483
ItemGen::AuraEffectRed
bool AuraEffectRed() const
Definition: Items.h:282
Localization::GetSkillDescriptionExpert
const char * GetSkillDescriptionExpert(unsigned int index) const
Definition: Localization.h:63
UIMSG_SkillUp
@ UIMSG_SkillUp
Definition: GUIWindow.h:104
Localization::GetSkillDescriptionNormal
const char * GetSkillDescriptionNormal(unsigned int index) const
Definition: Localization.h:59
UIMSG_OnFinalWindowClose
@ UIMSG_OnFinalWindowClose
Definition: GUIWindow.h:164
ItemEnchantment::pBonusStat
char * pBonusStat
Definition: Items.h:405
GameUI_DrawRightPanelItems
void GameUI_DrawRightPanelItems()
Definition: UIGame.cpp:1154
PLAYER_SKILL_TIEVERY
@ PLAYER_SKILL_TIEVERY
Definition: Player.h:199
WINDOW_Transition
@ WINDOW_Transition
Definition: GUIWindow.h:310
ViewingParams::uMinimapZoom
unsigned int uMinimapZoom
Definition: Viewport.h:65
UIMSG_DebugSnow
@ UIMSG_DebugSnow
Definition: GUIWindow.h:229
ITEM_POTION_CURE_WEAKNESS
@ ITEM_POTION_CURE_WEAKNESS
Definition: Items.h:124
pFontArrus
GUIFont * pFontArrus
Definition: GUIFont.cpp:18
game_ui_player_selection_frame
Image * game_ui_player_selection_frame
Definition: UIGame.cpp:108
PLAYER_SKILL_SPIRIT
@ PLAYER_SKILL_SPIRIT
Definition: Player.h:187
UIMSG_ArrowUp
@ UIMSG_ArrowUp
Definition: GUIWindow.h:129
SummonedItem::field_18_expire_year
int field_18_expire_year
Definition: Items.h:589
Actor::uCurrentActionTime
unsigned int uCurrentActionTime
Definition: Actor.h:312
ACTOR_BUFF_CHARM
@ ACTOR_BUFF_CHARM
Definition: Actor.h:39
WINDOW_Chest
@ WINDOW_Chest
Definition: GUIWindow.h:305
bFlashHistoryBook
char bFlashHistoryBook
Definition: mm7_data.cpp:547
_50C9D0_AfterEnchClickEventId
int _50C9D0_AfterEnchClickEventId
Definition: mm7_data.cpp:580
NPCData::pName
char * pName
Definition: NPC.h:82
NPCStats::pNewNPCData
NPCData pNewNPCData[501]
Definition: NPC.h:165
UIMSG_DebugCycleAlign
@ UIMSG_DebugCycleAlign
Definition: GUIWindow.h:237
Party::bFlying
unsigned int bFlying
Definition: Party.h:266
UIMSG_OpenCalendar
@ UIMSG_OpenCalendar
Definition: GUIWindow.h:171
ITEM_POTION_STONE_TO_FLESH
@ ITEM_POTION_STONE_TO_FLESH
Definition: Items.h:136
EQUIP_ARMOUR
@ EQUIP_ARMOUR
Definition: Items.h:230
current_npc_text
String current_npc_text
Definition: mm7_data.cpp:780
UIMSG_StartNewGame
@ UIMSG_StartNewGame
Definition: GUIWindow.h:107
format_4E2DE8
const char * format_4E2DE8
Definition: mm7_data.cpp:242
WINDOW_GameOptions
@ WINDOW_GameOptions
Definition: GUIWindow.h:331
UIMSG_ResetKeyMapping
@ UIMSG_ResetKeyMapping
Definition: GUIWindow.h:204
UIMSG_DebugAllMagic
@ UIMSG_DebugAllMagic
Definition: GUIWindow.h:235
ACTOR_BUFF_PARALYZED
@ ACTOR_BUFF_PARALYZED
Definition: Actor.h:44
game_ui_playerbuff_hammerhands
Image * game_ui_playerbuff_hammerhands
Definition: UIGame.cpp:119
UIMSG_ChangeDetaliz
@ UIMSG_ChangeDetaliz
Definition: GUIWindow.h:70
GetSpellColor
unsigned int GetSpellColor(signed int a1)
Definition: UIPopup.cpp:2255
UIMSG_DebugTakeFood
@ UIMSG_DebugTakeFood
Definition: GUIWindow.h:238
ACTOR_BUFF_MASS_DISTORTION
@ ACTOR_BUFF_MASS_DISTORTION
Definition: Actor.h:48
ItemGen::GetDisplayName
String GetDisplayName()
Definition: Items.cpp:610
UIMSG_MouseLeftClickInGame
@ UIMSG_MouseLeftClickInGame
Definition: GUIWindow.h:18
Localization::GetAttributeDescription
const char * GetAttributeDescription(unsigned int index) const
Definition: Localization.h:47
ITEM_MOONSTONE
@ ITEM_MOONSTONE
Definition: Items.h:108
ITEM_ARTIFACT_HERMES_SANDALS
@ ITEM_ARTIFACT_HERMES_SANDALS
Definition: Items.h:182
UIMSG_ToggleColoredLights
@ UIMSG_ToggleColoredLights
Definition: GUIWindow.h:209
UIMSG_OpenDebugMenu
@ UIMSG_OpenDebugMenu
Definition: GUIWindow.h:246
BackToHouseMenu
void BackToHouseMenu()
Definition: UIHouses.cpp:3991
ITEM_TEMP_BONUS
@ ITEM_TEMP_BONUS
Definition: Items.h:28
Player::uExpressionTimePassed
unsigned __int16 uExpressionTimePassed
Definition: Player.h:789
ITEM_TROLL_BLOOD
@ ITEM_TROLL_BLOOD
Definition: Items.h:102
EQUIP_SINGLE_HANDED
@ EQUIP_SINGLE_HANDED
Definition: Items.h:227
ITEM_WETSUIT
@ ITEM_WETSUIT
Definition: Items.h:207
x
EGLSurface EGLint x
Definition: SDL_egl.h:1596
pMissleDamageAttributeDescription
char * pMissleDamageAttributeDescription
Definition: mm7_data.cpp:663
pHealthPointsAttributeDescription
char * pHealthPointsAttributeDescription
Definition: mm7_data.cpp:652
WINDOW_CharacterWindow_Inventory
@ WINDOW_CharacterWindow_Inventory
Definition: GUIWindow.h:330
UIMSG_ClickAwardScrollBar
@ UIMSG_ClickAwardScrollBar
Definition: GUIWindow.h:159
Party::WizardEyeActive
bool WizardEyeActive()
Definition: Party.h:193
PLAYER_SKILL_DODGE
@ PLAYER_SKILL_DODGE
Definition: Player.h:201
UIMSG_ChangeCursor
@ UIMSG_ChangeCursor
Definition: GUIWindow.h:25
UIMSG_STEALFROMACTOR
@ UIMSG_STEALFROMACTOR
Definition: GUIWindow.h:31
NPCStats::pProfessions
NPCProfession pProfessions[59]
Definition: NPC.h:167
GetSkillColor
unsigned int GetSkillColor(unsigned int uPlayerClass, PLAYER_SKILL_TYPE uPlayerSkillType, signed int skill_level)
Definition: GUIWindow.cpp:1366
UIMSG_D4
@ UIMSG_D4
Definition: GUIWindow.h:180
CURRENT_SCREEN::SCREEN_LOADGAME
@ SCREEN_LOADGAME
UIMSG_MainMenu_ShowLoadWindow
@ UIMSG_MainMenu_ShowLoadWindow
Definition: GUIWindow.h:41
Player::GetBaseIdentifyPrice
int GetBaseIdentifyPrice(float price_multiplier)
Definition: Player.cpp:455
UIMSG_PlayerCreationChangeName
@ UIMSG_PlayerCreationChangeName
Definition: GUIWindow.h:46
SpriteFrameTable::GetFrame
SpriteFrame * GetFrame(unsigned int uSpriteID, unsigned int uTime)
Definition: Sprites.cpp:277
MENU_MMT_MAIN_MENU
@ MENU_MMT_MAIN_MENU
Definition: GUIWindow.h:263
UI_GetHealthManaAndOtherQualitiesStringColor
unsigned int UI_GetHealthManaAndOtherQualitiesStringColor(int actual_value, int base_value)
Definition: UIGame.cpp:2307
ui_character_inventory_paperdoll_background
Image * ui_character_inventory_paperdoll_background
Definition: UICharacter.cpp:460
UIMSG_ExitRest
@ UIMSG_ExitRest
Definition: GUIWindow.h:134
Party::pHireling2Name
char pHireling2Name[100]
Definition: Party.h:319
viewparams
struct ViewingParams * viewparams
Definition: mm7_data.cpp:22
NPCStats::pNPCData
NPCData pNPCData[501]
Definition: NPC.h:164
ITEM_RELIC_TWILIGHT
@ ITEM_RELIC_TWILIGHT
Definition: Items.h:178
WINDOW_CastSpell
@ WINDOW_CastSpell
Definition: GUIWindow.h:311
Player::expression
CHARACTER_EXPRESSION_ID expression
Definition: Player.h:788
uIconIdx_WaterWalk
unsigned int uIconIdx_WaterWalk
Definition: mm7_data.cpp:598
OS_GetTime
unsigned int OS_GetTime()
Definition: Lin.cpp:12
Disabled
@ Disabled
Definition: Actor.h:94
no_rightlick_in_inventory
int no_rightlick_in_inventory
Definition: UIPopup.cpp:1815
PLAYER_SKILL_TYPE
PLAYER_SKILL_TYPE
Definition: Player.h:170
OBJECT_DESC_UNPICKABLE
@ OBJECT_DESC_UNPICKABLE
Definition: ObjectList.h:10
GameUI_RightPanel_BookFlashTimer
GameTime GameUI_RightPanel_BookFlashTimer
Definition: mm7_data.cpp:559
UIMSG_AD
@ UIMSG_AD
Definition: GUIWindow.h:140
dword_507CC0_activ_ch
int dword_507CC0_activ_ch
Definition: mm7_data.cpp:558
paperdoll_Belt
const int paperdoll_Belt[4][7][2]
Definition: UICharacter.cpp:310
BLVMapOutline::uFace2ID
uint16_t uFace2ID
Definition: Indoor.h:416
UIMSG_Game_OpenSaveGameDialog
@ UIMSG_Game_OpenSaveGameDialog
Definition: GUIWindow.h:109
ui_character_condition_normal_color
unsigned int ui_character_condition_normal_color
Definition: UICharacter.cpp:56
pMouse
static Mouse * pMouse
Definition: UIGame.cpp:53
LODFile_IconsBitmaps::SetupPalettes
void SetupPalettes(unsigned int uTargetRBits, unsigned int uTargetGBits, unsigned int uTargetBBits)
Definition: LOD.cpp:872
ITEM_ENCHANTMENT_40
@ ITEM_ENCHANTMENT_40
Definition: Items.h:58
Condition_Dead
@ Condition_Dead
Definition: Conditions.h:22
BLVMapOutline::uFace1ID
uint16_t uFace1ID
Definition: Indoor.h:415
INPUT_TimeCal
@ INPUT_TimeCal
Definition: Keyboard.h:21
Condition_Disease_Weak
@ Condition_Disease_Weak
Definition: Conditions.h:15
GUIWindow::DrawMessageBox
void DrawMessageBox(bool inside_game_viewport)
Definition: GUIWindow.cpp:319
CURRENT_SCREEN::SCREEN_HOUSE
@ SCREEN_HOUSE
WINDOW_LloydsBeacon
@ WINDOW_LloydsBeacon
Definition: GUIWindow.h:334
MonsterInfo::uID
uint16_t uID
Definition: Monsters.h:169
WINDOW_Book
@ WINDOW_Book
Definition: GUIWindow.h:297
ACTOR_BUFF_SOMETHING_THAT_HALVES_AC
@ ACTOR_BUFF_SOMETHING_THAT_HALVES_AC
Definition: Actor.h:46
pPlayerExperienceAttributeDescription
char * pPlayerExperienceAttributeDescription
Definition: mm7_data.cpp:659
PLAYER_SKILL_MEDITATION
@ PLAYER_SKILL_MEDITATION
Definition: Player.h:196
GetEventHintString
char * GetEventHintString(unsigned int uEventID)
Definition: Events.cpp:1159
CastSpellInfo::uPlayerID_2
uint16_t uPlayerID_2
Definition: CastSpellInfo.h:26
ITEM_ARTIFACT_HEROS_BELT
@ ITEM_ARTIFACT_HEROS_BELT
Definition: Items.h:188
ItemGen::GetIconName
char * GetIconName()
Definition: Items.cpp:1521
mouse
static Mouse * mouse
Definition: Chest.cpp:36
MonsterStats::pPlaceStrings
char * pPlaceStrings[31]
Definition: Monsters.h:195
UIMSG_OnCastLloydsBeacon
@ UIMSG_OnCastLloydsBeacon
Definition: GUIWindow.h:144
UIMSG_ShowCredits
@ UIMSG_ShowCredits
Definition: GUIWindow.h:42
ItemGen::uItemID
int uItemID
Definition: Items.h:326
CURRENT_SCREEN::SCREEN_CREATORS
@ SCREEN_CREATORS
AssetsManager::GetImage_ColorKey
Texture * GetImage_ColorKey(const String &name, uint16_t colorkey)
Definition: AssetsManager.cpp:34
ITEM_FAE_DUST
@ ITEM_FAE_DUST
Definition: Items.h:111
pSpellDatas
std::array< SpellData, 100 > pSpellDatas
Definition: Spells.cpp:170
WINDOW_Dialogue
@ WINDOW_Dialogue
Definition: GUIWindow.h:298
GUIWindow::uFrameHeight
unsigned int uFrameHeight
Definition: GUIWindow.h:471
WINDOW_BooksButtonOverlay
@ WINDOW_BooksButtonOverlay
Definition: GUIWindow.h:326
UIMSG_DebugDrawDist
@ UIMSG_DebugDrawDist
Definition: GUIWindow.h:230
UIMSG_ShowStatus_Player
@ UIMSG_ShowStatus_Player
Definition: GUIWindow.h:79
Localization::GetSpellSchoolName
const char * GetSpellSchoolName(unsigned int index) const
Definition: Localization.h:27
Player::_achieved_awards_bits
unsigned char _achieved_awards_bits[64]
Definition: Player.h:715
EQUIP_BOW
@ EQUIP_BOW
Definition: Items.h:229
MapBookOpen
int MapBookOpen
Definition: mm7_data.cpp:519
PLAYER_BUFF_BLESS
@ PLAYER_BUFF_BLESS
Definition: Player.h:15
GetConditionDrawColor
int GetConditionDrawColor(unsigned int uConditionIdx)
Definition: UIGame.cpp:2327
UIMSG_CastSpellFromBook
@ UIMSG_CastSpellFromBook
Definition: GUIWindow.h:122
sub_4637E0_is_there_popup_onscreen
char sub_4637E0_is_there_popup_onscreen()
Definition: GUIWindow.cpp:1361
ITEM_RILIC_TITANS_BELT
@ ITEM_RILIC_TITANS_BELT
Definition: Items.h:177
pPaperdollLeftEmptyHand
const int pPaperdollLeftEmptyHand[4][2]
Definition: UICharacter.cpp:345
PLAYER_SKILL_AIR
@ PLAYER_SKILL_AIR
Definition: Player.h:184
ItemGen::GetPlayerSkillType
unsigned char GetPlayerSkillType()
Definition: Items.cpp:1512
PLAYER_CLASS_LICH
@ PLAYER_CLASS_LICH
Definition: Player.h:251
UIMSG_Game_OpenOptionsDialog
@ UIMSG_Game_OpenOptionsDialog
Definition: GUIWindow.h:110
BLVMapOutline::uFlags
uint16_t uFlags
Definition: Indoor.h:418
v1
GLfloat GLfloat v1
Definition: SDL_opengl_glext.h:694
stru262_TurnBased::pQueue
TurnBased_QueueElem pQueue[530]
Definition: TurnEngine.h:82
GUIFont::LoadFont
static GUIFont * LoadFont(const char *pFontFile, const char *pFontPalette,...)
Definition: GUIFont.cpp:56
GUIWindow_Scroll
Definition: GUIWindow.h:495
Player::GetRace
enum CHARACTER_RACE GetRace() const
Definition: Player.cpp:3488
BtnUp_flag
int BtnUp_flag
Definition: mm7_data.cpp:529
game_ui_right_panel_frame
Image * game_ui_right_panel_frame
Definition: GUIWindow.cpp:90
dword_F8B1B0_MasteryBeingTaught
int dword_F8B1B0_MasteryBeingTaught
Definition: mm7_data.cpp:774
PlayerFrameTable::GetFrameIdByExpression
unsigned int GetFrameIdByExpression(CHARACTER_EXPRESSION_ID expression)
Definition: PlayerFrameTable.cpp:8
ObjectDesc::uFlags
int16_t uFlags
Definition: ObjectList.h:27
width
EGLSurface EGLint EGLint EGLint width
Definition: SDL_egl.h:1596
UIMSG_DebugLightmap
@ UIMSG_DebugLightmap
Definition: GUIWindow.h:233
Engine_::IocContainer::ResolveMouse
static Mouse * ResolveMouse()
Definition: IocContainer.cpp:88
Cartographer
@ Cartographer
Definition: NPC.h:43
Player::field_1AA2
__int16 field_1AA2
Definition: Player.h:791
WINDOW_AutonotesBook
@ WINDOW_AutonotesBook
Definition: GUIWindow.h:337
UIAnimation::icon
class Icon * icon
Definition: IconFrameTable.h:71
ItemGen::AuraEffectPurple
bool AuraEffectPurple() const
Definition: Items.h:291
Party::TakeGold
static void TakeGold(int amount)
Definition: Party.cpp:292
UIMSG_1C
@ UIMSG_1C
Definition: GUIWindow.h:32
Log::Warning
void Warning(const wchar_t *pFormat,...)
Definition: Log.cpp:28
uGameUIFontMain
unsigned int uGameUIFontMain
Definition: mm7_data.cpp:553
ITEM_LASER_RIFLE
@ ITEM_LASER_RIFLE
Definition: Items.h:83
ItemGen::uBodyAnchor
unsigned __int8 uBodyAnchor
Definition: Items.h:350
CURRENT_SCREEN::SCREEN_CHARACTERS
@ SCREEN_CHARACTERS
CURRENT_SCREEN::SCREEN_SAVEGAME
@ SCREEN_SAVEGAME
ACTOR_BUFF_HASTE
@ ACTOR_BUFF_HASTE
Definition: Actor.h:57
paperdoll_Cloak
const int paperdoll_Cloak[4][10][2]
Definition: UICharacter.cpp:291
IndoorLocation::pMapOutlines
BLVMapOutlines * pMapOutlines
Definition: Indoor.h:641
pIcons_LOD
LODFile_IconsBitmaps * pIcons_LOD
Definition: LOD.cpp:12
pPlayerPortraitsXCoords_For_PlayerBuffAnimsDrawing
std::array< int16_t, 4 > pPlayerPortraitsXCoords_For_PlayerBuffAnimsDrawing
Definition: mm7_data.cpp:424
ItemGen::expirte_time
GameTime expirte_time
Definition: Items.h:354
SummonedItem::field_C_expire_day
int field_C_expire_day
Definition: Items.h:586
pMissleBonusAttributeDescription
char * pMissleBonusAttributeDescription
Definition: mm7_data.cpp:662
ItemGen::GetDamageDice
unsigned __int8 GetDamageDice()
Definition: Items.cpp:1525
IconFrameTable::pIcons
Icon * pIcons
Definition: IconFrameTable.h:65
UIMSG_CHANGE_LOCATION_ClickCencelBtn
@ UIMSG_CHANGE_LOCATION_ClickCencelBtn
Definition: GUIWindow.h:76
GUIButton::msg
UIMessageType msg
Definition: GUIButton.h:29
WINDOW_KeyMappingOptions
@ WINDOW_KeyMappingOptions
Definition: GUIWindow.h:332
dialogue_show_profession_details
char dialogue_show_profession_details
Definition: mm7_data.cpp:781
ITEM_BLASTER
@ ITEM_BLASTER
Definition: Items.h:82
ItemGen::GetDamageRoll
unsigned __int8 GetDamageRoll()
Definition: Items.cpp:1529
game_ui_evtnpc
Image * game_ui_evtnpc
Definition: UIGame.cpp:102
AudioPlayer::StopChannels
void StopChannels(int uStartChannel, int uEndChannel)
Definition: AudioPlayer.cpp:331
RightClickPortraitXmin
std::array< __int16, 4 > RightClickPortraitXmin
Definition: mm7_data.cpp:225
ui_character_condition_moderate_color
unsigned int ui_character_condition_moderate_color
Definition: UICharacter.cpp:58
fixpoint_mul
__int64 fixpoint_mul(int a1, int a2)
Definition: OurMath.cpp:138
paperdoll_armor_texture
Image * paperdoll_armor_texture[4][17][3]
Definition: UICharacter.cpp:204
Localization::GetSkillDescriptionGrand
const char * GetSkillDescriptionGrand(unsigned int index) const
Definition: Localization.h:71
ui_game_minimap_outline_color
unsigned int ui_game_minimap_outline_color
Definition: UICharacter.cpp:62
GUIFont::CalcTextHeight
unsigned int CalcTextHeight(const String &str, unsigned int width, int x_offset, bool return_on_carriage=false)
Definition: GUIFont.cpp:246
pActors
std::array< Actor, 500 > pActors
Definition: Actor.cpp:38
PLAYER_SKILL_LEATHER
@ PLAYER_SKILL_LEATHER
Definition: Player.h:180
DrawJoinGuildWindow
void DrawJoinGuildWindow(int pEventCode)
Definition: GUIWindow.cpp:794
SpriteFrameTable::pSpriteSFrames
SpriteFrame * pSpriteSFrames
Definition: Sprites.h:77
sCurrentMenuID
MENU_STATE sCurrentMenuID
Definition: GUIWindow.cpp:81
Condition_Zombie
@ Condition_Zombie
Definition: Conditions.h:25
achieved_awards
std::array< AwardType, 1000 > achieved_awards
Definition: mm7_data.cpp:27
SummonedItem::field_14_exprie_month
int field_14_exprie_month
Definition: Items.h:588
UIMSG_PlayerCreationRemoveUpSkill
@ UIMSG_PlayerCreationRemoveUpSkill
Definition: GUIWindow.h:60
ITEM_OOZE_ENDOPLASM_VIAL
@ ITEM_OOZE_ENDOPLASM_VIAL
Definition: Items.h:117
PLAYER_SKILL_MACE
@ PLAYER_SKILL_MACE
Definition: Player.h:177
pPlayerFrameTable
struct PlayerFrameTable * pPlayerFrameTable
Definition: mm7_data.cpp:171
UIMSG_OnTravelByFoot
@ UIMSG_OnTravelByFoot
Definition: GUIWindow.h:75
Player::GetMaxMana
int GetMaxMana()
Definition: Player.cpp:2369
Localization::GetSkillDescription
const char * GetSkillDescription(unsigned int index) const
Definition: Localization.h:55
ITEM_POTION_CURE_WOUNDS
@ ITEM_POTION_CURE_WOUNDS
Definition: Items.h:122
paperdoll_belt_texture
Image * paperdoll_belt_texture[4][7]
Definition: UICharacter.cpp:213
UIMSG_AlreadyResting
@ UIMSG_AlreadyResting
Definition: GUIWindow.h:92
Localization::GetClassDescription
const char * GetClassDescription(unsigned int index) const
Definition: Localization.h:39
back_to_game
void back_to_game()
Definition: Engine.cpp:1609
UIMSG_PlayerCreation_FaceNext
@ UIMSG_PlayerCreation_FaceNext
Definition: GUIWindow.h:139
PLAYER_SKILL_TRAP_DISARM
@ PLAYER_SKILL_TRAP_DISARM
Definition: Player.h:200
Viewport::uViewportBR_X
int uViewportBR_X
Definition: Viewport.h:24
uNumLevelDecorations
size_t uNumLevelDecorations
Definition: Decoration.cpp:9
UIMSG_PlayerCreation_SelectAttribute
@ UIMSG_PlayerCreation_SelectAttribute
Definition: GUIWindow.h:101
ui_character_condition_severe_color
unsigned int ui_character_condition_severe_color
Definition: UICharacter.cpp:59
window
EGLSurface EGLNativeWindowType * window
Definition: SDL_egl.h:1580
ITEM_GARNET
@ ITEM_GARNET
Definition: Items.h:113
Player::pName
char pName[16]
Definition: Player.h:637
Party::uFlags
unsigned int uFlags
Definition: Party.h:313
Player::GetBowItem
ItemGen * GetBowItem()
Definition: Player.cpp:7546
f
GLfloat f
Definition: SDL_opengl_glext.h:1873
pHiredNPCsIconsOffsetsX
std::array< unsigned int, 2 > pHiredNPCsIconsOffsetsX
Definition: mm7_data.cpp:471
UIMSG_SelectKeyPage1
@ UIMSG_SelectKeyPage1
Definition: GUIWindow.h:202
PLAYER_SKILL_WATER
@ PLAYER_SKILL_WATER
Definition: Player.h:185
GameTime::GetHoursOfDay
int GetHoursOfDay() const
Definition: Time.h:39
pBtn_NPCLeft
GUIButton * pBtn_NPCLeft
Definition: GUIButton.cpp:51
MonsterStats::pInfos
MonsterInfo pInfos[265]
Definition: Monsters.h:194
NPCData::rep
int rep
Definition: NPC.h:87
MapInfo::pName
String pName
Definition: MapInfo.h:38
Mouse::GetClickPos
void GetClickPos(unsigned int *pX, unsigned int *pY)
Definition: Mouse.cpp:20
UIMSG_InventoryLeftClick
@ UIMSG_InventoryLeftClick
Definition: GUIWindow.h:103
Player::sMana
int sMana
Definition: Player.h:767
EQUIP_POTION
@ EQUIP_POTION
Definition: Items.h:241
WINDOW_GenericCancel
@ WINDOW_GenericCancel
Definition: GUIWindow.h:345
uIconIdx_FlySpell
unsigned int uIconIdx_FlySpell
Definition: mm7_data.cpp:597
HOUSE_DIALOGUE_OTHER
@ HOUSE_DIALOGUE_OTHER
Definition: UIHouses.h:46
EQUIP_NONE
@ EQUIP_NONE
Definition: Items.h:248
GetNewNPCData
struct NPCData * GetNewNPCData(signed int npcid, int *npc_indx)
Definition: NPC.cpp:99
UIMSG_InstallBeacon
@ UIMSG_InstallBeacon
Definition: GUIWindow.h:146
game_ui_tome_quests
Image * game_ui_tome_quests
Definition: UIGame.cpp:84
UIMSG_CHEST_ClickItem
@ UIMSG_CHEST_ClickItem
Definition: GUIWindow.h:20
UIMSG_SaveLoadBtn
@ UIMSG_SaveLoadBtn
Definition: GUIWindow.h:131
UIMSG_MainMenu_ShowPartyCreationWnd
@ UIMSG_MainMenu_ShowPartyCreationWnd
Definition: GUIWindow.h:40
UIMSG_OpenKeyMappingOptions
@ UIMSG_OpenKeyMappingOptions
Definition: GUIWindow.h:201
ITEM_POTION_FLAMING_POTION
@ ITEM_POTION_FLAMING_POTION
Definition: Items.h:133
WINDOW_QuickReference
@ WINDOW_QuickReference
Definition: GUIWindow.h:299
LEVEL_Outdoor
@ LEVEL_Outdoor
Definition: Indoor.h:287
Timer::Pause
void Pause()
Definition: Time.cpp:19
Rect
Definition: Rect.h:3
Player::_expression21_frameset
int _expression21_frameset
Definition: Player.h:793
ui_game_minimap_decoration_color_1
unsigned int ui_game_minimap_decoration_color_1
Definition: UICharacter.cpp:66
game_ui_player_face_dead
Image * game_ui_player_face_dead
Definition: UIGame.cpp:106
pAttackDamageAttributeDescription
char * pAttackDamageAttributeDescription
Definition: mm7_data.cpp:661
NPCData
Definition: NPC.h:79
UIMSG_MMT_MainMenu_MM6
@ UIMSG_MMT_MainMenu_MM6
Definition: GUIWindow.h:213
Player::GetMaxHealth
int GetMaxHealth()
Definition: Player.cpp:2354
UIMSG_SpellScrollUse
@ UIMSG_SpellScrollUse
Definition: GUIWindow.h:126
pScrolls
std::array< const char *, 82 > pScrolls
Definition: mm7_data.cpp:743
SpellInfo::pExpertSkillDesc
char * pExpertSkillDesc
Definition: Spells.h:180
Player::GetHelmItem
ItemGen * GetHelmItem()
Definition: Player.cpp:7550
GUIButton::field_1C
int field_1C
Definition: GUIButton.h:28
IndoorLocation::_visible_outlines
char _visible_outlines[875]
Definition: Indoor.h:650
UIMSG_ToggleFlipOnExit
@ UIMSG_ToggleFlipOnExit
Definition: GUIWindow.h:188
UIMSG_DebugTownPortal
@ UIMSG_DebugTownPortal
Definition: GUIWindow.h:245
PlayerEquipment::uRings
std::array< unsigned int, 6 > uRings
Definition: Player.h:329
_50C9A0_IsEnchantingInProgress
bool _50C9A0_IsEnchantingInProgress
Definition: mm7_data.cpp:578
bFlashQuestBook
char bFlashQuestBook
Definition: mm7_data.cpp:549
ITEM_ARTIFACT_CLOAK_OF_THE_SHEEP
@ ITEM_ARTIFACT_CLOAK_OF_THE_SHEEP
Definition: Items.h:183
ui_btn_npc_left
Image * ui_btn_npc_left
Definition: GUIWindow.cpp:98
ITEM_MUSHROOM
@ ITEM_MUSHROOM
Definition: Items.h:115
UIMSG_1A9
@ UIMSG_1A9
Definition: GUIWindow.h:211
UIMSG_44
@ UIMSG_44
Definition: GUIWindow.h:54
ANIM_AtkMelee
@ ANIM_AtkMelee
Definition: Actor.h:101
PLAYER_SKILL_SPEAR
@ PLAYER_SKILL_SPEAR
Definition: Player.h:175
WINDOW_VideoOptions
@ WINDOW_VideoOptions
Definition: GUIWindow.h:333
UIMSG_BuyInShop_Identify_Repair
@ UIMSG_BuyInShop_Identify_Repair
Definition: GUIWindow.h:66
UIMSG_ClickAwardsUpBtn
@ UIMSG_ClickAwardsUpBtn
Definition: GUIWindow.h:136
pDialogueNPCCount
int pDialogueNPCCount
Definition: NPC.cpp:26
dst
GLenum GLenum dst
Definition: SDL_opengl_glext.h:1740
UIMSG_Cancel
@ UIMSG_Cancel
Definition: GUIWindow.h:133
ui_game_minimap_actor_hostile_color
unsigned int ui_game_minimap_actor_hostile_color
Definition: UICharacter.cpp:64
pGUIWindow_ScrollWindow
GUIWindow * pGUIWindow_ScrollWindow
Definition: GUIWindow.cpp:52
SpellBuff::expire_time
GameTime expire_time
Definition: Spells.h:165
SummonedItem
Definition: Items.h:571
TE_WAIT
@ TE_WAIT
Definition: TurnEngine.h:20
ITEM_ENCHANTMENT
ITEM_ENCHANTMENT
Definition: Items.h:38
Party::GetFood
int GetFood() const
Definition: Party.cpp:272
LevelDecoration
Definition: Decoration.h:20
pCurrentMapName
String pCurrentMapName
Definition: mm7_data.cpp:712
UIMSG_C2
@ UIMSG_C2
Definition: GUIWindow.h:161
Removed
@ Removed
Definition: Actor.h:86
KeyboardActionMapping::GetActionVKey
unsigned int GetActionVKey(enum InputAction eAction)
Definition: Keyboard.cpp:145
ItemGen::IsIdentified
bool IsIdentified()
Definition: Items.h:306
DIALOGUE_ARENA_ALREADY_WON
@ DIALOGUE_ARENA_ALREADY_WON
Definition: GUIWindow.h:287
WINDOW_QuestBook
@ WINDOW_QuestBook
Definition: GUIWindow.h:336
pPaletteManager
PaletteManager * pPaletteManager
Definition: PaletteManager.cpp:7
Condition_Poison_Severe
@ Condition_Poison_Severe
Definition: Conditions.h:18
game_ui_topframe
Image * game_ui_topframe
Definition: UIGame.cpp:57
IconFrameTable::FindIcon
unsigned int FindIcon(const char *pIconName)
Definition: IconFrameTable.cpp:31
SPEECH_IDENTIFY_MONSTER_106
@ SPEECH_IDENTIFY_MONSTER_106
Definition: Player.h:152
CharacterUI_DrawPaperdoll
void CharacterUI_DrawPaperdoll(Player *player)
Definition: UICharacter.cpp:930
EQUIP_AMULET
@ EQUIP_AMULET
Definition: Items.h:238
ITEM_AURA_EFFECT_RED
@ ITEM_AURA_EFFECT_RED
Definition: Items.h:29
UIMSG_ClickInstallRemoveQuickSpellBtn
@ UIMSG_ClickInstallRemoveQuickSpellBtn
Definition: GUIWindow.h:73
UIMSG_DebugShowFPS
@ UIMSG_DebugShowFPS
Definition: GUIWindow.h:222
paperdoll_Weapon
const int paperdoll_Weapon[4][16][2]
Definition: UICharacter.cpp:215
UIMSG_ToggleShowDamage
@ UIMSG_ToggleShowDamage
Definition: GUIWindow.h:154
MENU_5
@ MENU_5
Definition: GUIWindow.h:256
Player::pInventoryItemList
ItemGen pInventoryItemList[126]
Definition: Player.h:727
PlayerEquipment::uMainHand
unsigned int uMainHand
Definition: Player.h:320
dword_506988_uY
int dword_506988_uY
Definition: mm7_data.cpp:538
UIMSG_ChangeSoundVolume
@ UIMSG_ChangeSoundVolume
Definition: GUIWindow.h:94
UIMSG_Game_OpenLoadGameDialog
@ UIMSG_Game_OpenLoadGameDialog
Definition: GUIWindow.h:108
dword_F8B1AC_award_bit_number
int dword_F8B1AC_award_bit_number
Definition: mm7_data.cpp:773
NPCData::uPortraitID
unsigned int uPortraitID
Definition: NPC.h:83
Player::uCurrentFace
unsigned __int8 uCurrentFace
Definition: Player.h:640
UIAnimation::x
int16_t x
Definition: IconFrameTable.h:76
pBodyResistanceAttributeDescription
char * pBodyResistanceAttributeDescription
Definition: mm7_data.cpp:669
AwardType
AwardType
Definition: Awards.h:15
GUIWindow::uFrameY
unsigned int uFrameY
Definition: GUIWindow.h:469
UIMSG_D0
@ UIMSG_D0
Definition: GUIWindow.h:176
game_ui_monster_hp_background
Image * game_ui_monster_hp_background
Definition: UIGame.cpp:64
UIMSG_DebugPickedFace
@ UIMSG_DebugPickedFace
Definition: GUIWindow.h:223
pBtn_Down
GUIButton * pBtn_Down
Definition: GUIButton.cpp:71
ItemGen::GetIdentifiedName
String GetIdentifiedName()
Definition: Items.cpp:619
Viewport::uViewportBR_Y
int uViewportBR_Y
Definition: Viewport.h:25
PLAYER_SKILL_SHIELD
@ PLAYER_SKILL_SHIELD
Definition: Player.h:179
pMiscTimer
Timer * pMiscTimer
Definition: Time.cpp:7
ringscreenactive
bool ringscreenactive()
Definition: UICharacter.cpp:3396
GUIButton::uX
unsigned int uX
Definition: GUIButton.h:21
UIMSG_PlayerCreationSelectClass
@ UIMSG_PlayerCreationSelectClass
Definition: GUIWindow.h:51
PLAYER_BUFF_STONESKIN
@ PLAYER_BUFF_STONESKIN
Definition: Player.h:28
pBtn_GameSettings
GUIButton * pBtn_GameSettings
Definition: GUIButton.cpp:52
pSpellStats
struct SpellStats * pSpellStats
Definition: Spells.cpp:32
ITEM_POTION_AWAKEN
@ ITEM_POTION_AWAKEN
Definition: Items.h:126
PLAYER_SKILL_ALCHEMY
@ PLAYER_SKILL_ALCHEMY
Definition: Player.h:206
Player::GetSexByVoice
PLAYER_SEX GetSexByVoice()
Definition: Player.cpp:3516
pFontComic
GUIFont * pFontComic
Definition: GUIFont.cpp:24
_4F0882_evt_VAR_PlayerItemInHands_vals
std::array< int16_t, 54 > _4F0882_evt_VAR_PlayerItemInHands_vals
Definition: mm7_data.cpp:484
CURRENT_SCREEN::SCREEN_INPUT_BLV
@ SCREEN_INPUT_BLV
Player::GetItem
ItemGen * GetItem(unsigned int PlayerEquipment::*itemPos)
Definition: Player.cpp:7574
Party::GetPartyReputation
int GetPartyReputation()
Definition: Party.cpp:922
bountyHunting_monster_id_for_hunting
int16_t bountyHunting_monster_id_for_hunting
Definition: mm7_data.cpp:770
CURRENT_SCREEN::SCREEN_BOOKS
@ SCREEN_BOOKS
stru262_TurnBased::uActorQueueSize
int uActorQueueSize
Definition: TurnEngine.h:77
Condition_Cursed
@ Condition_Cursed
Definition: Conditions.h:8
GUIButton::uW
unsigned int uW
Definition: GUIButton.h:26
UIMSG_RentRoom
@ UIMSG_RentRoom
Definition: GUIWindow.h:196
Player::GetBeltItem
ItemGen * GetBeltItem()
Definition: Player.cpp:7552
Localization::GetAttirubteName
const char * GetAttirubteName(unsigned int index) const
Definition: Localization.h:43
VAR_Award
@ VAR_Award
Definition: Events.h:140
ItemGen::IsBroken
bool IsBroken()
Definition: Items.h:304
ui_game_minimap_projectile_color
unsigned int ui_game_minimap_projectile_color
Definition: UICharacter.cpp:67
ItemGen::ResetEnchantAnimation
void ResetEnchantAnimation()
Definition: Items.h:278
ItemsTable::pSpecialEnchantments
ItemSpecialEnchantment pSpecialEnchantments[72]
Definition: Items.h:462
UIMSG_LoadGame
@ UIMSG_LoadGame
Definition: GUIWindow.h:67
word_4EE150
std::array< short, 28 > word_4EE150
Definition: mm7_data.cpp:474
ui_game_character_record_playerbuff_colors
std::array< unsigned int, 24 > ui_game_character_record_playerbuff_colors
Definition: UICharacter.cpp:69
ITEM_SULFUR
@ ITEM_SULFUR
Definition: Items.h:112
EQUIP_TWO_HANDED
@ EQUIP_TWO_HANDED
Definition: Items.h:228
BuildDialogueString
String BuildDialogueString(const char *lpsz, unsigned __int8 uPlayerID, ItemGen *a3, char *a4, int a5, GameTime *a6)
Definition: GUIWindow.cpp:2189
WINDOW_59
@ WINDOW_59
Definition: GUIWindow.h:316
Party::pHirelings
std::array< NPCData, 2 > pHirelings
Definition: Party.h:311
WINDOW_PressedButton2
@ WINDOW_PressedButton2
Definition: GUIWindow.h:317
WINDOW_GreetingNPC
@ WINDOW_GreetingNPC
Definition: GUIWindow.h:304
OBJECT_Player
@ OBJECT_Player
Definition: Actor.h:68
vChests
std::vector< Chest > vChests
Definition: Chest.cpp:39
messagebox_corner_y
Image * messagebox_corner_y
Definition: UIPopup.cpp:42
Party::bTurnBasedModeOn
bool bTurnBasedModeOn
Definition: Party.h:305
SummonedItem::field_8_expire_hour
int field_8_expire_hour
Definition: Items.h:585
pViewport
struct Viewport * pViewport
Definition: mm7_data.cpp:21
Party::CountHirelings
void CountHirelings()
Definition: Party.cpp:57
ACTOR_BUFF_HOUR_OF_POWER
@ ACTOR_BUFF_HOUR_OF_POWER
Definition: Actor.h:52
game_ui_player_alert_yellow
Image * game_ui_player_alert_yellow
Definition: UIGame.cpp:109
INPUT_Mapbook
@ INPUT_Mapbook
Definition: Keyboard.h:23
ItemGen::uNumCharges
int uNumCharges
Definition: Items.h:348
MENU_LoadingProcInMainMenu
@ MENU_LoadingProcInMainMenu
Definition: GUIWindow.h:260
CURRENT_SCREEN::SCREEN_CHANGE_LOCATION
@ SCREEN_CHANGE_LOCATION
CURRENT_SCREEN::SCREEN_GAME
@ SCREEN_GAME
IconFrameTable::GetFrame
Icon * GetFrame(unsigned int uIconID, unsigned int frame_time)
Definition: IconFrameTable.cpp:39
PaletteManager::RecalculateAll
void RecalculateAll()
Definition: PaletteManager.cpp:784
PLAYER_SKILL_STEALING
@ PLAYER_SKILL_STEALING
Definition: Player.h:205
UIMSG_PlayerCreationClickReset
@ UIMSG_PlayerCreationClickReset
Definition: GUIWindow.h:53
Party::pHireling1Name
char pHireling1Name[100]
Definition: Party.h:318
game_ui_minimap_compass
Image * game_ui_minimap_compass
Definition: UIGame.cpp:69
UIMSG_OpenVideoOptions
@ UIMSG_OpenVideoOptions
Definition: GUIWindow.h:207
dword_507BF0_is_there_popup_onscreen
int dword_507BF0_is_there_popup_onscreen
Definition: mm7_data.cpp:556
PARTY_BUFF_INVISIBILITY
@ PARTY_BUFF_INVISIBILITY
Definition: Party.h:82
MENU_CREDITSPROC
@ MENU_CREDITSPROC
Definition: GUIWindow.h:259
ITEM_HARPY_FEATHER
@ ITEM_HARPY_FEATHER
Definition: Items.h:107
uint8_t
unsigned __int8 uint8_t
Definition: SDL_config.h:35
PLAYER_SKILL_CHAIN
@ PLAYER_SKILL_CHAIN
Definition: Player.h:181
UIMSG_HiredNPC_CastSpell
@ UIMSG_HiredNPC_CastSpell
Definition: GUIWindow.h:123
papredoll_dbods
Image * papredoll_dbods[5]
Definition: UICharacter.cpp:203
uNumSpriteObjects
size_t uNumSpriteObjects
Definition: SpriteObject.cpp:33
paperdoll_cloak_texture
Image * paperdoll_cloak_texture[4][10]
Definition: UICharacter.cpp:211
UIMSG_ToggleTint
@ UIMSG_ToggleTint
Definition: GUIWindow.h:210
Player::GetOffHandItem
ItemGen * GetOffHandItem()
Definition: Player.cpp:7540
Inventory_ItemPopupAndAlchemy
void Inventory_ItemPopupAndAlchemy()
Definition: UIPopup.cpp:1817
NPCProfession::pJoinText
char * pJoinText
Definition: NPC.h:118
game_ui_tome_calendar
Image * game_ui_tome_calendar
Definition: UIGame.cpp:81
ui_character_inventory_paperdoll_rings_background
Image * ui_character_inventory_paperdoll_rings_background
Definition: UICharacter.cpp:461
Player::GetBaseBuyingPrice
int GetBaseBuyingPrice(int uRealValue, float price_multiplier)
Definition: Player.cpp:445
ACTOR_BUFF_SHIELD
@ ACTOR_BUFF_SHIELD
Definition: Actor.h:53
UIMSG_DebugFullHeal
@ UIMSG_DebugFullHeal
Definition: GUIWindow.h:228
uDialogueType
unsigned int uDialogueType
Definition: mm7_data.cpp:604
DIALOGUE_SKILL_TRAINER
@ DIALOGUE_SKILL_TRAINER
Definition: GUIWindow.h:278
UIMSG_CloseAfterInstallBeacon
@ UIMSG_CloseAfterInstallBeacon
Definition: GUIWindow.h:148
Player::classType
PLAYER_CLASS_TYPE classType
Definition: Player.h:639
Point::y
unsigned int y
Definition: Point.h:8
CURRENT_SCREEN::SCREEN_NPC_DIALOGUE
@ SCREEN_NPC_DIALOGUE
DIALOGUE_ARENA_SELECT_PAGE
@ DIALOGUE_ARENA_SELECT_PAGE
Definition: GUIWindow.h:280
CURRENT_SCREEN::SCREEN_MENU
@ SCREEN_MENU
WINDOW_Options
@ WINDOW_Options
Definition: GUIWindow.h:295
UIMSG_PlayerCreationSelectActiveSkill
@ UIMSG_PlayerCreationSelectActiveSkill
Definition: GUIWindow.h:50
ViewingParams::pPalette
uint16_t pPalette[256]
Definition: Viewport.h:84
Player::GetBaseIntelligence
int GetBaseIntelligence()
Definition: Player.cpp:1037
BLVMapOutlines::pOutlines
BLVMapOutline pOutlines[7000]
Definition: Indoor.h:570
CastSpellInfo::spell_target_pid
int spell_target_pid
Definition: CastSpellInfo.h:30
PLAYER_BUFF_HEROISM
@ PLAYER_BUFF_HEROISM
Definition: Player.h:22
pBtn_Maps
GUIButton * pBtn_Maps
Definition: GUIButton.cpp:58
DIALOGUE_ARENA_REWARD
@ DIALOGUE_ARENA_REWARD
Definition: GUIWindow.h:286
Rect::y
int y
Definition: Rect.h:5
GUIButton::msg_param
unsigned int msg_param
Definition: GUIButton.h:30
UIMSG_80
@ UIMSG_80
Definition: GUIWindow.h:111
Player::GetBaseWillpower
int GetBaseWillpower()
Definition: Player.cpp:1043
CURRENT_SCREEN::SCREEN_1B
@ SCREEN_1B
UIMSG_Wait5Minutes
@ UIMSG_Wait5Minutes
Definition: GUIWindow.h:80
UIMSG_BF
@ UIMSG_BF
Definition: GUIWindow.h:158
game_ui_monster_hp_border_right
Image * game_ui_monster_hp_border_right
Definition: UIGame.cpp:66
WINDOW_GameUI
@ WINDOW_GameUI
Definition: GUIWindow.h:346
Condition_Weak
@ Condition_Weak
Definition: Conditions.h:9
ItemGen::AuraEffectBlue
bool AuraEffectBlue() const
Definition: Items.h:285
papredoll_dlhs
Image * papredoll_dlhs[4]
Definition: UICharacter.cpp:202
ITEM_ELVEN_CHAINMAIL
@ ITEM_ELVEN_CHAINMAIL
Definition: Items.h:186
RightClickPortraitXmax
std::array< __int16, 4 > RightClickPortraitXmax
Definition: mm7_data.cpp:226
ITEM_RELIC_SCHOLARS_CAP
@ ITEM_RELIC_SCHOLARS_CAP
Definition: Items.h:175
UIMSG_Rest8Hour
@ UIMSG_Rest8Hour
Definition: GUIWindow.h:82
WINDOW_MainMenu
@ WINDOW_MainMenu
Definition: GUIWindow.h:292
ACTOR_BUFF_STONED
@ ACTOR_BUFF_STONED
Definition: Actor.h:43
Localization::GetMonthName
const char * GetMonthName(unsigned int index) const
Definition: Localization.h:19
game_ui_rightframe
Image * game_ui_rightframe
Definition: UIGame.cpp:56
UIMSG_CD
@ UIMSG_CD
Definition: GUIWindow.h:173
ANIM_Bored
@ ANIM_Bored
Definition: Actor.h:106
GameUI_DrawFoodAndGold
void GameUI_DrawFoodAndGold()
Definition: UIGame.cpp:1179
SpellBuff::Active
bool Active() const
Definition: Spells.h:162
UIMSG_48
@ UIMSG_48
Definition: GUIWindow.h:58
UIMSG_OnCastTownPortal
@ UIMSG_OnCastTownPortal
Definition: GUIWindow.h:163
pKeyActionMap
struct KeyboardActionMapping * pKeyActionMap
Definition: Keyboard.cpp:35
WINDOW_SaveLoadBtn
@ WINDOW_SaveLoadBtn
Definition: GUIWindow.h:321
UIMSG_OpenAutonotes
@ UIMSG_OpenAutonotes
Definition: GUIWindow.h:169
PLAYER_SKILL_SWORD
@ PLAYER_SKILL_SWORD
Definition: Player.h:172
DIALOGUE_EVT_E
@ DIALOGUE_EVT_E
Definition: GUIWindow.h:274
UIMSG_PlayerCreation_FacePrev
@ UIMSG_PlayerCreation_FacePrev
Definition: GUIWindow.h:138
c
const GLubyte * c
Definition: SDL_opengl_glext.h:11096
Player::GetMajorConditionIdx
unsigned int GetMajorConditionIdx()
Definition: Player.cpp:2614
game_ui_statusbar
Image * game_ui_statusbar
Definition: UIGame.cpp:55
WINDOW_TownPortal
@ WINDOW_TownPortal
Definition: GUIWindow.h:335
v2
GLfloat GLfloat GLfloat v2
Definition: SDL_opengl_glext.h:695
CheckBountyRespawnAndAward
void CheckBountyRespawnAndAward()
Definition: GUIWindow.cpp:1763
game_ui_btn_rest
Image * game_ui_btn_rest
Definition: UIGame.cpp:86
UIMSG_SelectLoadSlot
@ UIMSG_SelectLoadSlot
Definition: GUIWindow.h:132
messagebox_corner_x
Image * messagebox_corner_x
Definition: UIPopup.cpp:41
SpriteFrame
Definition: Sprites.h:39
messagebox_corner_z
Image * messagebox_corner_z
Definition: UIPopup.cpp:43
MENU_CREDITS
@ MENU_CREDITS
Definition: GUIWindow.h:253
UIMSG_TransitionUI_Confirm
@ UIMSG_TransitionUI_Confirm
Definition: GUIWindow.h:198
ITEM_IDENTIFIED
@ ITEM_IDENTIFIED
Definition: Items.h:26
assets
AssetsManager * assets
Definition: AssetsManager.cpp:12
CastSpellInfo::field_6
__int16 field_6
Definition: CastSpellInfo.h:27
pBtn_QuickReference
GUIButton * pBtn_QuickReference
Definition: GUIButton.cpp:53
uint
unsigned int uint
Definition: MM7.h:4
UIMSG_D6
@ UIMSG_D6
Definition: GUIWindow.h:182
ITEM_RARE_SHADOWS_MASK
@ ITEM_RARE_SHADOWS_MASK
Definition: Items.h:197
books_primary_item_per_page
int books_primary_item_per_page
Definition: mm7_data.cpp:521
ui_buttyes2
Image * ui_buttyes2
Definition: GUIWindow.cpp:95
UIMSG_ScrollNPCPanel
@ UIMSG_ScrollNPCPanel
Definition: GUIWindow.h:155
Condition_Poison_Weak
@ Condition_Poison_Weak
Definition: Conditions.h:14
UIMSG_ChangeGameState
@ UIMSG_ChangeGameState
Definition: GUIWindow.h:16
ITEM_ENCHANTMENT_OF_FROST
@ ITEM_ENCHANTMENT_OF_FROST
Definition: Items.h:42
ITEM_BROKEN
@ ITEM_BROKEN
Definition: Items.h:27
uActiveCharacter
unsigned int uActiveCharacter
Definition: mm7_data.cpp:555
UIMSG_Wait1Hour
@ UIMSG_Wait1Hour
Definition: GUIWindow.h:81
v3
GLfloat GLfloat GLfloat GLfloat v3
Definition: SDL_opengl_glext.h:696
Localization::FormatString
String FormatString(unsigned int index,...) const
Definition: Localization.cpp:17
GUIButton::uY
unsigned int uY
Definition: GUIButton.h:22
__debugbreak
void __cdecl __debugbreak(void)
UIMSG_SelectKeyPage2
@ UIMSG_SelectKeyPage2
Definition: GUIWindow.h:203
EQUIP_WAND
@ EQUIP_WAND
Definition: Items.h:239
ITEM_POTION_BOTTLE
@ ITEM_POTION_BOTTLE
Definition: Items.h:120
pPaperdoll_BodyY
int pPaperdoll_BodyY
Definition: UICharacter.cpp:350
DIALOGUE_ARENA_WELCOME
@ DIALOGUE_ARENA_WELCOME
Definition: GUIWindow.h:284
GUIButton::Release
void Release()
Definition: GUIButton.cpp:95
CURRENT_SCREEN::SCREEN_REST
@ SCREEN_REST
DrawSpellDescriptionPopup
void DrawSpellDescriptionPopup(int spell_index)
Definition: UIPopup.cpp:1372
PlayerEquipment::uHelm
unsigned int uHelm
Definition: Player.h:323
BLVFace::Visible
bool Visible() const
Definition: Indoor.h:447
CharacterUI_DrawItem
static void CharacterUI_DrawItem(int x, int y, ItemGen *item, int id)
Definition: UICharacter.cpp:1867
pSkillPointsAttributeDescription
char * pSkillPointsAttributeDescription
Definition: mm7_data.cpp:670
UIMSG_D2
@ UIMSG_D2
Definition: GUIWindow.h:178
pNPCStats
struct NPCStats * pNPCStats
Definition: NPC.cpp:29
PlayerEquipment::uArmor
unsigned int uArmor
Definition: Player.h:322
pPlayerAgeAttributeDescription
char * pPlayerAgeAttributeDescription
Definition: mm7_data.cpp:657
_2devent::fPriceMultiplier
float fPriceMultiplier
Definition: Events2D.h:53
GUIWindow::par1C
unsigned int par1C
Definition: GUIWindow.h:477
lWindowList
std::list< GUIWindow * > lWindowList
Definition: GUIWindow.cpp:79
SpriteObject::sub_42F7EB_DropItemAt
static bool sub_42F7EB_DropItemAt(SPRITE_OBJECT_TYPE sprite, int x, int y, int z, int a4, int count, int a7, unsigned __int16 attributes, ItemGen *a9)
Definition: SpriteObject.cpp:937
ui_leather_mm6
Image * ui_leather_mm6
Definition: GUIWindow.cpp:105
BSPModel::pFaces
std::vector< ODMFace > pFaces
Definition: BSPModel.h:190
_441A4E_overlay_on_portrait
__int16 _441A4E_overlay_on_portrait(int a1)
Definition: UIGame.cpp:2373
ItemGen::AuraEffectGreen
bool AuraEffectGreen() const
Definition: Items.h:288
PLAYER_SKILL_REPAIR
@ PLAYER_SKILL_REPAIR
Definition: Player.h:194
books_page_number
int books_page_number
Definition: mm7_data.cpp:520
UIMSG_DebugBlv2
@ UIMSG_DebugBlv2
Definition: GUIWindow.h:141
UIMSG_ClickInventoryBtn
@ UIMSG_ClickInventoryBtn
Definition: GUIWindow.h:99
GameUI_StatusBar_OnEvent
void GameUI_StatusBar_OnEvent(const String &str, unsigned int num_seconds)
Definition: UIStatusBar.cpp:33
ODMFace
Definition: BSPModel.h:93
MENU_CREDITSCLOSE
@ MENU_CREDITSCLOSE
Definition: GUIWindow.h:262
_4B3FE5_training_dialogue
void _4B3FE5_training_dialogue(int a4)
Definition: GUIWindow.cpp:1673
Localization::GetNpcProfessionName
const char * GetNpcProfessionName(unsigned int index) const
Definition: Localization.h:83
ui_character_header_text_color
unsigned int ui_character_header_text_color
Definition: UICharacter.cpp:45
ItemsTable::pEnchantments
ItemEnchantment pEnchantments[24]
Definition: Items.h:461
Player::IsDead
bool IsDead() const
Definition: Player.cpp:7416
game_ui_player_faces
std::array< std::array< Image *, 56 >, 4 > game_ui_player_faces
Definition: UIGame.cpp:104
BSPModel::vBoundingCenter
Vec3_int_ vBoundingCenter
Definition: BSPModel.h:186
ptr_507BA4
GUIButton * ptr_507BA4
Definition: GUIButton.cpp:72
Party::SetHoldingItem
void SetHoldingItem(ItemGen *pItem)
Definition: Party.cpp:150
UIMSG_DebugFarClip
@ UIMSG_DebugFarClip
Definition: GUIWindow.h:220
Player::sHealth
int sHealth
Definition: Player.h:766
SPEECH_8
@ SPEECH_8
Definition: Player.h:54
Image::GetPixels
const void * GetPixels(IMAGE_FORMAT format)
Definition: Image.cpp:270
UIMSG_ShowStatus_Food
@ UIMSG_ShowStatus_Food
Definition: GUIWindow.h:84
WINDOW_CharacterWindow_Stats
@ WINDOW_CharacterWindow_Stats
Definition: GUIWindow.h:327
CURRENT_SCREEN::SCREEN_MODAL_WINDOW
@ SCREEN_MODAL_WINDOW
Condition_Good
@ Condition_Good
Definition: Conditions.h:26
WINDOW_Credits
@ WINDOW_Credits
Definition: GUIWindow.h:347
game_ui_player_alert_red
Image * game_ui_player_alert_red
Definition: UIGame.cpp:110
Condition_Unconcious
@ Condition_Unconcious
Definition: Conditions.h:21
Party::TorchlightActive
bool TorchlightActive()
Definition: Party.h:199
UIAnimation::y
int16_t y
Definition: IconFrameTable.h:77
stru_5C6E00
struct stru193_math * stru_5C6E00
Definition: mm7_data.cpp:19
UIMSG_MMT_MainMenu_MM7
@ UIMSG_MMT_MainMenu_MM7
Definition: GUIWindow.h:214
SpellInfo::pShortName
char * pShortName
Definition: Spells.h:177
GUIWindow::ptr_1C
void * ptr_1C
Definition: GUIWindow.h:476
pAttackBonusAttributeDescription
char * pAttackBonusAttributeDescription
Definition: mm7_data.cpp:660
EQUIP_GAUNTLETS
@ EQUIP_GAUNTLETS
Definition: Items.h:235
ITEM_ENCHANTMENT_OF_SPARKS
@ ITEM_ENCHANTMENT_OF_SPARKS
Definition: Items.h:44
ItemSpecialEnchantment::pBonusStatement
char * pBonusStatement
Definition: Items.h:431
EQUIP_RING
@ EQUIP_RING
Definition: Items.h:237
ViewingParams::bRedrawGameUI
int bRedrawGameUI
Definition: Viewport.h:74
UIMSG_Attack
@ UIMSG_Attack
Definition: GUIWindow.h:27
Player::GetPriceIdentification
int GetPriceIdentification(float price_multiplier)
Definition: Player.cpp:407
pCharacterScreen_DetalizBtn
GUIButton * pCharacterScreen_DetalizBtn
Definition: GUIButton.cpp:47
dword_50698C_uX
int dword_50698C_uX
Definition: mm7_data.cpp:539
IndoorLocation::pVertices
struct Vec3_short_ * pVertices
Definition: Indoor.h:628
AssetsManager::GetImage_Alpha
Texture * GetImage_Alpha(const String &name)
Definition: AssetsManager.cpp:66
UIMSG_7A
@ UIMSG_7A
Definition: GUIWindow.h:105
pPaperdoll_SecondLeftHand
const int pPaperdoll_SecondLeftHand[4][2]
Definition: UICharacter.cpp:339
PARTY_BUFF_DETECT_LIFE
@ PARTY_BUFF_DETECT_LIFE
Definition: Party.h:74
ACTOR_BUFF_SUMMONED
@ ACTOR_BUFF_SUMMONED
Definition: Actor.h:40
pPlayerLevelAttributeDescription
char * pPlayerLevelAttributeDescription
Definition: mm7_data.cpp:658
UIMSG_Game_Action
@ UIMSG_Game_Action
Definition: GUIWindow.h:193
NPCProfession::pBenefits
char * pBenefits
Definition: NPC.h:116
dword_506980_uW
int dword_506980_uW
Definition: mm7_data.cpp:536
Player::GetArmorItem
ItemGen * GetArmorItem()
Definition: Player.cpp:7548
EventProcessor
void EventProcessor(int uEventID, int targetObj, int canShowMessages, int entry_line)
Definition: Events.cpp:260
Actor::uCurrentActionLength
uint16_t uCurrentActionLength
Definition: Actor.h:303
UIMSG_F
@ UIMSG_F
Definition: GUIWindow.h:23
ITEM_POTION_CURE_INSANITY
@ ITEM_POTION_CURE_INSANITY
Definition: Items.h:130
Mouse::SetCursorImage
void SetCursorImage(const String &name)
Definition: Mouse.cpp:38
uCurrentlyLoadedLevelType
LEVEL_TYPE uCurrentlyLoadedLevelType
Definition: Indoor.cpp:52
UIMSG_ChangeKeyButton
@ UIMSG_ChangeKeyButton
Definition: GUIWindow.h:205
UIMSG_ToggleBloodsplats
@ UIMSG_ToggleBloodsplats
Definition: GUIWindow.h:208
Player::GetBaseSellingPrice
int GetBaseSellingPrice(int uRealValue, float price_multiplier)
Definition: Player.cpp:435
DIALOGUE_EVT_F
@ DIALOGUE_EVT_F
Definition: GUIWindow.h:275
MonsterInfo::pName
char * pName
Definition: Monsters.h:120
game_ui_tome_storyline
Image * game_ui_tome_storyline
Definition: UIGame.cpp:80
UIMSG_DebugSeasonsChange
@ UIMSG_DebugSeasonsChange
Definition: GUIWindow.h:221
PLAYER_SKILL_DARK
@ PLAYER_SKILL_DARK
Definition: Player.h:191
ItemGen::UpdateTempBonus
void UpdateTempBonus(GameTime time)
Definition: Items.cpp:146
UIMSG_ClickBooksBtn
@ UIMSG_ClickBooksBtn
Definition: GUIWindow.h:57
ITEM_POTION_REJUVENATION
@ ITEM_POTION_REJUVENATION
Definition: Items.h:138
CURRENT_SCREEN::SCREEN_KEYBOARD_OPTIONS
@ SCREEN_KEYBOARD_OPTIONS
_50C9D8_AfterEnchClickEventTimeout
int _50C9D8_AfterEnchClickEventTimeout
Definition: mm7_data.cpp:582
MENU_STATE_to_string
const wchar_t * MENU_STATE_to_string(MENU_STATE m)
Definition: GUIWindow.cpp:108
pPrimaryWindow
GUIWindow * pPrimaryWindow
Definition: GUIWindow.cpp:48
ACTOR_BUFF_STONESKIN
@ ACTOR_BUFF_STONESKIN
Definition: Actor.h:54
PLAYER_SKILL_BODY
@ PLAYER_SKILL_BODY
Definition: Player.h:189
IndoorLocation::pFaces
struct BLVFace * pFaces
Definition: Indoor.h:630
PLAYER_SKILL_MERCHANT
@ PLAYER_SKILL_MERCHANT
Definition: Player.h:193
ACTOR_BUFF_BLESS
@ ACTOR_BUFF_BLESS
Definition: Actor.h:55
pUIAnim_WizardEye
UIAnimation * pUIAnim_WizardEye
Definition: Party.cpp:49
CheckHiredNPCSpeciality
bool CheckHiredNPCSpeciality(unsigned int uProfession)
Definition: NPC.cpp:754
pWaterResistanceAttributeDescription
char * pWaterResistanceAttributeDescription
Definition: mm7_data.cpp:666
WINDOW_CharacterWindow_Awards
@ WINDOW_CharacterWindow_Awards
Definition: GUIWindow.h:329
WetsuitOn
void WetsuitOn(unsigned int uPlayerID)
Definition: UICharacter.cpp:2643
papredoll_flying_feet
Image * papredoll_flying_feet[22]
Definition: UICharacter.cpp:208
GUIWindow::uFrameX
unsigned int uFrameX
Definition: GUIWindow.h:468
ObjectList::pObjects
struct ObjectDesc * pObjects
Definition: ObjectList.h:54
pFireResistanceAttributeDescription
char * pFireResistanceAttributeDescription
Definition: mm7_data.cpp:664
DIALOGUE_EVT_A
@ DIALOGUE_EVT_A
Definition: GUIWindow.h:270
GUIWindow::_41D73D_draw_buff_tooltip
void _41D73D_draw_buff_tooltip()
Definition: GUIWindow.cpp:235
GUIWindow::sHint
String sHint
Definition: GUIWindow.h:488
pAudioPlayer
AudioPlayer * pAudioPlayer
Definition: AudioPlayer.cpp:20
paperdoll_boots_texture
Image * paperdoll_boots_texture[4][6]
Definition: UICharacter.cpp:209
Condition_Disease_Severe
@ Condition_Disease_Severe
Definition: Conditions.h:19
GameUI_CharacterQuickRecord_Draw
void GameUI_CharacterQuickRecord_Draw(GUIWindow *window, Player *player)
Definition: UIGame.cpp:1057
UIMSG_DebugPortalLines
@ UIMSG_DebugPortalLines
Definition: GUIWindow.h:224
Localization::GetClassName
const char * GetClassName(unsigned int index) const
Definition: Localization.h:35
v0
GLfloat v0
Definition: SDL_opengl_glext.h:693
SpellInfo::pDescription
char * pDescription
Definition: Spells.h:178
Condition_Eradicated
@ Condition_Eradicated
Definition: Conditions.h:24
pBtn_NPCRight
GUIButton * pBtn_NPCRight
Definition: GUIButton.cpp:50
BSPModel
Definition: BSPModel.h:163
UIMSG_ToggleWalkSound
@ UIMSG_ToggleWalkSound
Definition: GUIWindow.h:152
_50C9D4_AfterEnchClickEventSecondParam
int _50C9D4_AfterEnchClickEventSecondParam
Definition: mm7_data.cpp:581
_4B254D_SkillMasteryTeacher
String _4B254D_SkillMasteryTeacher(int trainerInfo)
Definition: GUIWindow.cpp:1846
Point
Definition: Point.h:3
ItemGen
Definition: Items.h:263
ItemGen::GetValue
unsigned int GetValue()
Definition: Items.cpp:588
ITEM_LICH_JAR_FULL
@ ITEM_LICH_JAR_FULL
Definition: Items.h:206
paperdoll_cloak_collar_texture
Image * paperdoll_cloak_collar_texture[4][10]
Definition: UICharacter.cpp:210
pBtn_ZoomIn
GUIButton * pBtn_ZoomIn
Definition: mm7_data.cpp:551
pMessageQueue_50CBD0
struct GUIMessageQueue * pMessageQueue_50CBD0
Definition: GUIWindow.cpp:86
logger
Log * logger
Definition: IocContainer.cpp:47
pPartySpellbuffsUI_smthns
std::array< unsigned __int8, 14 > pPartySpellbuffsUI_smthns
Definition: mm7_data.cpp:279
ui_buttdesc2
Image * ui_buttdesc2
Definition: GUIWindow.cpp:94
ITEM_POTION_MIGHT_BOOST
@ ITEM_POTION_MIGHT_BOOST
Definition: Items.h:131
PlayerSpeech
PlayerSpeech
Definition: Player.h:46
PLAYER_BUFF_HAMMERHANDS
@ PLAYER_BUFF_HAMMERHANDS
Definition: Player.h:20
SPRITE_SPELL_FIRE_FIREBALL_IMPACT
@ SPRITE_SPELL_FIRE_FIREBALL_IMPACT
Definition: SpriteObject.h:49
Player::GetBuyingPrice
int GetBuyingPrice(unsigned int uRealValue, float price_multiplier)
Definition: Player.cpp:396
ACTOR_BUFF_PAIN_HAMMERHANDS
@ ACTOR_BUFF_PAIN_HAMMERHANDS
Definition: Actor.h:59
PLAYER_SKILL_ARMSMASTER
@ PLAYER_SKILL_ARMSMASTER
Definition: Player.h:204
Condition_Pertified
@ Condition_Pertified
Definition: Conditions.h:23
pAwards
std::array< Award, 105 > pAwards
Definition: mm7_data.cpp:26
pDialogueWindow
GUIWindow * pDialogueWindow
Definition: GUIWindow.cpp:50
PartyTimeStruct::_s_times
std::array< GameTime, 20 > _s_times
Definition: Party.h:147
full_num_items_in_book
int full_num_items_in_book
Definition: mm7_data.cpp:29
Condition_Drunk
@ Condition_Drunk
Definition: Conditions.h:12
WINDOW_50
@ WINDOW_50
Definition: GUIWindow.h:315
pBtn_Up
GUIButton * pBtn_Up
Definition: GUIButton.cpp:70
UIMSG_HintTownPortal
@ UIMSG_HintTownPortal
Definition: GUIWindow.h:149
BLVMapOutline::uVertex2ID
uint16_t uVertex2ID
Definition: Indoor.h:414
ItemGen::m_enchantmentStrength
int m_enchantmentStrength
Definition: Items.h:328
Color16
uint16_t Color16(uint32_t r, uint32_t g, uint32_t b)
Definition: Engine.cpp:148
paperdoll_helm_texture
Image * paperdoll_helm_texture[2][16]
Definition: UICharacter.cpp:212
pOutdoor
OutdoorLocation * pOutdoor
Definition: Outdoor.cpp:48
ITEM_REAGENT_CRUSHED_ROSE_PETALS
@ ITEM_REAGENT_CRUSHED_ROSE_PETALS
Definition: Items.h:101
pFontLucida
GUIFont * pFontLucida
Definition: GUIFont.cpp:19
_50C9A8_item_enchantment_timer
int _50C9A8_item_enchantment_timer
Definition: mm7_data.cpp:579
ACTOR_BUFF_BERSERK
@ ACTOR_BUFF_BERSERK
Definition: Actor.h:47
GetMapBookHintText
const char * GetMapBookHintText(int mouse_x, int mouse_y)
Definition: MapBook.cpp:337
pBtn_CastSpell
GUIButton * pBtn_CastSpell
Definition: GUIButton.cpp:54
CHARACTER_EXPRESSION_21
@ CHARACTER_EXPRESSION_21
Definition: Player.h:363
ShowPopupShopItem
void ShowPopupShopItem()
Definition: UIShops.cpp:1344
ItemsTable::potion_data
unsigned __int16 potion_data[50][50]
Definition: Items.h:468
ITEM_RELIC_TALEDONS_HELM
@ ITEM_RELIC_TALEDONS_HELM
Definition: Items.h:174
_A750D8_player_speech_timer
int64_t _A750D8_player_speech_timer
Definition: mm7_data.cpp:763
game_ui_monster_hp_red
Image * game_ui_monster_hp_red
Definition: UIGame.cpp:63
Actor::uCurrentActionAnimation
uint16_t uCurrentActionAnimation
Definition: Actor.h:308
WINDOW_SpellBook
@ WINDOW_SpellBook
Definition: GUIWindow.h:303
pMouse
Mouse * pMouse
Definition: UIPopup.cpp:38
Party::uCurrentYear
unsigned int uCurrentYear
Definition: Party.h:271
CURRENT_SCREEN::SCREEN_VIDEO_OPTIONS
@ SCREEN_VIDEO_OPTIONS
VAR_PlayerItemInHands
@ VAR_PlayerItemInHands
Definition: Events.h:144
pHealthBarPos
std::array< unsigned int, 4 > pHealthBarPos
Definition: mm7_data.cpp:228
pBtn_History
GUIButton * pBtn_History
Definition: GUIButton.cpp:56
NPCHireableDialogPrepare
void NPCHireableDialogPrepare()
Definition: NPC.cpp:1080
format_4E2D80
const char * format_4E2D80
Definition: mm7_data.cpp:240
byte_4E5DD8
std::array< unsigned char, 14 > byte_4E5DD8
Definition: mm7_data.cpp:273
CURRENT_SCREEN::SCREEN_67
@ SCREEN_67
PLAYER_BUFF_HASTE
@ PLAYER_BUFF_HASTE
Definition: Player.h:21
monster_popup_y_offsets
std::array< char, 88 > monster_popup_y_offsets
Definition: mm7_data.cpp:231
papredoll_dlads
Image * papredoll_dlads[4]
Definition: UICharacter.cpp:207
BLVMapOutline::uVertex1ID
uint16_t uVertex1ID
Definition: Indoor.h:413
WINDOW_CalendarBook
@ WINDOW_CalendarBook
Definition: GUIWindow.h:339
Actor::pMonsterInfo
struct MonsterInfo pMonsterInfo
Definition: Actor.h:292
ui_ar_dn_up
Image * ui_ar_dn_up
Definition: GUIWindow.cpp:101
Player::uQuickSpell
unsigned __int8 uQuickSpell
Definition: Player.h:774
SpellInfo::pBasicSkillDesc
char * pBasicSkillDesc
Definition: Spells.h:179
pGUIWindow_CastTargetedSpell
GUIWindow * pGUIWindow_CastTargetedSpell
Definition: GUIWindow.cpp:56
StringPrintf
String StringPrintf(const char *fmt,...)
Definition: Strings.cpp:9
Viewport::uViewportTL_X
int uViewportTL_X
Definition: Viewport.h:22
game_ui_monster_hp_border_left
Image * game_ui_monster_hp_border_left
Definition: UIGame.cpp:65
Player::ProfessionOrGuildFlagsCorrect
bool ProfessionOrGuildFlagsCorrect(unsigned int uClass, int a3)
Definition: Player.cpp:7964
NPCData::uSex
unsigned int uSex
Definition: NPC.h:99
Player::pEquipment
PlayerEquipment pEquipment
Definition: Player.h:769
uint32_t
unsigned __int32 uint32_t
Definition: SDL_config.h:39
WINDOW_CharactersPressedButton
@ WINDOW_CharactersPressedButton
Definition: GUIWindow.h:318
pPaperdoll_BodyX
int pPaperdoll_BodyX
Definition: UICharacter.cpp:349
ui_character_inventory_background_strip
Image * ui_character_inventory_background_strip
Definition: UICharacter.cpp:458
UIMSG_OpenMapBook
@ UIMSG_OpenMapBook
Definition: GUIWindow.h:170
Party::WizardEyeSkillLevel
int WizardEyeSkillLevel()
Definition: Party.h:196
pAirResistanceAttributeDescription
char * pAirResistanceAttributeDescription
Definition: mm7_data.cpp:665
Party::sRotationY
int sRotationY
Definition: Party.h:251
PLAYER_BUFF_PRESERVATION
@ PLAYER_BUFF_PRESERVATION
Definition: Player.h:25
papredoll_dlaus
Image * papredoll_dlaus[5]
Definition: UICharacter.cpp:206
stru262_TurnBased::turn_stage
int turn_stage
Definition: TurnEngine.h:75
VAR_AutoNotes
@ VAR_AutoNotes
Definition: Events.h:254
EQUIP_BOOTS
@ EQUIP_BOOTS
Definition: Items.h:236
UIMSG_GameMenu_ReturnToGame
@ UIMSG_GameMenu_ReturnToGame
Definition: GUIWindow.h:106
SPEECH_85
@ SPEECH_85
Definition: Player.h:131
UIMSG_MMT_MainMenu_MM8
@ UIMSG_MMT_MainMenu_MM8
Definition: GUIWindow.h:215
UIMSG_DebugSpecialItem
@ UIMSG_DebugSpecialItem
Definition: GUIWindow.h:218
String
std::string String
Definition: Strings.h:10
UIMSG_C1
@ UIMSG_C1
Definition: GUIWindow.h:160
byte_4ED970_skill_learn_ability_by_class_table
std::array< std::array< char, 37 >, 36 > byte_4ED970_skill_learn_ability_by_class_table
Definition: mm7_data.cpp:425
set_default_ui_skin
void set_default_ui_skin()
Definition: UICharacter.cpp:102
pChestWindow
GUIWindow * pChestWindow
Definition: GUIWindow.cpp:49
ITEM_DEVIL_ICHOR
@ ITEM_DEVIL_ICHOR
Definition: Items.h:114
bountyHunting_text
const char * bountyHunting_text
Definition: mm7_data.cpp:771
UIMSG_StartHireling1Dialogue
@ UIMSG_StartHireling1Dialogue
Definition: GUIWindow.h:116
DIALOGUE_USE_NPC_ABILITY
@ DIALOGUE_USE_NPC_ABILITY
Definition: GUIWindow.h:267
UIMSG_SelectNPCDialogueOption
@ UIMSG_SelectNPCDialogueOption
Definition: GUIWindow.h:118
pEventTimer
Timer * pEventTimer
Definition: Time.cpp:8
ITEM_ARTIFACT_GOVERNORS_ARMOR
@ ITEM_ARTIFACT_GOVERNORS_ARMOR
Definition: Items.h:157
BLVFace::uAttributes
unsigned int uAttributes
Definition: Indoor.h:475
Player::GetBaseEndurance
int GetBaseEndurance()
Definition: Player.cpp:1048
UIMSG_PlayerCreation_VoicePrev
@ UIMSG_PlayerCreation_VoicePrev
Definition: GUIWindow.h:124
game_ui_playerbuff_preservation
Image * game_ui_playerbuff_preservation
Definition: UIGame.cpp:120
ITEM_92
@ ITEM_92
Definition: Items.h:88
GameTime
Definition: Time.h:14
UIMSG_DebugTurboSpeed
@ UIMSG_DebugTurboSpeed
Definition: GUIWindow.h:232
Actor::DrawHealthBar
static void DrawHealthBar(Actor *actor, GUIWindow *window)
Definition: Actor.cpp:67
_591428_endcap
Image * _591428_endcap
Definition: UIHouses.cpp:52
Party::monster_for_hunting_killed
std::array< __int16, 5 > monster_for_hunting_killed
Definition: Party.h:289
Player::GetPriceSell
int GetPriceSell(ItemGen itemx, float price_multiplier)
Definition: Player.cpp:380
Player::pPlayerBuffs
std::array< SpellBuff, 24 > pPlayerBuffs
Definition: Player.h:756
WINDOW_CharacterWindow_Skills
@ WINDOW_CharacterWindow_Skills
Definition: GUIWindow.h:328
paperdoll_dbrds
std::array< Image *, 16 > paperdoll_dbrds
Definition: UICharacter.cpp:464
ushort
unsigned short ushort
Definition: MM7.h:45
Party::GetGold
int GetGold() const
Definition: Party.cpp:264
UIMSG_ClickStatsBtn
@ UIMSG_ClickStatsBtn
Definition: GUIWindow.h:98
UIMSG_ClickPaperdoll
@ UIMSG_ClickPaperdoll
Definition: GUIWindow.h:115
Player::GetBootItem
ItemGen * GetBootItem()
Definition: Player.cpp:7558
ITEM_REAGENT_WIDOWSWEEP_BERRIES
@ ITEM_REAGENT_WIDOWSWEEP_BERRIES
Definition: Items.h:100
Player::GetGloveItem
ItemGen * GetGloveItem()
Definition: Player.cpp:7556
pEarthResistanceAttributeDescription
char * pEarthResistanceAttributeDescription
Definition: mm7_data.cpp:667
ITEM_REAGENT_PHILOSOPHERS_STONE
@ ITEM_REAGENT_PHILOSOPHERS_STONE
Definition: Items.h:119
ITEM_TROLL_RUBY
@ ITEM_TROLL_RUBY
Definition: Items.h:103
Mouse::RemoveHoldingItem
void RemoveHoldingItem()
Definition: Mouse.cpp:25
UIMSG_OpenSpellbookPage
@ UIMSG_OpenSpellbookPage
Definition: GUIWindow.h:72
UIMSG_C6
@ UIMSG_C6
Definition: GUIWindow.h:166
pObjectList
struct ObjectList * pObjectList
Definition: ObjectList.cpp:5
WINDOW_ExitCharacterWindow
@ WINDOW_ExitCharacterWindow
Definition: GUIWindow.h:324
WINDOW_CharacterRecord
@ WINDOW_CharacterRecord
Definition: GUIWindow.h:294
Party::WaterWalkActive
bool WaterWalkActive()
Definition: Party.h:205
pFontSmallnum
GUIFont * pFontSmallnum
Definition: GUIFont.cpp:25
UIMSG_ClickZoomOutBtn
@ UIMSG_ClickZoomOutBtn
Definition: GUIWindow.h:190
Party::monster_id_for_hunting
std::array< __int16, 5 > monster_id_for_hunting
Definition: Party.h:288
GameTime::FromSeconds
static GameTime FromSeconds(int seconds)
Definition: Time.h:83
ItemsTable::pItems
NZIArray< ItemDesc, 800 > pItems
Definition: Items.h:460
DIALOGUE_EVT_C
@ DIALOGUE_EVT_C
Definition: GUIWindow.h:272
OracleDialogue
void OracleDialogue()
Definition: GUIWindow.cpp:1693
SpellInfo::pGrandmasterSkillDesc
char * pGrandmasterSkillDesc
Definition: Spells.h:182
pMouse
static Mouse * pMouse
Definition: UICharacter.cpp:32
Condition_Disease_Medium
@ Condition_Disease_Medium
Definition: Conditions.h:17
Localization::GetSkillDescriptionMaster
const char * GetSkillDescriptionMaster(unsigned int index) const
Definition: Localization.h:67
UIMSG_32
@ UIMSG_32
Definition: GUIWindow.h:36
sDialogue_SpeakingActorNPC_ID
int sDialogue_SpeakingActorNPC_ID
Definition: mm7_data.cpp:605
UIMSG_CE
@ UIMSG_CE
Definition: GUIWindow.h:174
CURRENT_SCREEN::SCREEN_VIDEO
@ SCREEN_VIDEO
CURRENT_SCREEN::SCREEN_63
@ SCREEN_63
stat_string_coord
std::array< stat_coord, 26 > stat_string_coord
Definition: mm7_data.cpp:173
dialogue_ui_x_ok_u
Image * dialogue_ui_x_ok_u
Definition: GUIWindow.cpp:91
WINDOW_SaveLoadButtons
@ WINDOW_SaveLoadButtons
Definition: GUIWindow.h:307
SpellInfo::pMasterSkillDesc
char * pMasterSkillDesc
Definition: Spells.h:181
GUIButton::uButtonType
int uButtonType
Definition: GUIButton.h:27
pPartySpellbuffsUI_XYs
std::array< std::array< int, 2 >, 14 > pPartySpellbuffsUI_XYs
Definition: mm7_data.cpp:257
UIMSG_DebugNoDamage
@ UIMSG_DebugNoDamage
Definition: GUIWindow.h:227
paperdoll_Helm
const int paperdoll_Helm[4][16][2]
Definition: UICharacter.cpp:317
DIALOGUE_84
@ DIALOGUE_84
Definition: GUIWindow.h:279
BLVFace::uFaceExtraID
uint16_t uFaceExtraID
Definition: Indoor.h:482
MENU_CREATEPARTY
@ MENU_CREATEPARTY
Definition: GUIWindow.h:257
SPEECH_7
@ SPEECH_7
Definition: Player.h:53
GameUI_GetMinimapHintText
String GameUI_GetMinimapHintText()
Definition: UIGame.cpp:1001
Condition_Sleep
@ Condition_Sleep
Definition: Conditions.h:10
ui_character_inventory_background
Image * ui_character_inventory_background
Definition: UICharacter.cpp:457
CURRENT_SCREEN::SCREEN_CHEST_INVENTORY
@ SCREEN_CHEST_INVENTORY
PLAYER_SKILL_PLATE
@ PLAYER_SKILL_PLATE
Definition: Player.h:182
ACTOR_BUFF_ENSLAVED
@ ACTOR_BUFF_ENSLAVED
Definition: Actor.h:50
CURRENT_SCREEN::SCREEN_64
@ SCREEN_64
game_ui_bar_yellow
Image * game_ui_bar_yellow
Definition: UIGame.cpp:114
pPaperdoll_RightHand
const int pPaperdoll_RightHand[4][2]
Definition: UICharacter.cpp:342
render
std::shared_ptr< IRender > render
Definition: RenderOpenGL.cpp:52
ITEM_ARTIFACT_PUCK
@ ITEM_ARTIFACT_PUCK
Definition: Items.h:153