World of Might and Magic
0.2.0
Open reimplementation of Might and Magic 6 7 8 game engine
|
См. документацию.
145 return (
a << 24) | (
r << 16) | (
g << 8) |
b;
149 return (
b >> (8 - 5)) | 0x7E0 & (
g << (6 + 5 - 8)) |
150 0xF800 & (
r << (6 + 5 + 5 - 8));
154 return access(fname, 0) != -1;
158 engine->ResetCursor_Palettes_LODs_Level_Audio_SFT_Windows();
215 render->hd_water_current_frame = floorf(
v2 + 0.5
f);
228 render->DrawBillboards_And_MaybeRenderSpecialEffects_And_EndScene();
253 render->ResetUIClipRect();
278 if (!(
config->renderer_name ==
"OpenGL")) {
306 static bool render_framerate =
false;
307 static float framerate = 0.0f;
308 static uint frames_this_second = 0;
310 static uint framerate_time_elapsed = 0;
319 framerate_time_elapsed += frame_dt;
320 if (framerate_time_elapsed >= 1000) {
321 framerate = frames_this_second * (1000.0f / framerate_time_elapsed);
323 framerate_time_elapsed = 0;
324 frames_this_second = 0;
325 render_framerate =
true;
328 ++frames_this_second;
330 if (
engine->config->show_fps) {
331 if (render_framerate) {
337 int debug_info_offset = 0;
363 "BLV_GetFloorLevel: %d face_id %d\n", floor_level, uFaceID);
365 bool on_water =
false;
369 0, &on_water, &_a6,
false);
371 "ODM_GetFloorLevel: %d on_water: %s a6 = %d\n",
372 floor_level, on_water ?
"true" :
"false", _a6);
375 Color16(255, 255, 255), floor_level_str, 0, 0,
416 if (
config->IsTargetingMode()) {
435 if (
engine->config->DrawBlvDebugs())
449 engine->SetForceRedraw(
true);
452 engine->SetForceRedraw(
true);
469 if (
engine->CanSaturateFaces() && pFace->
uAttributes & FACE_CAN_SATURATE_COLOR) {
501 if (
engine->config->debug_lightmaps_decals) {
531 if (floorf(a3a + 0.5
f) >= 0) {
535 v6 = floorf(a3b + 0.5
f);
543 if (floorf(a4a + 0.5
f) >= 0) {
581 if (floorf(v12 + 0.5
f) >= 0) {
585 v6 = floorf(v13 + 0.5
f);
592 if (floorf(v14 + 0.5
f) >= 0) {
663 unsigned int uMouseY,
bool bOutline,
680 vis->
PickMouse(fPickDepth, uMouseX, uMouseY, sprite_filter, face_filter);
726 log->
Warning(L
"Sprite outline currently unsupported");
733 if (
face->uAttributes & FACE_OUTLINED)
734 face->uAttributes &= ~FACE_OUTLINED;
736 face->uAttributes |= FACE_OUTLINED;
739 if (
face->uAttributes & FACE_OUTLINED)
740 face->uAttributes &= ~FACE_OUTLINED;
742 face->uAttributes |= FACE_OUTLINED;
750 "Undefined CObjectInfo type requested in "
751 "CGame::outline_selection()");
789 engine->ResetCursor_Palettes_LODs_Level_Audio_SFT_Windows();
801 engine->ResetCursor_Palettes_LODs_Level_Audio_SFT_Windows();
807 v3 = strtok(Str1,
".");
816 for (
uint i = 0; i < 1000; ++i)
826 if (_stricmp(Str1,
"blv"))
831 engine->_461103_load_level_sub();
837 pActors[i].pMonsterInfo.uTreasureType = 0;
838 pActors[i].pMonsterInfo.uTreasureDiceRolls = 0;
839 pActors[i].pMonsterInfo.uExp = 0;
845 memset(&
render->pBillboardRenderListD3D, 0,
846 sizeof(
render->pBillboardRenderListD3D));
873 Error(
"Some files are missing\n\nPlease Reinstall.");
880 StringPrintf(
"%s\\data\\events.lod", mm7_path).c_str(),
"icons")) {
881 Error(
"Some files are missing\n\nPlease Reinstall.");
887 StringPrintf(
"%s\\data\\bitmaps.lod", mm7_path).c_str(),
919 "Might and Magic® Trilogy",
920 render->config->render_width,
921 render->config->render_height);
975 *tiles_mm8 =
nullptr;
1006 *decs_mm8 =
nullptr;
1017 *objs_mm8 =
nullptr;
1028 *mons_mm8 =
nullptr;
1039 *chests_mm8 =
nullptr;
1050 *overlays_mm8 =
nullptr;
1061 *sounds_mm8 =
nullptr;
1105 if (!
engine->config->NoSound())
1108 for (
uint i = 0; i < 4; ++i) {
1109 static const char *pUIAnimNames[4] = {
"glow03",
"glow05",
"torchA",
1111 static unsigned short _4E98D0[4][4] = {
1112 {479, 0, 329, 0}, {585, 0, 332, 0}, {468, 0, 0, 0}, {606, 0, 0, 0}};
1130 for (
uint i = 0; i < 7; ++i) {
1131 char container_name[64];
1132 sprintf(container_name,
"HDWTR%03u", i);
1133 render->pHDWaterBitmapIDs[i] =
1153 bool mm7_installation_found =
false;
1156 if (!mm7_installation_found) {
1157 if (
const char *
path = std::getenv(
"WOMM_PATH_OVERRIDE")) {
1158 strcpy(mm7_path,
path);
1159 mm7_installation_found =
true;
1160 logger->
Info(L
"MM7 Custom Folder (ENV path override)");
1165 if (!mm7_installation_found) {
1167 "HKEY_LOCAL_MACHINE/SOFTWARE/New World Computing/Might and Magic VII/1.0/AppPath",
1170 if (mm7_installation_found) {
1171 logger->
Info(L
"Standard MM7 installation found");
1176 if (!mm7_installation_found) {
1178 "HKEY_LOCAL_MACHINE/SOFTWARE/GOG.com/GOGMM7/PATH",
1181 if (mm7_installation_found) {
1187 if (!mm7_installation_found) {
1189 "HKEY_LOCAL_MACHINE/SOFTWARE/WOW6432Node/GOG.com/Games/1207658916/Path",
1192 if (mm7_installation_found) {
1193 logger->
Info(L
"GoG MM7 2018 build installation found");
1198 if (!mm7_installation_found) {
1200 mm7_installation_found = 1;
1201 strcpy(mm7_path,
"E:/Programs/GOG Galaxy/Games/Might and Magic 7");
1202 logger->
Info(L
"Hack Path MM7 installation found");
1210 char mm7_path[2048];
1231 char pDefaultGroundTexture[16];
1262 sprintf(pDefaultGroundTexture,
"%s",
"dirt");
1276 if (strlen(pDefaultGroundTexture)) {
1278 if (pDefaultGroundTexture[v4] ==
' ') pDefaultGroundTexture[v4] = 0;
1280 }
while (v4 < strlen(pDefaultGroundTexture));
1378 if (
engine->config->no_actors)
1397 if (
pActors[i].pMonsterInfo.uID >= 115 &&
1398 pActors[i].pMonsterInfo.uID <= 186 ||
1399 pActors[i].pMonsterInfo.uID >= 232 &&
1400 pActors[i].pMonsterInfo.uID <= 249)
1403 v4 = (
pActors[i].pMonsterInfo.uID - 1) % 3;
1412 if (
pActors[i].sNPC_ID > 0 &&
pActors[i].sNPC_ID < 5000)
continue;
1416 pActors[i].pMonsterInfo.uID, 0, v19);
1440 for (v8 = 0; v8 < v6; ++v8) {
1441 if (v21[v8] ==
pActors[i].pMonsterInfo.uID - 1)
break;
1445 v21[v6++] =
pActors[i].pMonsterInfo.uID - 1;
1447 if (v6 == 16)
break;
1457 if (
engine->config->NoActors())
1459 if (
engine->config->NoDecorations())
1482 sprintf(icon_name,
"turn%u", i);
1501 int v0 = ~(
unsigned char)
engine->config->flags2 & GAME_FLAGS_2_ALTER_GRAVITY;
1503 return (
unsigned int)
v0 >> 1;
1516 const String &filename) {
1519 if (extra->sCogNumber == uFaceCog) {
1527 const String &filename) {
1530 if (
face.sCogNumber == uFaceCog) {
1531 face.SetTexture(filename);
1575 if (
face.sCogNumber == sCogNumber) {
1577 face.uAttributes |= bit;
1579 face.uAttributes &= ~bit;
1593 if (pFileName && strcmp(pFileName,
"0")) {
1637 signed int old_hour;
1663 for (
uint i = 0; i < 4; ++i)
1669 for (
uint i = 0; i < 4; ++i) {
1678 for (
uint i = 0; i < 4; ++i) {
1694 for (
uint i = 0; i < 4; ++i)
1703 for (
uint pl = 1; pl <= 4; ++pl) {
1706 pPlayers[pl]->HasEnchantedItemEquipped(71) ||
1710 if (!
pPlayers[pl]->HasUnderwaterSuitEquipped()) {
1731 for (
uint pl = 1; pl <= 4; pl++) {
1741 uint party_condition_flag = 4;
1746 if (a2a < 1) a2a = 1;
1749 for (
uint pl = 1; pl <= 4; pl++) {
1857 --party_condition_flag;
1860 for (
uint k = 0; k < 24; ++k) {
1861 pPlayers[pl]->pPlayerBuffs[k].IsBuffExpiredToTime(
1870 for (
uint i = 0; i < 20; ++i) {
1877 for (
uint i = 0; i < 4; ++i)
1881 for (
uint i = 0; i < 2; ++i) {
1886 if (!(pBuf->
uFlags & 1)) {
1895 if (!party_condition_flag) {
1897 for (
uint pl = 1; pl <= 4; pl++) {
1900 party_condition_flag = 1;
1936 int numberOfActorsAffected;
1942 int actorsAffectedByImmolation[100];
1945 bool has_dragon_flag;
1957 if (current_time == last_reg_time)
return;
1959 int testmin = last_reg_time + 5;
1960 if (testmin >= 60) {
1962 if (current_time >= 55) current_time -= 60;
1965 if (current_time >= testmin) {
1966 redraw_flag =
false;
1967 v4 = (current_time - last_reg_time) / 5;
1981 if (v6->value < v5) {
2004 if (v8->value <= 0) {
2031 for (v9 = 0; v9 < numberOfActorsAffected; ++v9) {
2032 v14 = actorsAffectedByImmolation[v9];
2037 v19 = a1.
Create(0, 0, 0, 0);
2042 has_dragon_flag =
false;
2045 for (v49 = 0; v49 < 4; v49++) {
2046 recovery_HP =
false;
2047 recovery_SP =
false;
2048 decrease_HP =
false;
2050 lich_jar_flag =
false;
2051 zombie_flag =
false;
2053 for (
int v22 = 0; (
signed int)v22 < 16; v22++) {
2058 .pInventoryItemList[_idx - 1]
2061 .pInventoryItemList[_idx - 1]
2065 .pInventoryItemList[_idx - 1]
2071 .pInventoryItemList[_idx - 1]
2075 .pInventoryItemList[_idx - 1]
2080 .pInventoryItemList[_idx - 1]
2081 .special_enchantment;
2198 if (has_dragon_flag &&
2209 for (v31 = 0; v31 < 126; ++v31) {
2212 lich_jar_flag =
true;
2232 if (lich_jar_flag) {
2267 if (a1 % 24 >= 5)
v1 = 29;
2268 return v1 - a1 % 24;
2275 int max_string_length;
2277 int prev_string_offset;
2280 logger->
Warning(L
"pLevelStrOffsets: deserialization warning");
2283 max_string_length = 0;
2285 prev_string_offset = 0;
2291 if (i - prev_string_offset > max_string_length)
2292 max_string_length = i - prev_string_offset;
2293 prev_string_offset = i;
2298 if (max_string_length > 800)
2299 Error(
"MAX_EVENT_TEXT_LENGTH needs to be increased to %lu",
2300 max_string_length + 1);
2331 unsigned int seconds;
2333 unsigned int minutes;
2337 unsigned int months;
2371 v6 = ((
unsigned short)_evt->
v12 << 8) + _evt->
v11;
2374 ((
unsigned short)_evt->
v12 << 8) + _evt->
v11;
2376 ((
unsigned short)_evt->
v12 << 8) + _evt->
v11;
2425 GameTime(seconds, minutes, hours, days, weeks, months,
2434 char pContainerName[120];
2436 sprintf(pContainerName,
"%s.evt", pLevelName);
2439 sprintf(pContainerName,
"%s.str", pLevelName);
2492 if (v13 < timer->time_left_to_fire) {
2501 uint next_trigger_time = 1 * 60 * 60 * 24;
2503 next_trigger_time = 336 * 60 * 60 * 24;
2505 next_trigger_time = 28 * 60 * 60 * 24;
2507 next_trigger_time = 7 * 60 * 60 * 24;
unsigned __int16 uint16_t
void SetDecorationSprite(uint16_t uCog, bool bHide, const char *pFileName)
std::array< stru324_spell_id_to_sprite_mapping, 103 > spell_sprite_mapping
unsigned int uNumLightsActive
void CloseWindowBackground()
unsigned int uCurrentTimeSecond
void GameUI_DrawRightPanel()
void DrawText(GUIFont *font, int x, int y, unsigned short uFontColor, const char *str, bool present_time_transparency=false, int max_text_height=0, int uFontShadowColor=0)
unsigned int uNumFaceExtras
GLenum GLuint GLint GLenum face
LOD::WriteableFile * pNew_LOD
void GameUI_DrawRightPanelItems()
const char * GetString(unsigned int index) const
std::array< LevelDecoration, 3000 > pLevelDecorations
int y_rotation_granularity
char * RemoveQuotes(char *str)
static void TakeFood(int amount)
std::array< unsigned int, 5 > pIconIDs_Turn
void SetDataPath(const char *data_path)
unsigned int uTimeElapsed
unsigned int uCurrentMonth
int outdoor_no_wavy_water
void GameUI_DrawLifeManaBars()
GameTime & GetPlayingTime()
DecorationDesc * GetDecoration(unsigned int index)
void FinalInitialization()
@ ITEM_RELIC_HARECS_LEATHER
void PrepareToLoadBLV(unsigned int bLoading)
void TeleportToStartingPoint(MapStartPoint point)
void GenerateItemsInChest()
void sub_44861E_set_texture(unsigned int uFaceCog, const char *pFilename)
bool draw_debug_outlines()
unsigned int uCurrentMinute
struct TextureFrameTable * pTextureFrameTable
void InitializeAnimation(unsigned int uIconID)
struct SpriteFrameTable * pSpriteFrameTable
void SetColorChannelInfo(int uNumRBits, int uNumGBits, int uNumBBits)
std::array< SpriteObject, MAX_SPRITE_OBJECTS > pSpriteObjects
LODFile_Sprites * pSprites_LOD
int Start_Party_Teleport_Flag
Vis_SelectionFilter vis_sprite_filter_1
void TeleportToNWCDungeon()
char field_60_distance_related_prolly_lod
void FromFile(void *data_mm6, void *data_mm7, void *data_mm8)
bool AlterGamma_BLV(struct BLVFace *pFace, unsigned int *pColor)
int GetNextActiveCharacter()
void FromFile(void *data_mm6, void *data_mm7, void *data_mm8)
void InitializeAdditionalNPCs(NPCData *pNPCDataBuff, int npc_uid, int uLocation2D, int uMapId)
bool _44100D_should_alter_right_panel()
static BloodsplatContainer * ResolveBloodsplatContainer()
void GameUI_DrawMinimap(unsigned int uX, unsigned int uY, unsigned int uZ, unsigned int uW, unsigned int uZoom, unsigned int bRedrawOdmMinimap)
static Log * ResolveLogger()
GLuint GLint GLboolean GLint GLenum access
void * LoadCompressedTexture(const String &pContainer, size_t *data_size=nullptr)
struct IconFrameTable * pIconsFrameTable
unsigned int bDoNotRenderDecorations
void DrawLightmapsType(int type)
MAP_TYPE GetMapInfo(const String &Str2)
void PlaySound(SoundID eSoundID, int pid, unsigned int uNumRepeats, int x, int y, int a7)
char field_7B5_in_arena_quest
unsigned int uEventOffsetInEVT
std::shared_ptr< Engine > engine
struct BLVFaceExtra * pFaceExtras
void init_event_triggers()
Vis_SelectionFilter vis_face_filter
std::shared_ptr< IRender > Create(const std::string &renderer_name, bool is_fullscreen)
unsigned int game_viewport_width
int GetDaysOfWeek() const
LightmapBuilder * lightmap_builder
WindowManager windowManager
unsigned int uDefaultPartyHeight
struct LevelDecoration * _591094_decoration
Localization * localization
void GameUI_DrawTorchlightAndWizardEye()
void DoPrepareWorld(unsigned int bLoading, int _1_fullscreen_loading_2_box)
unsigned int uCurrentHour
char pStartingMapName[32]
unsigned int ObjectIDByItemID(unsigned int uItemID)
uint32_t Color32(uint16_t color16)
std::array< Player, 4 > pPlayers
void GameUI_DrawHiredNPCs()
unsigned int uIconID_TurnStop
void FromFile(void *data_mm6, void *data_mm7, void *data_mm8)
void UpdatePlayersAndHirelingsEmotions()
int bDialogueUI_InitializeActor_NPC_ID
int _011BA4_debug_paletted_pixels_uncompressed
int _576E2C_current_minimap_zoom
unsigned int uDefaultEyelevel
void DrawCursorToTarget()
unsigned int uCurrentMonthWeek
void _494035_timed_effects__water_walking_damage__etc()
int shading_dist_shademist
DecalBuilder * decal_builder
int _44ED0A_saturate_face_blv(struct BLVFace *a2, int *a3, signed int a4)
GLsizei const GLchar *const * path
@ ITEM_ARTIFACT_MINDS_EYE
unsigned int MobileLightsCount
NZIArray< struct Player *, 5 > pPlayers
void Initialize_GlobalEVT()
uint16_t GetDecorIdByName(const char *pName)
unsigned __int16 uSpriteFrameID
unsigned int game_viewport_height
bool FileExists(const char *fname)
GameTime last_regenerated
void sub_44861E_set_texture_indoor(unsigned int uFaceCog, const String &filename)
void Level_LoadEvtAndStr(const char *pLevelName)
enum CURRENT_SCREEN current_screen_type
void DrawDebugOutlines(char bit_one_for_list1__bit_two_for_list2)
int _5C35C0_force_party_death
unsigned int _494820_training_time(unsigned int a1)
void sub_44861E_set_texture_outdoor(unsigned int uFaceCog, const String &filename)
struct MapStats * pMapStats
unsigned __int16 uObjectDescID
std::array< SpellBuff, 20 > pPartyBuffs
bool MM7_Initialize(const std::string &mm7_path)
unsigned int uLevelMapStatsID
int GetMinutesFraction() const
unsigned int uScreen_topL_Y
void area_of_effect__damage_evaluate()
unsigned int uPartyHeight
void DeleteAllVisibleWindows()
unsigned int uScreen_BttmR_X
@ PARTY_FLAGS_1_STANDING_ON_WATER
struct ItemsTable * pItemsTable
int GetSecondsFraction() const
void LoadLevel_InitializeLevelStr()
void CalculateRotations(int camera_rot_x, int camera_rot_y)
void GameUI_StatusBar_Update(bool force_hide)
Icon * GetIcon(unsigned int idx)
void DrawDecalDebugOutlines()
std::array< int, 2 > Party_Spec_Motion_status_ids
void BLV_UpdateUserInputAndOther()
unsigned int uIconID_TurnStart
Game__StationaryLight pStationaryLights[25]
bool Initialize(Type type)
void FromFile(void *data_mm6, void *data_mm7, void *data_mm8)
struct Vec3_int_ vPosition
void Initialize(OSWindow *window)
LevelDecoration * activeLevelDecoration
unsigned int uScreen_topL_X
static Vis * ResolveVis()
static ParticleEngine * ResolveParticleEngine()
bool _497FC5_check_party_perception_against_level()
int16_t time_left_to_fire
std::array< class UIAnimation *, 4 > pUIAnims
int Party_Teleport_Cam_Pitch
void GameUI_DrawRightPanelFrames()
float flt_6BE3AC_debug_recmod1_x_1_6
LODFile_IconsBitmaps * pIcons_LOD_mm6
unsigned int uMinimapZoom
@ LEVEL_DECORATION_INVISIBLE
unsigned char days_played_without_rest
unsigned int GetGravityStrength()
@ ITEM_ARTIFACT_HERMES_SANDALS
void SetTexture(const String &filename)
LocationTime_stru1 loc_time
Vis_SelectionFilter vis_sprite_filter_2
int _6FC_water_lava_timer
std::array< char, 777 > pDefaultSkyTexture
bool Load(const String &pFilename, const String &pFolderName)
void Info(const wchar_t *pFormat,...)
GUIProgressBar * pGameLoadingUI_ProgressBar
struct ViewingParams * viewparams
Vis_SelectionFilter vis_sprite_filter_4
unsigned int OS_GetTime()
BloodsplatContainer * bloodsplat_container
@ SPRITE_SPELL_FIRE_IMMOLATION
void SetupPalettes(unsigned int uTargetRBits, unsigned int uTargetGBits, unsigned int uTargetBBits)
void ResetSomeSpriteFlags()
std::array< char, 9216 > pLevelEVT
GameTime _5773B8_event_timer
@ ITEM_ARTIFACT_HEROS_BELT
int _46A89E_immolation_effect(int *affected, int affectedArrSize, int effectRange)
static DecalBuilder * ResolveDecalBuilder()
void DrawTurnBasedIcon(int a2)
unsigned int uNewlNPCBufPos
int uIconID_CharacterFrame
bool Initialize_GamesLOD_NewLOD()
char sub_4637E0_is_there_popup_onscreen()
void GameUI_StatusBar_DrawForced()
void GameUI_StatusBar_Draw()
static Mouse * ResolveMouse()
void Warning(const wchar_t *pFormat,...)
LODFile_IconsBitmaps * pIcons_LOD
unsigned int LoadTexture(const char *pContainer, enum TEXTURE_TYPE uTextureType=TEXTURE_DEFAULT)
void PushStationaryLights(int a2)
unsigned int uNumStationaryLights
void StopChannels(int uStartChannel, int uEndChannel)
void CreateWorldMatrixAndSomeStuff()
std::array< Actor, 500 > pActors
int Party_Teleport_Cam_Yaw
int ImmolationSkillLevel()
void ODM_LoadAndInitialize(const String &pFilename, ODMRenderParams *thisa)
struct PlayerFrameTable * pPlayerFrameTable
void Reset(uint8_t uMaxProgress)
const char * FindMm7Directory(char *mm7_path)
void InitializeTurnBasedAnimations(void *_this)
size_t uNumLevelDecorations
EGLSurface EGLNativeWindowType * window
void DrawPlayerBuffAnims()
int GetHoursOfDay() const
SpellFxRenderer * spell_fx_renedrer
struct TileTable * pTileTable
void Transition_StopSound_Autosave(const char *pMapName, MapStartPoint start_point)
NPCData pAdditionalNPC[100]
OSWindow * Create(const char *title, int window_width, int window_height)
int _44EC23_saturate_face_odm(struct Polygon *a2, int *a3, signed int a4)
void FromFile(void *data_mm6, void *data_mm7, void *data_mm8)
unsigned int LoadEventsToBuffer(const char *pContainerName, char *pBuffer, unsigned int uBufferSize)
Texture * GetBitmap(const String &name)
EGLSyncKHR EGLint EGLint * value
unsigned int uLevelStrFileSize
GUIWindow * pGUIWindow_ScrollWindow
GLint GLint GLsizei GLsizei GLsizei depth
int uNumStationaryLights_in_pStationaryLightsStack
void LoadLevel_InitializeLevelEvt()
PaletteManager * pPaletteManager
unsigned int uLevelEVT_Size
unsigned int FindIcon(const char *pIconName)
std::array< EventIndex, 4400 > pLevelEVT_Index
float flt_6BE3A8_debug_recmod2
int GetWeeksOfMonth() const
LODFile_IconsBitmaps * pEvents_LOD
void Engine_DeinitializeAndTerminate(int exitCode)
uint16_t uDecorationDescID
std::array< char, 9216 > pLevelStr
void SetSaturateFaces(bool saturate)
int _6807E0_num_decorations_with_sounds_6807B8
int Create(int yaw, int pitch, int a4, int a5)
struct ItemGen containing_item
@ CHARACTER_ATTRIBUTE_ENDURANCE
std::array< NPCData, 2 > pHirelings
unsigned int game_ui_status_bar_event_string_time_left
unsigned int uIconID_TurnHour
struct Viewport * pViewport
int GetMonthsOfYear() const
unsigned __int16 uSoundID
int FastFindSprite(const char *pSpriteName)
int dword_507BF0_is_there_popup_onscreen
unsigned int uCurrentDayOfMonth
@ GAME_STATE_CHANGE_LOCATION
unsigned int GetLevelFogColor()
ODMRenderParams * pODMRenderParams
GLboolean GLboolean GLboolean b
ParticleEngine * particle_engine
struct OtherOverlayList * pOtherOverlayList
int Party_Teleport_Z_Speed
bool AlterGamma_ODM(struct ODMFace *pFace, unsigned int *pColor)
GLdouble GLdouble GLdouble r
int ReplaceHSV(unsigned int uColor, float h_replace, float s_replace, float v_replace)
void sub_44892E_set_faces_bit(int sCogNumber, int bit, int on)
void SetMistColor(unsigned char r, unsigned char g, unsigned char b)
void free_book_subwindow()
bool PickKeyboard(bool bOutline, struct Vis_SelectionFilter *sprite_filter, struct Vis_SelectionFilter *face_filter)
struct MonsterList * pMonsterList
struct KeyboardActionMapping * pKeyActionMap
std::string MakeDataPath(const char *file_rel_path)
GLfloat GLfloat GLfloat v2
bool PickMouse(float fDepth, float fMouseX, float fMouseY, Vis_SelectionFilter *sprite_filter, Vis_SelectionFilter *face_filter)
float flt_6BE3A4_debug_recmod1
std::array< unsigned int, 500 > pLevelStrOffsets
unsigned int uActiveCharacter
void _461103_load_level_sub()
GLfloat GLfloat GLfloat GLfloat v3
LightsStack_StationaryLight_ * pStationaryLightsStack
void __cdecl __debugbreak(void)
int bDoNotDrawPortalFrustum
signed int uLevelEVT_NumEvents
void DeleteSomeOtherSprites()
struct NPCStats * pNPCStats
std::vector< ODMFace > pFaces
@ CHARACTER_EXPRESSION_37
@ PLAYER_BUFF_REGENERATION
struct OverlayList * pOverlayList
LODFile_IconsBitmaps * pBitmaps_LOD
void InitializeDecorationSprite(unsigned int uDecID)
void SetCursorBitmapFromItemID(unsigned int uItemID)
MapsLongTimer MapsLongTimersList[100]
int ODM_GetFloorLevel(int X, signed int Y, int Z, int __unused, bool *pIsOnWater, int *bmodel_pid, int bWaterWalk)
void SetScreen(int uX, int uY, int uZ, int uW)
void ODM_UpdateUserInputAndOther()
int dword_6BE364_game_settings_1
bool CanSaturateFaces() const
void GameUI_DrawCharacterSelectionFrame()
void EventProcessor(int uEventID, int targetObj, int canShowMessages, int entry_line)
bool PickKeyboard(Vis_SelectionList *list, Vis_SelectionFilter *sprite_filter, Vis_SelectionFilter *face_filter)
void SetCursorImage(const String &name)
LEVEL_TYPE uCurrentlyLoadedLevelType
void FromFile(void *data_mm6, void *data_mm7, void *data_mm8)
GLboolean GLboolean GLboolean GLboolean a
void OS_SetAppInt(const char *pKey, int val)
char Is_out15odm_underwater()
GUIWindow * pPrimaryWindow
void FromFile(void *data_mm6, void *data_mm7, void *data_mm8)
int GetSector(int sX, int sY, int sZ)
unsigned int uNumPointers
void FromFile(void *data_mm6, void *data_mm7, void *data_mm8)
static std::string s_data_path
MapStartPoint uLevel_StartingPointType
void GameUI_DrawPartySpells()
bool AddLight(int16_t x, int16_t y, int16_t z, int16_t a5, unsigned char r, unsigned char g, unsigned char b, char uLightType)
AudioPlayer * pAudioPlayer
GLsizei const GLchar *const * string
@ SOUND_StartMainChoice02
void GameUI_DrawPortraits(unsigned int _this)
void ResetCursor_Palettes_LODs_Level_Audio_SFT_Windows()
bool MM7_LoadLods(const char *mm7_path)
void PrepareToLoadODM(unsigned int bLoading, ODMRenderParams *a2)
@ ITEM_RELIC_ETHRICS_STAFF
void Cancel_Spell_Cast_In_Progress()
VisObjectType object_type
static SpellFxRenderer * ResolveSpellFxRenderer()
uint16_t Color16(uint32_t r, uint32_t g, uint32_t b)
unsigned int StationaryLightsCount
OutdoorLocation * pOutdoor
unsigned int uScreen_BttmR_Y
void UpdateUserInput_and_MapSpecificStuff()
static LightmapBuilder * ResolveLightmapBuilder()
void GameUI_StatusBar_OnEvent_128ms(const String &str)
unsigned __int16 uAttributes
void _4374E8_ProllyBuildFrustrum()
unsigned int uCurrentYear
static void DamageMonsterFromParty(int a1, unsigned int uActorID_Monster, struct Vec3_int_ *pVelocity)
IndoorCameraD3D * pIndoorCameraD3D
GUIWindow * pGUIWindow_CastTargetedSpell
std::array< int, 777 > _6807B8_level_decorations_ids
String StringPrintf(const char *fmt,...)
bool OS_GetAppString(const char *path, char *out_string, int out_string_size)
unsigned __int32 uint32_t
unsigned int uLevelStrNumStrings
int BLV_GetFloorLevel(int x, int y, int z, unsigned int uSectorID, unsigned int *pFaceID)
@ PLAYER_BUFF_PRESERVATION
int16_t timer_evt_seq_num
unsigned int uTotalGameTimeElapsed
Vis_ObjectInfo * object_pointers[512]
static Keyboard * ResolveKeyboard()
void PrepareWorld(unsigned int _0_box_loading_1_fullscreen)
bool LoadSprites(const String &pFilename)
int _unused_5B5924_is_travel_ui_drawn
void FromFile(void *data_mm6, void *data_mm7, void *data_mm8)
struct ObjectList * pObjectList
void _493938_regenerate()
void ReadCursorWithItem()
void SaveGame(bool IsAutoSAve, bool NotSaveWorld)
void FromFile(void *data_mm6, void *data_mm7, void *data_mm8)
void SecondaryInitialization()
struct DecorationList * pDecorationList
void FromFile(void *data_mm6, void *data_mm7, void *data_mm8)
bool PickMouse(float fPickDepth, unsigned int uMouseX, unsigned int uMouseY, bool bOutline, struct Vis_SelectionFilter *sprite_filter, struct Vis_SelectionFilter *face_filter)
static void InitializeGUI()
Vis_SelectionList default_list
std::shared_ptr< IRender > render