World of Might and Magic  0.2.0
Open reimplementation of Might and Magic 6 7 8 game engine
Структура Engine

#include <Engine.h>

+ Граф связей класса Engine:

Открытые члены

 Engine ()
 
virtual ~Engine ()
 
bool Configure (std::shared_ptr< const EngineConfig > config)
 
void Initialize ()
 
bool PickMouse (float fPickDepth, unsigned int uMouseX, unsigned int uMouseY, bool bOutline, struct Vis_SelectionFilter *sprite_filter, struct Vis_SelectionFilter *face_filter)
 
bool PickKeyboard (bool bOutline, struct Vis_SelectionFilter *sprite_filter, struct Vis_SelectionFilter *face_filter)
 
void OnGameViewportClick ()
 
void OutlineSelection ()
 
int _44EC23_saturate_face_odm (struct Polygon *a2, int *a3, signed int a4)
 
int _44ED0A_saturate_face_blv (struct BLVFace *a2, int *a3, signed int a4)
 
bool AlterGamma_BLV (struct BLVFace *pFace, unsigned int *pColor)
 
bool AlterGamma_ODM (struct ODMFace *pFace, unsigned int *pColor)
 
bool draw_debug_outlines ()
 
bool _44EEA7 ()
 
bool _44F07B ()
 
void PushStationaryLights (int a2)
 
void Deinitialize ()
 
void DrawParticles ()
 
void Draw ()
 
void DrawGUI ()
 
void ResetCursor_Palettes_LODs_Level_Audio_SFT_Windows ()
 
void SecondaryInitialization ()
 
void _461103_load_level_sub ()
 
void DropHeldItem ()
 
bool MM7_Initialize (const std::string &mm7_path)
 
bool IsUnderwater () const
 
bool CanSaturateFaces () const
 
bool AllowSnow () const
 
void SetUnderwater (bool is_underwater)
 
void SetSaturateFaces (bool saturate)
 
void SetForceRedraw (bool redraw)
 
void SetTargetingMode (bool is_targeting)
 
void SetDebugWizardEye (bool wizard_eye)
 
void SetDebugAllMagic (bool all_magic)
 
void SetDebugShowFps (bool show_fps)
 
void SetDebugShowPickedFace (bool show_picked_face)
 
void SetDebugPortalOutlines (bool portal_outlines)
 
void SetDebugTurboSpeed (bool turbo_speed)
 
void SetSeasonsChange (bool seasons_change)
 
void SetAllowSnow (bool allow_snow)
 
void SetExtendedDrawDistance (bool extended_draw_distance)
 
void SetNoActors (bool no_actors)
 
void SetAllowLightmaps (bool allow_lightmaps)
 
void SetDebugLightmapsDecals (bool debug_lightmaps_decals)
 
void SetDebugTerrain (bool debug_terrain)
 
void ToggleAlwaysRun ()
 
void ToggleFlipOnExit ()
 
void ToggleWalkSound ()
 
void ToggleShowDamage ()
 
void ToggleBloodsplats ()
 
void ToggleDebugTownPortal ()
 
void ToggleDebugWizardEye ()
 
void ToggleDebugAllMagic ()
 
void ToggleDebugTerrain ()
 
void ToggleDebugLightmap ()
 
void ToggleDebugTurboSpeed ()
 
void ToggleDebugNoActors ()
 
void ToggleDebugDrawDist ()
 
void ToggleDebugSnow ()
 
void ToggleDebugNoDamage ()
 
void ToggleDebugPortalLines ()
 
void ToggleDebugPickedFace ()
 
void ToggleDebugShowFPS ()
 
void ToggleDebugSeasonsChange ()
 
void SetMusicLevel (int level)
 
void SetSoundLevel (int level)
 
void SetVoiceLevel (int level)
 
void SetTurnSpeed (int turn_speed)
 
void MutateConfig (std::function< void(std::shared_ptr< EngineConfig > &)> mutator)
 

Открытые атрибуты

std::shared_ptr< const EngineConfigconfig
 
Game__StationaryLight pStationaryLights [25]
 
char field_2C0 [1092]
 
unsigned int uNumStationaryLights
 
Game_Bloodsplat pBloodsplats [20]
 
int field_938
 
int field_93C
 
int field_940
 
int field_944
 
int field_948
 
int field_94C
 
int field_950
 
int field_954
 
int field_958
 
int field_95C
 
int field_960
 
int field_964
 
int field_968
 
int field_96C
 
int field_970
 
int field_978
 
Game_stru0 stru_97C
 
char field_98C [1148]
 
int uNumStationaryLights_in_pStationaryLightsStack
 
float fSaturation
 
stru9pStru9Instance
 
stru10pStru10Instance
 
Loglog = nullptr
 
BloodsplatContainerbloodsplat_container = nullptr
 
DecalBuilderdecal_builder = nullptr
 
SpellFxRendererspell_fx_renedrer = nullptr
 
LightmapBuilderlightmap_builder = nullptr
 
Mousemouse = nullptr
 
Keyboardkeyboard = nullptr
 
ParticleEngineparticle_engine = nullptr
 
Visvis = nullptr
 

Подробное описание

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

Конструктор(ы)

◆ Engine()

Engine::Engine ( )

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

610  {
611  this->log = EngineIoc::ResolveLogger();
616  this->mouse = EngineIoc::ResolveMouse();
619  this->vis = EngineIoc::ResolveVis();
620 
623 
624  // pThreadWardInstance = nullptr;
625  // pParticleEngine = new ParticleEngine;
626  // pMouse = pMouseInstance = new Mouse;
627  // pLightmapBuilder = new LightmapBuilder;
628  // pVisInstance = new Vis;
629  // spellfx = new SpellFxRenderer;
631  pStru9Instance = new stru9;
632  pStru10Instance = new stru10;
633  // pStru11Instance = new stru11;
634  // pStru11Instance = nullptr;
635  // pStru12Instance = new stru12(pStru11Instance);
636  // pStru12Instance = nullptr;
637  // pCShow = new CShow;
638  // pCShow = nullptr;
639  // pKeyboardInstance = new Keyboard;
640  // pGammaController = new GammaController;
641 }

Перекрестные ссылки bloodsplat_container, decal_builder, keyboard, lightmap_builder, log, mouse, particle_engine, pIndoorCameraD3D, pStru10Instance, pStru9Instance, Engine_::IocContainer::ResolveBloodsplatContainer(), Engine_::IocContainer::ResolveDecalBuilder(), Engine_::IocContainer::ResolveKeyboard(), Engine_::IocContainer::ResolveLightmapBuilder(), Engine_::IocContainer::ResolveLogger(), Engine_::IocContainer::ResolveMouse(), Engine_::IocContainer::ResolveParticleEngine(), Engine_::IocContainer::ResolveSpellFxRenderer(), Engine_::IocContainer::ResolveVis(), spell_fx_renedrer, uNumStationaryLights, uNumStationaryLights_in_pStationaryLightsStack и vis.

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

◆ ~Engine()

Engine::~Engine ( )
virtual

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

644  {
645  // delete pGammaController;
646  // delete pKeyboardInstance;
647  /*delete pCShow;
648  delete pStru12Instance;
649  delete pStru11Instance;*/
650  delete pStru10Instance;
651  delete pStru9Instance;
652  delete pIndoorCameraD3D;
653  // delete spellfx;
654  // delete pVisInstance;
655  // delete pLightmapBuilder;
656  // delete pMouseInstance;
657  // delete pParticleEngine;
658  // delete pThreadWardInstance;
659 }

Перекрестные ссылки pIndoorCameraD3D, pStru10Instance и pStru9Instance.

Методы

◆ Configure()

bool Engine::Configure ( std::shared_ptr< const EngineConfig config)
inline

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

101  {
102  this->config = config;
103  return true;
104  }

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

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

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

◆ Initialize()

void Engine::Initialize ( )

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

1209  {
1210  char mm7_path[2048];
1211  FindMm7Directory(mm7_path);
1212  SetDataPath(mm7_path);
1213 
1214  if (!MM7_Initialize(std::string(mm7_path))) {
1215  log->Warning(L"MM7_Initialize: failed");
1216  if (engine != nullptr) {
1217  engine->Deinitialize();
1218  }
1219  exit(-1);
1220  }
1221 
1222  pEventTimer->Pause();
1223 
1225 }

Перекрестные ссылки engine, FindMm7Directory(), GUIWindow::InitializeGUI(), log, MM7_Initialize(), Timer::Pause(), pEventTimer, SetDataPath() и Log::Warning().

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

◆ PickMouse()

bool Engine::PickMouse ( float  fPickDepth,
unsigned int  uMouseX,
unsigned int  uMouseY,
bool  bOutline,
struct Vis_SelectionFilter sprite_filter,
struct Vis_SelectionFilter face_filter 
)

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

665  {
666  /*if (current_screen_type != SCREEN_GAME|| !render->pRenderD3D)
667  return false;*/
668 
669  // if (!vis) {
670  // log->Warning(
671  // L"The 'Vis' object pointer has not been instatiated, but "
672  // L"CGame::Pick() is trying to call through it.");
673  // return false;
674  // }
675 
676  if (uMouseX >= (signed int)pViewport->uScreen_TL_X &&
677  uMouseX <= (signed int)pViewport->uScreen_BR_X &&
678  uMouseY >= (signed int)pViewport->uScreen_TL_Y &&
679  uMouseY <= (signed int)pViewport->uScreen_BR_Y) {
680  vis->PickMouse(fPickDepth, uMouseX, uMouseY, sprite_filter, face_filter);
681 
682  if (bOutline)
684  }
685 
686  return true;
687 }

Перекрестные ссылки OutlineSelection(), Vis::PickMouse(), pViewport, Viewport::uScreen_BR_X, Viewport::uScreen_BR_Y, Viewport::uScreen_TL_X, Viewport::uScreen_TL_Y и vis.

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

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

◆ PickKeyboard()

bool Engine::PickKeyboard ( bool  bOutline,
struct Vis_SelectionFilter sprite_filter,
struct Vis_SelectionFilter face_filter 
)

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

692  {
694  bool r = vis->PickKeyboard(&vis->default_list, sprite_filter, face_filter);
695 
696  if (bOutline)
698  return r;
699  }
700  return false;
701 }

Перекрестные ссылки current_screen_type, Vis::default_list, OutlineSelection(), Vis::PickKeyboard(), SCREEN_GAME и vis.

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

◆ OnGameViewportClick()

void Engine::OnGameViewportClick ( )

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

315  {
316  int pEventID; // ecx@21
317  SpriteObject a1; // [sp+Ch] [bp-80h]@1
318 
319  int clickable_distance = 512;
320 
321  // bug fix - stops you entering shops while dialog still open.
323  return;
324 
326  int distance = HEXRAYS_HIWORD(v0);
327  bool in_range = distance < clickable_distance;
328  // else
329  // v0 = render->pActiveZBuffer[v1->x + pSRZBufferLineOffsets[v1->y]];
330 
331  if (PID_TYPE(v0) == OBJECT_Item) {
332  int item_id = PID_ID(v0);
333  // v21 = (signed int)(unsigned __int16)v0 >> 3;
334  if (pSpriteObjects[item_id].IsUnpickable() ||
335  item_id >= 1000 || !pSpriteObjects[item_id].uObjectDescID || !in_range) {
336  if (pParty->pPickedItem.uItemID) {
337  DropHeldItem();
338  }
339  } else {
340  ItemInteraction(item_id);
341  }
342  } else if (PID_TYPE(v0) == OBJECT_Actor) {
343  int mon_id = PID_ID(v0);
344  // a2.y = v16;
345  if (pActors[mon_id].uAIState == Dead) {
346  if (in_range)
347  pActors[mon_id].LootActor();
348  else if (pParty->pPickedItem.uItemID)
349  DropHeldItem();
350  } else if (!OS_IfShiftPressed()) {
351  if (!in_range) {
353  } else if (!ActorInteraction(mon_id)) {
356  } else {
357  pMessageQueue_50CBD0->AddGUIMessage(UIMSG_Attack, 0, 0);
358  }
359  }
362  } else if (uActiveCharacter &&
364  pPlayers[uActiveCharacter]->uQuickSpell)) {
365  pMessageQueue_50CBD0->AddGUIMessage(UIMSG_CastQuickSpell, 0, 0);
366  }
367  } else if (PID_TYPE(v0) == OBJECT_Decoration) {
368  int id = PID_ID(v0);
369  if (distance - pDecorationList->GetDecoration(pLevelDecorations[id].uDecorationDescID)->uRadius >= clickable_distance) {
370  if (pParty->pPickedItem.uItemID) {
371  DropHeldItem();
372  }
373  } else {
375  }
376  } else if (PID_TYPE(v0) == OBJECT_BModel && in_range) {
378  if (!pIndoor->pFaces[PID_ID(v0)].Clickable()) {
379  if (!pParty->pPickedItem.uItemID) {
381  if (!pParty->pPickedItem.uItemID)
382  return;
383  } else {
384  DropHeldItem();
385  }
386  } else {
387  pEventID = pIndoor->pFaceExtras[pIndoor->pFaces[PID_ID(v0)].uFaceExtraID].uEventID;
388  EventProcessor(pEventID, (unsigned __int16)v0, 1);
389  }
391  if (!pOutdoor->pBModels[(signed int)(v0 & 0xFFFF) >> 9].pFaces[PID_ID(v0) & 0x3F].Clickable()) {
392  if (!pParty->pPickedItem.uItemID) {
394  if (!pParty->pPickedItem.uItemID)
395  return;
396  } else {
397  DropHeldItem();
398  }
399  } else {
400  pEventID = pOutdoor->pBModels[(signed int)(v0 & 0xFFFF) >> 9]
401  .pFaces[PID_ID(v0) & 0x3F]
402  .sCogTriggeredID;
403  EventProcessor(pEventID, (unsigned __int16)v0, 1);
404  }
405  }
406  } else if (pParty->pPickedItem.uItemID) {
407  DropHeldItem();
408  }
409 }

Перекрестные ссылки ActorInteraction(), Party::bTurnBasedModeOn, current_screen_type, Dead, DecorationInteraction(), DropHeldItem(), EventProcessor(), stru262_TurnBased::field_18, GameUI_StatusBar_NothingHere(), Vis::get_picked_object_zbuf_val(), DecorationList::GetDecoration(), ItemInteraction(), LEVEL_Indoor, LEVEL_Outdoor, OBJECT_Actor, OBJECT_BModel, OBJECT_Decoration, OBJECT_Item, OS_IfShiftPressed(), pActors, PARTY_FLAGS_1_FALLING, OutdoorLocation::pBModels, pDecorationList, IndoorLocation::pFaceExtras, IndoorLocation::pFaces, pIndoor, pLevelDecorations, pMessageQueue_50CBD0, pOutdoor, pParty, Party::pPickedItem, pPlayers, pSpriteObjects, pTurnEngine, SCREEN_NPC_DIALOGUE, sub_427769_isSpellQuickCastableOnShiftClick(), TE_FLAG_8, TE_MOVEMENT, stru262_TurnBased::turn_stage, uActiveCharacter, uCurrentlyLoadedLevelType, BLVFaceExtra::uEventID, BLVFace::uFaceExtraID, Party::uFlags, UIMSG_Attack, UIMSG_CastQuickSpell, ItemGen::uItemID, DecorationDesc_mm6::uRadius и vis.

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

◆ OutlineSelection()

void Engine::OutlineSelection ( )

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

718  {
720  return;
721 
722  Vis_ObjectInfo *object_info = vis->default_list.object_pointers[0];
723  if (object_info) {
724  switch (object_info->object_type) {
725  case VisObjectType_Sprite: {
726  log->Warning(L"Sprite outline currently unsupported");
727  return;
728  }
729 
730  case VisObjectType_Face: {
732  ODMFace *face = (ODMFace *)object_info->object;
733  if (face->uAttributes & FACE_OUTLINED)
734  face->uAttributes &= ~FACE_OUTLINED;
735  else
736  face->uAttributes |= FACE_OUTLINED;
737  } else if (uCurrentlyLoadedLevelType == LEVEL_Indoor) {
738  BLVFace *face = (BLVFace *)object_info->object;
739  if (face->uAttributes & FACE_OUTLINED)
740  face->uAttributes &= ~FACE_OUTLINED;
741  else
742  face->uAttributes |= FACE_OUTLINED;
743  } else {
744  Error("Invalid level type", uCurrentlyLoadedLevelType);
745  }
746  } break;
747 
748  default: {
749  Error(
750  "Undefined CObjectInfo type requested in "
751  "CGame::outline_selection()");
753  }
754  }
755  }
756 }

Перекрестные ссылки Vis::default_list, Engine_DeinitializeAndTerminate(), LEVEL_Indoor, LEVEL_Outdoor, log, Vis_ObjectInfo::object, Vis_SelectionList::object_pointers, Vis_ObjectInfo::object_type, uCurrentlyLoadedLevelType, Vis_SelectionList::uNumPointers, vis, VisObjectType_Face, VisObjectType_Sprite и Log::Warning().

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

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

◆ _44EC23_saturate_face_odm()

int Engine::_44EC23_saturate_face_odm ( struct Polygon a2,
int *  a3,
signed int  a4 
)

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

509  {
510  double v4; // st7@4
511  // double v5; // ST00_8@4
512  signed int v6; // eax@5
513  // double v7; // ST00_8@6
514  signed int result; // eax@8
515  // double v9; // ST00_8@9
516  // double v10; // ST00_8@11
517  float a2a; // [sp+14h] [bp+8h]@4
518  float a3a; // [sp+18h] [bp+Ch]@4
519  float a3b; // [sp+18h] [bp+Ch]@6
520  float a4a; // [sp+1Ch] [bp+10h]@9
521  float a4b; // [sp+1Ch] [bp+10h]@11
522 
523  if (CanSaturateFaces() && a2->field_59 == 5 &&
524  a2->pODMFace->uAttributes & FACE_CAN_SATURATE_COLOR) {
525  v4 = (double)a4;
526  a2a = v4;
527  *a3 |= 2u;
528  a3a = (1.0 - this->fSaturation) * v4;
529  // v5 = a3a + 6.7553994e15;
530  // if ( SLODWORD(v5) >= 0 )
531  if (floorf(a3a + 0.5f) >= 0) {
532  a3b = (1.0 - this->fSaturation) * a2a;
533  // v7 = a3b + 6.7553994e15;
534  // v6 = LODWORD(v7);
535  v6 = floorf(a3b + 0.5f);
536  } else {
537  v6 = 0;
538  }
539  if (a4 >= v6) {
540  a4a = (1.0 - fSaturation) * a2a;
541  // v9 = a4a + 6.7553994e15;
542  // if ( SLODWORD(v9) >= 0 )
543  if (floorf(a4a + 0.5f) >= 0) {
544  a4b = (1.0 - fSaturation) * a2a;
545  // v10 = a4b + 6.7553994e15;
546  // result = LODWORD(v10);
547  result = floorf(a4b + 0.5f);
548  } else {
549  result = 0;
550  }
551  } else {
552  result = a4;
553  }
554  } else {
555  result = -1;
556  }
557  return result;
558 }

Перекрестные ссылки CanSaturateFaces(), Polygon::field_59, fSaturation, Polygon::pODMFace и ODMFace::uAttributes.

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

◆ _44ED0A_saturate_face_blv()

int Engine::_44ED0A_saturate_face_blv ( struct BLVFace a2,
int *  a3,
signed int  a4 
)

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

561  {
562  double v4; // st7@3
563  // double v5; // ST00_8@3
564  int v6; // eax@4
565  // double v7; // ST00_8@5
566  int result; // eax@7
567  // double v9; // ST00_8@8
568  // double v10; // ST00_8@10
569  float v11; // [sp+14h] [bp+8h]@3
570  float v12; // [sp+18h] [bp+Ch]@3
571  float v13; // [sp+18h] [bp+Ch]@5
572  float v14; // [sp+1Ch] [bp+10h]@8
573  float v15; // [sp+1Ch] [bp+10h]@10
574 
575  if (engine->CanSaturateFaces() && a2->uAttributes & FACE_CAN_SATURATE_COLOR) {
576  v4 = (double)a4;
577  v11 = v4;
578  *a3 |= 2u;
579  v12 = (1.0 - this->fSaturation) * v4;
580  // v5 = v12 + 6.7553994e15;
581  if (floorf(v12 + 0.5f) /* SLODWORD(v5)*/ >= 0) {
582  v13 = (1.0 - this->fSaturation) * v11;
583  // v7 = v13 + 6.7553994e15;
584  // v6 = LODWORD(v7);
585  v6 = floorf(v13 + 0.5f);
586  } else {
587  v6 = 0;
588  }
589  if (a4 >= v6) {
590  v14 = (1.0 - fSaturation) * v11;
591  // v9 = v14 + 6.7553994e15;
592  if (floorf(v14 + 0.5f) /* SLODWORD(v9)*/ >= 0) {
593  v15 = (1.0 - fSaturation) * v11;
594  // v10 = v15 + 6.7553994e15;
595  // result = LODWORD(v10);
596  result = floorf(v15 + 0.5f);
597  } else {
598  result = 0;
599  }
600  } else {
601  result = a4;
602  }
603  } else {
604  result = -1;
605  }
606  return result;
607 }

Перекрестные ссылки engine, fSaturation и BLVFace::uAttributes.

◆ AlterGamma_BLV()

bool Engine::AlterGamma_BLV ( struct BLVFace pFace,
unsigned int *  pColor 
)

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

459  {
460  if (CanSaturateFaces() && pFace->uAttributes & FACE_CAN_SATURATE_COLOR) {
461  *pColor = ReplaceHSV(*pColor, 1.0, fSaturation, -1.0);
462  return true;
463  } else {
464  return false;
465  }
466 }

Перекрестные ссылки CanSaturateFaces(), fSaturation, ReplaceHSV() и BLVFace::uAttributes.

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

◆ AlterGamma_ODM()

bool Engine::AlterGamma_ODM ( struct ODMFace pFace,
unsigned int *  pColor 
)

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

468  {
469  if (engine->CanSaturateFaces() && pFace->uAttributes & FACE_CAN_SATURATE_COLOR) {
470  *pColor = ReplaceHSV(*pColor, 1.0, fSaturation, -1.0);
471  return true;
472  } else {
473  return false;
474  }
475 }

Перекрестные ссылки engine, fSaturation, ReplaceHSV() и ODMFace::uAttributes.

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

◆ draw_debug_outlines()

bool Engine::draw_debug_outlines ( )

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

500  {
501  if (/*uFlags & 0x04*/ engine->config->debug_lightmaps_decals) {
504  }
505  return true;
506 }

Перекрестные ссылки decal_builder, LightmapBuilder::DrawDebugOutlines(), DecalBuilder::DrawDecalDebugOutlines(), engine и lightmap_builder.

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

◆ _44EEA7()

bool Engine::_44EEA7 ( )

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

399  { // cursor picking - particle update
400  float depth; // ST00_4@9
401  __int64 v6; // kr00_8@21
402  Vis_SelectionFilter *v10; // [sp+10h] [bp-18h]@2
403  Vis_SelectionFilter *v11; // [sp+14h] [bp-14h]@2
404 
405  ++qword_5C6DF0;
407  Point pt = mouse->GetCursorPos();
408 
409  // x = cursor.y;
410  // y = cursor.x;
412  v11 = &vis_face_filter;
413  v10 = &vis_sprite_filter_2;
415  } else {
416  if (config->IsTargetingMode()) {
417  v11 = &vis_face_filter;
418  v10 = &vis_sprite_filter_1;
419  } else {
420  v11 = &vis_face_filter;
421  v10 = &vis_sprite_filter_4;
422  }
423  depth = 5120.0;
424  }
425  // depth = v2;
426 
427  PickMouse(depth, pt.x, pt.y, false, v10, v11);
432  if (!_44F07B())
433  return false;
434 
435  if (engine->config->DrawBlvDebugs())
437  if (/*render->pRenderD3D &&*/ uCurrentlyLoadedLevelType == LEVEL_Outdoor)
438  render->uFogColor = GetLevelFogColor() & 0xFFFFFF;
439  // if (uFlags & GAME_FLAGS_1_400)
440  // engine->config->SetForceRedraw(true);
441  /*if ( !render->pRenderD3D && uCurrentlyLoadedLevelType == LEVEL_Outdoor &&
442  pMobileLightsStack->uNumLightsActive )
443  {
444  uFlags2 |= 0x01;
445  field_E10 = qword_5C6DF0;
446  }*/
447  // v6 = qword_5C6DF0 - field_E10;
448  if (qword_5C6DF0/* - field_E10 == 1*/)
449  engine->SetForceRedraw(true);
450 
452  engine->SetForceRedraw(true);
454  }
455  return true;
456 }

Перекрестные ссылки _44F07B(), stru10::bDoNotDrawPortalFrustum, DecalBuilder::curent_decal_id, decal_builder, DecalBuilder::DecalsCount, engine, Mouse::GetCursorPos(), GetLevelFogColor(), IndoorCameraD3D::GetPickDepth(), LEVEL_Outdoor, lightmap_builder, LightmapBuilder::MobileLightsCount, mouse, particle_engine, PickMouse(), pIndoorCameraD3D, pStationaryLightsStack, pStru10Instance, qword_5C6DF0, render, LightmapBuilder::StationaryLightsCount, sub_4637E0_is_there_popup_onscreen(), uCurrentlyLoadedLevelType, LightsStack_StationaryLight_::uNumLightsActive, uNumStationaryLights_in_pStationaryLightsStack, ParticleEngine::UpdateParticles(), vis_face_filter, vis_sprite_filter_1, vis_sprite_filter_2, vis_sprite_filter_4, Point::x и Point::y.

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

◆ _44F07B()

bool Engine::_44F07B ( )

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

38  {
39  if (!keyboard->IsKeyBeingHeld(VK_SHIFT) &&
40  !keyboard->IsKeyBeingHeld(VK_LSHIFT) &&
41  !keyboard->IsKeyBeingHeld(VK_LSHIFT) ||
42  (keyboard->WasKeyPressed(VK_F11) == 0 &&
43  keyboard->WasKeyPressed(VK_F11)))
44  return true;
45  return false;
46 }

Перекрестные ссылки Keyboard::IsKeyBeingHeld(), keyboard и Keyboard::WasKeyPressed().

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

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

◆ PushStationaryLights()

void Engine::PushStationaryLights ( int  a2)

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

386  {
387  Game__StationaryLight *pLight;
388 
389  for (int i = 0; i < uNumStationaryLights; ++i) {
390  pLight = &pStationaryLights[i];
392  pLight->vPosition.x, pLight->vPosition.y, pLight->vPosition.z,
393  pLight->flt_18, pLight->vRGBColor.x, pLight->vRGBColor.y,
394  pLight->vRGBColor.z, _4E94D0_light_type);
395  }
396 }

Перекрестные ссылки _4E94D0_light_type, LightsStack_StationaryLight_::AddLight(), Game__StationaryLight::flt_18, pStationaryLights, pStationaryLightsStack, uNumStationaryLights, Game__StationaryLight::vPosition, Game__StationaryLight::vRGBColor, Vec3_float_::x, Vec3_float_::y и Vec3_float_::z.

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

◆ Deinitialize()

void Engine::Deinitialize ( )

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

478  {
479  OS_SetAppInt("startinwindow", 1); // render->bWindowMode);
480  // if (render->bWindowMode)
481  {
482  OS_SetAppInt("window X", window->GetX());
483  OS_SetAppInt("window Y", window->GetY());
484  }
485  OS_SetAppInt("valAlwaysRun", config->always_run ? 1 : 0);
486  pItemsTable->Release();
487  pNPCStats->Release();
488 
489  if (mouse)
490  mouse->Deactivate();
491 
492  render = nullptr;
493 
495 
496  delete pEventTimer;
497 }

Перекрестные ссылки Mouse::Deactivate(), LOD::WriteableFile::FreeSubIndexAndIO(), mouse, OS_SetAppInt(), pEventTimer, pItemsTable, pNew_LOD, pNPCStats, NPCStats::Release(), ItemsTable::Release() и render.

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

◆ DrawParticles()

void Engine::DrawParticles ( )

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

381  {
383 }

Перекрестные ссылки ParticleEngine::Draw() и particle_engine.

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

◆ Draw()

void Engine::Draw ( )

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

166  {
169 
172  pIndoorCameraD3D->vPartyPos.x = pParty->vPosition.x - pParty->y_rotation_granularity * cosf(2 * pi_double * pParty->sRotationY / 2048.0);
173  pIndoorCameraD3D->vPartyPos.y = pParty->vPosition.y - pParty->y_rotation_granularity * sinf(2 * pi_double * pParty->sRotationY / 2048.0);
174  pIndoorCameraD3D->vPartyPos.z = pParty->vPosition.z + pParty->sEyelevel; // 193, but real 353
175 
176  // pIndoorCamera->Initialize2();
180 
181  if (pMovie_Track) {
182  /*if ( !render->pRenderD3D )
183  {
184  render->BeginSceneD3D();
185  pMouse->DrawCursorToTarget();
186  render->DrawBillboards_And_MaybeRenderSpecialEffects_And_EndScene();
187  }*/
188  } else {
189  if (pParty->vPosition.x != pParty->vPrevPosition.x ||
195  pParty->uFlags |= 2u;
199  // v0 = &render;
202 
204  render->BeginSceneD3D();
205 
206  // if ( !render->pRenderD3D )
207  // pMouse->DrawCursorToTarget();
208  if (!PauseGameDrawing() || viewparams->field_48 == 1) {
209  // if ( render->pRenderD3D )
210  {
211  float v2 =
212  (double)(((signed int)pMiscTimer->uTotalGameTimeElapsed >> 2) & 0x1F) * 0.032258064 * 6.0;
213  // v3 = v2 + 6.7553994e15;
214  // render->field_1036A8_bitmapid = LODWORD(v3);
215  render->hd_water_current_frame = floorf(v2 + 0.5f);
216  }
217 
219  pIndoor->Draw();
221  pOutdoor->Draw();
222  else
223  Error("Invalid level type: %u", uCurrentlyLoadedLevelType);
224 
226  lightmap_builder->DrawLightmapsType(2); // mobile lights - sparks ??
227  }
228  render->DrawBillboards_And_MaybeRenderSpecialEffects_And_EndScene();
229  }
230 
231  // 2d from now on
232  // DEBUG: force redraw gui
233  viewparams->bRedrawGameUI = true;
234 
235  render->BeginScene();
236  DrawGUI();
237  int v4 = viewparams->bRedrawGameUI;
241 
242  if (v4)
243  mouse->bRedraw = true;
245  mouse->DrawCursor();
246  mouse->Activate();
247  render->EndScene();
248  render->Present();
249  pParty->uFlags &= ~2;
250 }

Перекрестные ссылки IndoorCameraD3D::_4374E8_ProllyBuildFrustrum(), Party::_497FC5_check_party_perception_against_level(), _unused_5B5924_is_travel_ui_drawn, Mouse::Activate(), Mouse::bRedraw, ViewingParams::bRedrawGameUI, IndoorCameraD3D::CalculateRotations(), IndoorCameraD3D::CreateWorldMatrixAndSomeStuff(), decal_builder, OutdoorLocation::Draw(), IndoorLocation::Draw(), DecalBuilder::DrawBloodsplats(), Mouse::DrawCursor(), DrawGUI(), LightmapBuilder::DrawLightmapsType(), ViewingParams::field_48, GUI_UpdateWindows(), LEVEL_Indoor, LEVEL_Outdoor, lightmap_builder, mouse, PauseGameDrawing(), pIndoor, pIndoorCameraD3D, pMiscTimer, pMovie_Track, pOutdoor, pParty, Mouse::ReadCursorWithItem(), render, SetSaturateFaces(), Party::sEyelevel, Party::sPrevEyelevel, Party::sPrevRotationX, Party::sPrevRotationY, IndoorCameraD3D::sRotationX, Party::sRotationX, IndoorCameraD3D::sRotationY, Party::sRotationY, uCurrentlyLoadedLevelType, Party::uFlags, Party::UpdatePlayersAndHirelingsEmotions(), Timer::uTotalGameTimeElapsed, viewparams, IndoorCameraD3D::vPartyPos, Party::vPosition, Party::vPrevPosition, Vec2< T >::x, Vec2< T >::y, Party::y_rotation_granularity и Vec3< T >::z.

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

◆ DrawGUI()

void Engine::DrawGUI ( )

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

252  {
253  render->ResetUIClipRect();
254 
255  // if (render->pRenderD3D)
258  viewparams->bRedrawGameUI = true;
259  int v4 = viewparams->bRedrawGameUI;
261  if (!viewparams->bRedrawGameUI) {
263  } else {
266  viewparams->bRedrawGameUI = false;
267  }
268 
269 
270  if (!pMovie_Track) { // ! pVideoPlayer->pSmackerMovie)
271  GameUI_DrawMinimap(488, 16, 625, 133, viewparams->uMinimapZoom, true); // redraw = pParty->uFlags & 2);
272  if (v4) {
273  if (!PauseGameDrawing() /*&& render->pRenderD3D*/) { // clear game
274  // viewport with
275  // transparent
276  // color
277 
278  if (!(config->renderer_name == "OpenGL")) { // do not want in opengl mode
279  render->FillRectFast(
283  0x7FF);
284  }
285  viewparams->field_48 = 0;
286  }
287  }
288  }
289 
292 
294  if (v4 || pParty->pHirelings[0].evt_C || pParty->pHirelings[1].evt_C)
300  if (!pMovie_Track) {
304  }
305 
306  static bool render_framerate = false;
307  static float framerate = 0.0f;
308  static uint frames_this_second = 0;
309  static uint last_frame_time = OS_GetTime();
310  static uint framerate_time_elapsed = 0;
311 
314  pWeather->Draw(); // Ritor1: my include
315 
316  // while(GetTickCount() - last_frame_time < 33 );//FPS control
317  uint frame_dt = OS_GetTime() - last_frame_time;
318  last_frame_time = OS_GetTime();
319  framerate_time_elapsed += frame_dt;
320  if (framerate_time_elapsed >= 1000) {
321  framerate = frames_this_second * (1000.0f / framerate_time_elapsed);
322 
323  framerate_time_elapsed = 0;
324  frames_this_second = 0;
325  render_framerate = true;
326  }
327 
328  ++frames_this_second;
329 
330  if (engine->config->show_fps) {
331  if (render_framerate) {
332  pPrimaryWindow->DrawText(pFontArrus, 494, 0, Color16(0, 0, 0),
333  StringPrintf("FPS: % .4f", framerate), 0,
334  0, 0);
335  }
336 
337  int debug_info_offset = 0;
339  int sector_id = pIndoor->GetSector(
342  pFontArrus, 16, debug_info_offset = 16, Color16(255, 255, 255),
343  StringPrintf("Party Sector ID: %u/%u\n", sector_id,
345  0, 0, 0);
346  }
348  pFontArrus, 16, debug_info_offset + 16, Color16(255, 255, 255),
349  StringPrintf("Party Position: % d % d % d",
351  pParty->vPosition.z),
352  0, 0, 0);
353 
354  String floor_level_str;
356  uint uFaceID;
357  int sector_id = pIndoor->GetSector(
359  int floor_level = BLV_GetFloorLevel(
361  pParty->vPosition.z + 40, sector_id, &uFaceID);
362  floor_level_str = StringPrintf(
363  "BLV_GetFloorLevel: %d face_id %d\n", floor_level, uFaceID);
365  bool on_water = false;
366  int _a6;
367  int floor_level = ODM_GetFloorLevel(
369  0, &on_water, &_a6, false);
370  floor_level_str = StringPrintf(
371  "ODM_GetFloorLevel: %d on_water: %s a6 = %d\n",
372  floor_level, on_water ? "true" : "false", _a6);
373  }
374  pPrimaryWindow->DrawText(pFontArrus, 16, debug_info_offset + 16 + 16,
375  Color16(255, 255, 255), floor_level_str, 0, 0,
376  0);
377  }
378 }

Перекрестные ссылки _44100D_should_alter_right_panel(), BLV_GetFloorLevel(), OtherOverlayList::bRedraw, ViewingParams::bRedrawGameUI, Color16(), current_screen_type, Weather::Draw(), Mouse::DrawCursorToTarget(), SpellFxRenderer::DrawPlayerBuffAnims(), GUIWindow::DrawText(), OtherOverlayList::DrawTurnBasedIcon(), engine, ViewingParams::field_48, GameUI_DrawCharacterSelectionFrame(), GameUI_DrawHiredNPCs(), GameUI_DrawLifeManaBars(), GameUI_DrawMinimap(), GameUI_DrawPartySpells(), GameUI_DrawPortraits(), GameUI_DrawRightPanel(), GameUI_DrawRightPanelFrames(), GameUI_DrawRightPanelItems(), GameUI_DrawTorchlightAndWizardEye(), GameUI_StatusBar_Draw(), GameUI_StatusBar_DrawForced(), IndoorLocation::GetSector(), LEVEL_Indoor, LEVEL_Outdoor, mouse, ODM_GetFloorLevel(), OS_GetTime(), PauseGameDrawing(), pFontArrus, Party::pHirelings, pIndoor, pMovie_Track, pOtherOverlayList, pParty, pPrimaryWindow, pViewport, pWeather, render, SCREEN_GAME, spell_fx_renedrer, StringPrintf(), uCurrentlyLoadedLevelType, ViewingParams::uMinimapZoom, IndoorLocation::uNumSectors, Viewport::uViewportBR_X, Viewport::uViewportBR_Y, Viewport::uViewportTL_X, Viewport::uViewportTL_Y, viewparams и Party::vPosition.

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

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

◆ ResetCursor_Palettes_LODs_Level_Audio_SFT_Windows()

void Engine::ResetCursor_Palettes_LODs_Level_Audio_SFT_Windows ( )

◆ SecondaryInitialization()

void Engine::SecondaryInitialization ( )

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

1082  {
1084 
1085  pItemsTable = new ItemsTable;
1087 
1088  // pBitmaps_LOD->can_load_hardware_sprites = 1;
1089  // pBitmaps_LOD->SetupPalettes(render->uTargetRBits, render->uTargetGBits,
1090  // render->uTargetBBits);
1091  pBitmaps_LOD->SetupPalettes(5, 6, 5);
1092  // pIcons_LOD->SetupPalettes(render->uTargetRBits, render->uTargetGBits,
1093  // render->uTargetBBits);
1094  pIcons_LOD->SetupPalettes(5, 6, 5);
1095  // pPaletteManager->SetColorChannelInfo(render->uTargetRBits,
1096  // render->uTargetGBits, render->uTargetBBits);
1098 
1099  pPaletteManager->SetMistColor(128, 128, 128);
1101  // pSprites_LOD->can_load_hardware_sprites = 1;
1104 
1105  if (!engine->config->NoSound())
1107 
1108  for (uint i = 0; i < 4; ++i) {
1109  static const char *pUIAnimNames[4] = {"glow03", "glow05", "torchA",
1110  "wizeyeA"};
1111  static unsigned short _4E98D0[4][4] = {
1112  {479, 0, 329, 0}, {585, 0, 332, 0}, {468, 0, 0, 0}, {606, 0, 0, 0}};
1113 
1114  // pUIAnims[i]->uIconID = pIconsFrameTable->FindIcon(pUIAnimNames[i]);
1115  pUIAnims[i]->icon = pIconsFrameTable->GetIcon(pUIAnimNames[i]);
1117 
1118  pUIAnims[i]->uAnimLength = 0;
1119  pUIAnims[i]->uAnimTime = 0;
1120  pUIAnims[i]->x = _4E98D0[i][0];
1121  pUIAnims[i]->y = _4E98D0[i][2];
1122  }
1123 
1125 
1126  UI_Create();
1127 
1129 
1130  for (uint i = 0; i < 7; ++i) {
1131  char container_name[64];
1132  sprintf(container_name, "HDWTR%03u", i);
1133  render->pHDWaterBitmapIDs[i] =
1134  pBitmaps_LOD->LoadTexture(container_name);
1135  render->hd_water_tile_anim[i] = assets->GetBitmap(container_name);
1136  }
1137 
1138  pNPCStats = new NPCStats;
1139  memset(pNPCStats->pNPCData, 0, 0x94BCu);
1140  pNPCStats->Initialize();
1141 
1146 
1149  dword_576E28 = 9;
1150 }

Перекрестные ссылки _576E2C_current_minimap_zoom, LODFile_IconsBitmaps::_inlined_sub0(), LODFile_Sprites::_inlined_sub0(), assets, dword_576E28, engine, AssetsManager::GetBitmap(), IconFrameTable::GetIcon(), NPCStats::Initialize(), SoundList::Initialize(), Mouse::Initialize(), ItemsTable::Initialize(), Initialize_GamesLOD_NewLOD(), Initialize_GlobalEVT(), IconFrameTable::InitializeAnimation(), ObjectList::InitializeColors(), ObjectList::InitializeSprites(), OverlayList::InitializeSprites(), SpellFxRenderer::LoadAnimations(), LODFile_IconsBitmaps::LoadTexture(), PaletteManager::LockAll(), mouse, pBitmaps_LOD, pIcons_LOD, pIconsFrameTable, pItemsTable, NPCStats::pNPCData, pNPCStats, pObjectList, pOverlayList, pPaletteManager, pSoundList, pSprites_LOD, pUIAnims, PaletteManager::RecalculateAll(), render, PaletteManager::SetColorChannelInfo(), PaletteManager::SetMistColor(), LODFile_IconsBitmaps::SetupPalettes(), spell_fx_renedrer и UI_Create().

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

◆ _461103_load_level_sub()

void Engine::_461103_load_level_sub ( )

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

1365  {
1366  int v4; // edx@8
1367  int v6; // esi@14
1368  int v8; // ecx@16
1369  int v12; // esi@25
1370  int v13; // eax@26
1371  __int16 v14; // ax@41
1372  int v17; // [sp+14h] [bp-48h]@3
1373  int v18; // [sp+14h] [bp-48h]@23
1374  int v19; // [sp+18h] [bp-44h]@1
1375  int v20; // [sp+18h] [bp-44h]@14
1376  int v21[16]; // [sp+1Ch] [bp-40h]@17
1377 
1378  if (engine->config->no_actors)
1379  uNumActors = 0;
1380 
1383  pParty->uFlags |= 2;
1385  dword_5C6DF8 = 1;
1388 
1389  // v15 = 0;
1390  for (uint i = 0; i < uNumActors; ++i) {
1391  // Actor* pActor = &pActors[i];
1392  // v2 = (char *)&pActors[0].uNPC_ID;
1393  // do
1394  //{
1395  // v3 = pActors[i].pMonsterInfo.uID;
1396  v17 = 0;
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)
1401  v17 = 1;
1402  // v1 = 0;
1403  v4 = (pActors[i].pMonsterInfo.uID - 1) % 3;
1404  if (2 == v4) {
1405  if (pActors[i].sNPC_ID && pActors[i].sNPC_ID < 5000) continue;
1406  } else {
1407  if (v4 != 1) {
1408  if (v4 == 0 && pActors[i].sNPC_ID == 0) pActors[i].sNPC_ID = 0;
1409  continue;
1410  }
1411  }
1412  if (pActors[i].sNPC_ID > 0 && pActors[i].sNPC_ID < 5000) continue;
1413  if (v17) {
1416  pActors[i].pMonsterInfo.uID, 0, v19);
1417  v14 = (unsigned short)pNPCStats->uNewlNPCBufPos + 5000;
1419  pActors[i].sNPC_ID = v14;
1420  continue;
1421  }
1422  pActors[i].sNPC_ID = 0;
1423  // ++v15;
1424  // v2 += 836;
1425  //}
1426  // while ( v15 < (signed int)uNumActors );
1427  }
1428 
1430 
1431  // v5 = uNumActors;
1432  v6 = 0;
1433  v20 = 0;
1434  // v16 = v1;
1435 
1436  for (uint i = 0; i < uNumActors; ++i) {
1437  // v7 = (char *)&pActors[0].pMonsterInfo;
1438  // do
1439  //{
1440  for (v8 = 0; v8 < v6; ++v8) {
1441  if (v21[v8] == pActors[i].pMonsterInfo.uID - 1) break;
1442  }
1443 
1444  if (v8 == v6) {
1445  v21[v6++] = pActors[i].pMonsterInfo.uID - 1;
1446  v20 = v6;
1447  if (v6 == 16) break;
1448  }
1449  // ++v16;
1450  // v7 += 836;
1451  //}
1452  // while ( v16 < (signed int)v5 );
1453  }
1454 
1456 
1457  if (engine->config->NoActors())
1458  uNumActors = 0;
1459  if (engine->config->NoDecorations())
1462 
1464 
1467  pIndoorCameraD3D->vPartyPos.z = 100;
1470  viewparams->bRedrawGameUI = true;
1472  pSprites_LOD->_461397();
1474  if (pParty->pPickedItem.uItemID != 0)
1476 }

Перекрестные ссылки LODFile_Sprites::_461397(), ViewingParams::bRedrawGameUI, dword_5C6DF8, engine, Party::field_7B5_in_arena_quest, GenerateItemsInChest(), MapStats::GetMapInfo(), init_event_triggers(), NPCStats::InitializeAdditionalNPCs(), PaletteManager::LockTestAll(), MapStartPoint_Party, mouse, pActors, NPCStats::pAdditionalNPC, pCurrentMapName, pGameLoadingUI_ProgressBar, pIndoorCameraD3D, pMapStats, pNPCStats, pPaletteManager, pParty, Party::pPickedItem, GUIProgressBar::Progress(), pSprites_LOD, Mouse::SetCursorBitmapFromItemID(), IndoorCameraD3D::sRotationX, IndoorCameraD3D::sRotationY, Party::uFlags, ItemGen::uItemID, uLevel_StartingPointType, NPCStats::uNewlNPCBufPos, uNumActors, uNumLevelDecorations, viewparams, IndoorCameraD3D::vPartyPos, Vec2< T >::x, Vec2< T >::y и Vec3< T >::z.

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

◆ DropHeldItem()

void Engine::DropHeldItem ( )

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

289  {
290  if (!pParty->pPickedItem.uItemID) return;
291 
292  SpriteObject a1;
295  a1.vPosition.y = pParty->vPosition.y;
297  a1.vPosition.x = pParty->vPosition.x;
299  a1.uSoundID = 0;
300  a1.uFacing = 0;
301  a1.uAttributes = 8;
304  a1.uSpriteFrameID = 0;
305  memcpy(&a1.containing_item, &pParty->pPickedItem, 0x24u);
306 
307  // extern int UnprojectX(int);
308  // v9 = UnprojectX(v1->x);
309  a1.Create(pParty->sRotationY, 184, 200, 0); //+ UnprojectX(v1->x), 184, 200, 0);
310 
312 }

Перекрестные ссылки SpriteObject::containing_item, SpriteObject::Create(), IndoorLocation::GetSector(), mouse, OBJECT_Player, ObjectList::ObjectIDByItemID(), pIndoor, ItemsTable::pItems, pItemsTable, pObjectList, pParty, Party::pPickedItem, Mouse::RemoveHoldingItem(), Party::sEyelevel, SpriteObject::spell_caster_pid, Party::sRotationY, SpriteObject::uAttributes, SpriteObject::uFacing, ItemGen::uItemID, SpriteObject::uObjectDescID, SpriteObject::uSectorID, SpriteObject::uSoundID, SpriteObject::uSpriteFrameID, SpriteObject::uType, SpriteObject::vPosition и Party::vPosition.

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

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

◆ MM7_Initialize()

bool Engine::MM7_Initialize ( const std::string mm7_path)

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

903  {
904  srand(OS_GetTime());
905 
908 
909  IRenderFactory renderFactory;
910  render = renderFactory.Create(
911  config->renderer_name,
912  !config->RunInWindow());
913 
914  if (!render) {
915  log->Warning(L"Render creation failed");
916  return false;
917  } else {
919  "Might and Magic® Trilogy",
920  render->config->render_width,
921  render->config->render_height);
922 
923  if (!render->Initialize(window)) {
924  log->Warning(L"Render failed to initialize");
925  return false;
926  }
927  }
928 
929  game_starting_year = 1168;
930 
931  pParty = new Party;
932  memset(&pParty->pHirelings, 0, sizeof(pParty->pHirelings));
933  pParty->uWalkSpeed = 384;
934  pParty->uDefaultEyelevel = 160;
938 
939  MM6_Initialize();
940 
942 
943  OnTimer(1);
945 
946  MM7_LoadLods(mm7_path.c_str());
947 
948  localization = new Localization();
950 
951  {
952  void *sft_mm6 = pIcons_LOD_mm6 ? pIcons_LOD_mm6->LoadCompressedTexture("dsft.bin")
953  : nullptr,
954  *sft_mm8 = nullptr;
955  void *sft_mm7 = pEvents_LOD->LoadCompressedTexture("dsft.bin");
957  pSpriteFrameTable->FromFile(sft_mm6, sft_mm7, sft_mm8);
958  free(sft_mm6);
959  free(sft_mm7);
960  free(sft_mm8);
961 
962  void *tft_mm6 = pIcons_LOD_mm6 ? pIcons_LOD_mm6->LoadCompressedTexture("dtft.bin")
963  : nullptr,
964  *tft_mm8 = nullptr;
965  void *tft_mm7 = pEvents_LOD->LoadCompressedTexture("dtft.bin");
967  pTextureFrameTable->FromFile(tft_mm6, tft_mm7, tft_mm8);
968  free(tft_mm6);
969  free(tft_mm7);
970  free(tft_mm8);
971 
972  void *tiles_mm6 = pIcons_LOD_mm6
973  ? pIcons_LOD_mm6->LoadCompressedTexture("dtile.bin")
974  : nullptr,
975  *tiles_mm8 = nullptr;
976  void *tiles_mm7 = pEvents_LOD->LoadCompressedTexture("dtile.bin");
977  pTileTable = new TileTable;
978  pTileTable->FromFile(tiles_mm6, tiles_mm7, tiles_mm8);
979  free(tiles_mm6);
980  free(tiles_mm7);
981  free(tiles_mm8);
982 
983  void *pft_mm6 = pIcons_LOD_mm6 ? pIcons_LOD_mm6->LoadCompressedTexture("dpft.bin")
984  : nullptr,
985  *pft_mm8 = nullptr;
986  void *pft_mm7 = pEvents_LOD->LoadCompressedTexture("dpft.bin");
988  pPlayerFrameTable->FromFile(pft_mm6, pft_mm7, pft_mm8);
989  free(pft_mm6);
990  free(pft_mm7);
991  free(pft_mm8);
992 
993  void *ift_mm6 = pIcons_LOD_mm6 ? pIcons_LOD_mm6->LoadCompressedTexture("dift.bin")
994  : nullptr,
995  *ift_mm8 = nullptr;
996  void *ift_mm7 = pEvents_LOD->LoadCompressedTexture("dift.bin");
998  pIconsFrameTable->FromFile(ift_mm6, ift_mm7, ift_mm8);
999  free(ift_mm6);
1000  free(ift_mm7);
1001  free(ift_mm8);
1002 
1003  void *decs_mm6 = pIcons_LOD_mm6
1004  ? pIcons_LOD_mm6->LoadCompressedTexture("ddeclist.bin")
1005  : nullptr,
1006  *decs_mm8 = nullptr;
1007  void *decs_mm7 = pEvents_LOD->LoadCompressedTexture("ddeclist.bin");
1009  pDecorationList->FromFile(decs_mm6, decs_mm7, decs_mm8);
1010  free(decs_mm6);
1011  free(decs_mm7);
1012  free(decs_mm8);
1013 
1014  void *objs_mm6 = pIcons_LOD_mm6
1015  ? pIcons_LOD_mm6->LoadCompressedTexture("dobjlist.bin")
1016  : nullptr,
1017  *objs_mm8 = nullptr;
1018  void *objs_mm7 = pEvents_LOD->LoadCompressedTexture("dobjlist.bin");
1019  pObjectList = new ObjectList;
1020  pObjectList->FromFile(objs_mm6, objs_mm7, objs_mm8);
1021  free(objs_mm6);
1022  free(objs_mm7);
1023  free(objs_mm8);
1024 
1025  void *mons_mm6 = pIcons_LOD_mm6
1026  ? pIcons_LOD_mm6->LoadCompressedTexture("dmonlist.bin")
1027  : nullptr,
1028  *mons_mm8 = nullptr;
1029  void *mons_mm7 = pEvents_LOD->LoadCompressedTexture("dmonlist.bin");
1030  pMonsterList = new MonsterList;
1031  pMonsterList->FromFile(mons_mm6, mons_mm7, mons_mm8);
1032  free(mons_mm6);
1033  free(mons_mm7);
1034  free(mons_mm8);
1035 
1036  void *chests_mm6 = pIcons_LOD_mm6
1037  ? pIcons_LOD_mm6->LoadCompressedTexture("dchest.bin")
1038  : nullptr,
1039  *chests_mm8 = nullptr;
1040  void *chests_mm7 = pEvents_LOD->LoadCompressedTexture("dchest.bin");
1041  pChestList = new ChestList;
1042  pChestList->FromFile(chests_mm6, chests_mm7, chests_mm8);
1043  free(chests_mm6);
1044  free(chests_mm7);
1045  free(chests_mm8);
1046 
1047  void *overlays_mm6 = pIcons_LOD_mm6
1048  ? pIcons_LOD_mm6->LoadCompressedTexture("doverlay.bin")
1049  : nullptr,
1050  *overlays_mm8 = nullptr;
1051  void *overlays_mm7 = pEvents_LOD->LoadCompressedTexture("doverlay.bin");
1052  pOverlayList = new OverlayList;
1053  pOverlayList->FromFile(overlays_mm6, overlays_mm7, overlays_mm8);
1054  free(overlays_mm6);
1055  free(overlays_mm7);
1056  free(overlays_mm8);
1057 
1058  void *sounds_mm6 = pIcons_LOD_mm6
1059  ? pIcons_LOD_mm6->LoadCompressedTexture("dsounds.bin")
1060  : nullptr,
1061  *sounds_mm8 = nullptr;
1062  void *sounds_mm7 = pEvents_LOD->LoadCompressedTexture("dsounds.bin");
1063  pSoundList = new SoundList;
1064  pSoundList->FromFile(sounds_mm6, sounds_mm7, sounds_mm8);
1065  free(sounds_mm6);
1066  free(sounds_mm7);
1067  free(sounds_mm8);
1068  }
1069 
1070  if (!config->NoSound())
1072 
1073  pMediaPlayer = new MPlayer();
1075 
1076  dword_6BE364_game_settings_1 |= GAME_SETTINGS_4000;
1077 
1078  return true;
1079 }

Перекрестные ссылки OSWindowFactory::Create(), Graphics::IRenderFactory::Create(), Timer::Create(), dword_6BE364_game_settings_1, PlayerFrameTable::FromFile(), ChestList::FromFile(), ObjectList::FromFile(), IconFrameTable::FromFile(), OverlayList::FromFile(), DecorationList::FromFile(), SpriteFrameTable::FromFile(), TileTable::FromFile(), TextureFrameTable::FromFile(), SoundList::FromFile(), MonsterList::FromFile(), game_starting_year, GameUI_StatusBar_Update(), Localization::Initialize(), MPlayer::Initialize(), Timer::Initialize(), AudioPlayer::Initialize(), LOD::File::LoadCompressedTexture(), localization, log, MM6_Initialize(), MM7_LoadLods(), OnTimer(), OS_GetTime(), pAudioPlayer, pChestList, pDecorationList, pEvents_LOD, pEventTimer, Party::pHirelings, pIcons_LOD_mm6, pIconsFrameTable, pKeyActionMap, pMediaPlayer, pMonsterList, pObjectList, pOverlayList, pParty, pPlayerFrameTable, pSoundList, pSpriteFrameTable, pTextureFrameTable, pTileTable, render, Party::sEyelevel, Party::uDefaultEyelevel, Party::uDefaultPartyHeight, Party::uPartyHeight, Party::uWalkSpeed и Log::Warning().

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

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

◆ IsUnderwater()

bool Engine::IsUnderwater ( ) const
inline

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

133 { return config->IsUnderwater(); }

◆ CanSaturateFaces()

bool Engine::CanSaturateFaces ( ) const
inline

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

134 { return config->CanSaturateFaces(); } // this is for perception - move to party

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

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

◆ AllowSnow()

bool Engine::AllowSnow ( ) const
inline

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

135 { return config->allow_snow; }

◆ SetUnderwater()

void Engine::SetUnderwater ( bool  is_underwater)
inline

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

136  {
137  EngineConfigFactory engineConfigFactory;
138  auto new_config = engineConfigFactory.Clone(config);
139  new_config->SetUnderwater(is_underwater);
140 
141  this->config = new_config;
142  }

Перекрестные ссылки Engine_::EngineConfigFactory::Clone().

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

◆ SetSaturateFaces()

void Engine::SetSaturateFaces ( bool  saturate)
inline

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

143  {
144  EngineConfigFactory engineConfigFactory;
145  auto new_config = engineConfigFactory.Clone(config);
146  new_config->SetSaturateFaces(saturate);
147 
148  this->config = new_config;
149  }

Перекрестные ссылки Engine_::EngineConfigFactory::Clone().

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

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

◆ SetForceRedraw()

void Engine::SetForceRedraw ( bool  redraw)
inline

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

150  {
151  EngineConfigFactory engineConfigFactory;
152  auto new_config = engineConfigFactory.Clone(config);
153  new_config->SetForceRedraw(redraw);
154 
155  this->config = new_config;
156  }

Перекрестные ссылки Engine_::EngineConfigFactory::Clone().

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

◆ SetTargetingMode()

void Engine::SetTargetingMode ( bool  is_targeting)
inline

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

157  {
158  MutateConfig(
159  [is_targeting](std::shared_ptr<EngineConfig> &cfg) {
160  cfg->SetTargetingMode(is_targeting);
161  });
162  }

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

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

◆ SetDebugWizardEye()

void Engine::SetDebugWizardEye ( bool  wizard_eye)
inline

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

163  {
164  MutateConfig(
165  [wizard_eye](std::shared_ptr<EngineConfig> &cfg) {
166  cfg->debug_wizard_eye = wizard_eye;
167  });
168  }

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

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

◆ SetDebugAllMagic()

void Engine::SetDebugAllMagic ( bool  all_magic)
inline

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

169  {
170  MutateConfig(
171  [all_magic](std::shared_ptr<EngineConfig> &cfg) {
172  cfg->debug_all_magic = all_magic;
173  });
174  }

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

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

◆ SetDebugShowFps()

void Engine::SetDebugShowFps ( bool  show_fps)
inline

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

175  {
176  MutateConfig(
177  [show_fps](std::shared_ptr<EngineConfig> &cfg) {
178  cfg->show_fps = show_fps;
179  });
180  }

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

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

◆ SetDebugShowPickedFace()

void Engine::SetDebugShowPickedFace ( bool  show_picked_face)
inline

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

181  {
182  MutateConfig(
183  [show_picked_face](std::shared_ptr<EngineConfig> &cfg) {
184  cfg->show_picked_face = show_picked_face;
185  });
186  }

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

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

◆ SetDebugPortalOutlines()

void Engine::SetDebugPortalOutlines ( bool  portal_outlines)
inline

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

187  {
188  MutateConfig(
189  [portal_outlines](std::shared_ptr<EngineConfig> &cfg) {
190  cfg->debug_portal_outlines = portal_outlines;
191  });
192  }

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

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

◆ SetDebugTurboSpeed()

void Engine::SetDebugTurboSpeed ( bool  turbo_speed)
inline

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

193  {
194  MutateConfig(
195  [turbo_speed](std::shared_ptr<EngineConfig> &cfg) {
196  cfg->debug_turbo_speed = turbo_speed;
197  });
198  }

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

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

◆ SetSeasonsChange()

void Engine::SetSeasonsChange ( bool  seasons_change)
inline

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

199  {
200  MutateConfig(
201  [seasons_change](std::shared_ptr<EngineConfig> &cfg) {
202  cfg->seasons_change = seasons_change;
203  });
204  }

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

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

◆ SetAllowSnow()

void Engine::SetAllowSnow ( bool  allow_snow)
inline

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

205  {
206  MutateConfig(
207  [allow_snow](std::shared_ptr<EngineConfig> &cfg) {
208  cfg->allow_snow = allow_snow;
209  });
210  }

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

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

◆ SetExtendedDrawDistance()

void Engine::SetExtendedDrawDistance ( bool  extended_draw_distance)
inline

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

211  {
212  MutateConfig(
213  [extended_draw_distance](std::shared_ptr<EngineConfig> &cfg) {
214  cfg->extended_draw_distance = extended_draw_distance;
215  });
216  }

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

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

◆ SetNoActors()

void Engine::SetNoActors ( bool  no_actors)
inline

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

217  {
218  MutateConfig(
219  [no_actors](std::shared_ptr<EngineConfig> &cfg) {
220  cfg->no_actors = no_actors;
221  });
222  }

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

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

◆ SetAllowLightmaps()

void Engine::SetAllowLightmaps ( bool  allow_lightmaps)
inline

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

223  {
224  MutateConfig(
225  [allow_lightmaps](std::shared_ptr<EngineConfig> &cfg) {
226  cfg->allow_lightmaps = allow_lightmaps;
227  });
228  }

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

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

◆ SetDebugLightmapsDecals()

void Engine::SetDebugLightmapsDecals ( bool  debug_lightmaps_decals)
inline

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

229  {
230  MutateConfig(
231  [debug_lightmaps_decals](std::shared_ptr<EngineConfig> &cfg) {
232  cfg->debug_lightmaps_decals = debug_lightmaps_decals;
233  });
234  }

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

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

◆ SetDebugTerrain()

void Engine::SetDebugTerrain ( bool  debug_terrain)
inline

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

235  {
236  MutateConfig(
237  [debug_terrain](std::shared_ptr<EngineConfig> &cfg) {
238  cfg->debug_terrain = debug_terrain;
239  });
240  }

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

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

◆ ToggleAlwaysRun()

void Engine::ToggleAlwaysRun ( )
inline

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

241  {
242  MutateConfig(
243  [](std::shared_ptr<EngineConfig> &cfg) {
244  cfg->ToggleAlwaysRun();
245  });
246  }

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

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

◆ ToggleFlipOnExit()

void Engine::ToggleFlipOnExit ( )
inline

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

247  {
248  MutateConfig(
249  [](std::shared_ptr<EngineConfig> &cfg) {
250  cfg->ToggleFlipOnExit();
251  });
252  }

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

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

◆ ToggleWalkSound()

void Engine::ToggleWalkSound ( )
inline

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

253  {
254  MutateConfig(
255  [](std::shared_ptr<EngineConfig> &cfg) {
256  cfg->ToggleWalkSound();
257  });
258  }

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

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

◆ ToggleShowDamage()

void Engine::ToggleShowDamage ( )
inline

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

259  {
260  MutateConfig(
261  [](std::shared_ptr<EngineConfig> &cfg) {
262  cfg->ToggleShowDamage();
263  });
264  }

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

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

◆ ToggleBloodsplats()

void Engine::ToggleBloodsplats ( )
inline

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

265  {
266  MutateConfig(
267  [](std::shared_ptr<EngineConfig> &cfg) {
268  cfg->ToggleBloodsplats();
269  });
270  }

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

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

◆ ToggleDebugTownPortal()

void Engine::ToggleDebugTownPortal ( )
inline

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

272  {
273  MutateConfig(
274  [](std::shared_ptr<EngineConfig> &cfg) {
275  cfg->ToggleDebugTownPortal();
276  });
277  }

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

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

◆ ToggleDebugWizardEye()

void Engine::ToggleDebugWizardEye ( )
inline

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

279  {
280  MutateConfig(
281  [](std::shared_ptr<EngineConfig> &cfg) {
282  cfg->ToggleDebugWizardEye();
283  });
284  }

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

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

◆ ToggleDebugAllMagic()

void Engine::ToggleDebugAllMagic ( )
inline

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

286  {
287  MutateConfig(
288  [](std::shared_ptr<EngineConfig> &cfg) {
289  cfg->ToggleDebugAllMagic();
290  });
291  }

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

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

◆ ToggleDebugTerrain()

void Engine::ToggleDebugTerrain ( )
inline

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

293  {
294  MutateConfig(
295  [](std::shared_ptr<EngineConfig> &cfg) {
296  cfg->ToggleDebugTerrain();
297  });
298  }

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

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

◆ ToggleDebugLightmap()

void Engine::ToggleDebugLightmap ( )
inline

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

300  {
301  MutateConfig(
302  [](std::shared_ptr<EngineConfig> &cfg) {
303  cfg->ToggleDebugLightmap();
304  });
305  }

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

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

◆ ToggleDebugTurboSpeed()

void Engine::ToggleDebugTurboSpeed ( )
inline

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

307  {
308  MutateConfig(
309  [](std::shared_ptr<EngineConfig> &cfg) {
310  cfg->ToggleDebugTurboSpeed();
311  });
312  }

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

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

◆ ToggleDebugNoActors()

void Engine::ToggleDebugNoActors ( )
inline

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

314  {
315  MutateConfig(
316  [](std::shared_ptr<EngineConfig> &cfg) {
317  cfg->ToggleDebugNoActors();
318  });
319  }

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

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

◆ ToggleDebugDrawDist()

void Engine::ToggleDebugDrawDist ( )
inline

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

321  {
322  MutateConfig(
323  [](std::shared_ptr<EngineConfig> &cfg) {
324  cfg->ToggleDebugDrawDist();
325  });
326  }

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

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

◆ ToggleDebugSnow()

void Engine::ToggleDebugSnow ( )
inline

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

328  {
329  MutateConfig(
330  [](std::shared_ptr<EngineConfig> &cfg) {
331  cfg->ToggleDebugSnow();
332  });
333  }

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

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

◆ ToggleDebugNoDamage()

void Engine::ToggleDebugNoDamage ( )
inline

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

335  {
336  MutateConfig(
337  [](std::shared_ptr<EngineConfig> &cfg) {
338  cfg->ToggleDebugNoDamage();
339  });
340  }

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

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

◆ ToggleDebugPortalLines()

void Engine::ToggleDebugPortalLines ( )
inline

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

342  {
343  MutateConfig(
344  [](std::shared_ptr<EngineConfig> &cfg) {
345  cfg->ToggleDebugPortalLines();
346  });
347  }

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

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

◆ ToggleDebugPickedFace()

void Engine::ToggleDebugPickedFace ( )
inline

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

349  {
350  MutateConfig(
351  [](std::shared_ptr<EngineConfig> &cfg) {
352  cfg->ToggleDebugPickedFace();
353  });
354  }

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

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

◆ ToggleDebugShowFPS()

void Engine::ToggleDebugShowFPS ( )
inline

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

356  {
357  MutateConfig(
358  [](std::shared_ptr<EngineConfig> &cfg) {
359  cfg->ToggleDebugShowFPS();
360  });
361  }

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

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

◆ ToggleDebugSeasonsChange()

void Engine::ToggleDebugSeasonsChange ( )
inline

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

363  {
364  MutateConfig(
365  [](std::shared_ptr<EngineConfig> &cfg) {
366  cfg->ToggleDebugSeasonsChange();
367  });
368  }

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

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

◆ SetMusicLevel()

void Engine::SetMusicLevel ( int  level)
inline

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

370  {
371  MutateConfig(
372  [level](std::shared_ptr<EngineConfig> &cfg) {
373  int lvl = level;
374  if (lvl < 0)
375  lvl = 0;
376  if (lvl > 9)
377  lvl = 9;
378 
379  cfg->music_level = lvl;
380  });
381  }

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

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

◆ SetSoundLevel()

void Engine::SetSoundLevel ( int  level)
inline

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

382  {
383  MutateConfig(
384  [level](std::shared_ptr<EngineConfig> &cfg) {
385  int lvl = level;
386  if (lvl < 0)
387  lvl = 0;
388  if (lvl > 9)
389  lvl = 9;
390 
391  cfg->sound_level = lvl;
392  });
393  }

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

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

◆ SetVoiceLevel()

void Engine::SetVoiceLevel ( int  level)
inline

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

394  {
395  MutateConfig(
396  [level](std::shared_ptr<EngineConfig> &cfg) {
397  int lvl = level;
398  if (lvl < 0)
399  lvl = 0;
400  if (lvl > 9)
401  lvl = 9;
402 
403  cfg->voice_level = lvl;
404  });
405  }

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

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

◆ SetTurnSpeed()

void Engine::SetTurnSpeed ( int  turn_speed)
inline

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

406  {
407  MutateConfig(
408  [turn_speed](std::shared_ptr<EngineConfig> &cfg) {
409  cfg->turn_speed = turn_speed;
410  });
411  }

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

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

◆ MutateConfig()

void Engine::MutateConfig ( std::function< void(std::shared_ptr< EngineConfig > &)>  mutator)
inline

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

412  {
413  EngineConfigFactory engineConfigFactory;
414  this->Configure(
415  engineConfigFactory.Mutate(config, mutator));
416  }

Перекрестные ссылки Configure() и Engine_::EngineConfigFactory::Mutate().

Используется в SetAllowLightmaps(), SetAllowSnow(), SetDebugAllMagic(), SetDebugLightmapsDecals(), SetDebugPortalOutlines(), SetDebugShowFps(), SetDebugShowPickedFace(), SetDebugTerrain(), SetDebugTurboSpeed(), SetDebugWizardEye(), SetExtendedDrawDistance(), SetMusicLevel(), SetNoActors(), SetSeasonsChange(), SetSoundLevel(), SetTargetingMode(), SetTurnSpeed(), SetVoiceLevel(), ToggleAlwaysRun(), ToggleBloodsplats(), ToggleDebugAllMagic(), ToggleDebugDrawDist(), ToggleDebugLightmap(), ToggleDebugNoActors(), ToggleDebugNoDamage(), ToggleDebugPickedFace(), ToggleDebugPortalLines(), ToggleDebugSeasonsChange(), ToggleDebugShowFPS(), ToggleDebugSnow(), ToggleDebugTerrain(), ToggleDebugTownPortal(), ToggleDebugTurboSpeed(), ToggleDebugWizardEye(), ToggleFlipOnExit(), ToggleShowDamage() и ToggleWalkSound().

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

Данные класса

◆ config

std::shared_ptr<const EngineConfig> Engine::config

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

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

◆ pStationaryLights

Game__StationaryLight Engine::pStationaryLights[25]

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

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

◆ field_2C0

char Engine::field_2C0[1092]

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

◆ uNumStationaryLights

unsigned int Engine::uNumStationaryLights

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

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

◆ pBloodsplats

Game_Bloodsplat Engine::pBloodsplats[20]

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

◆ field_938

int Engine::field_938

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

◆ field_93C

int Engine::field_93C

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

◆ field_940

int Engine::field_940

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

◆ field_944

int Engine::field_944

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

◆ field_948

int Engine::field_948

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

◆ field_94C

int Engine::field_94C

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

◆ field_950

int Engine::field_950

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

◆ field_954

int Engine::field_954

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

◆ field_958

int Engine::field_958

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

◆ field_95C

int Engine::field_95C

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

◆ field_960

int Engine::field_960

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

◆ field_964

int Engine::field_964

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

◆ field_968

int Engine::field_968

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

◆ field_96C

int Engine::field_96C

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

◆ field_970

int Engine::field_970

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

◆ field_978

int Engine::field_978

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

◆ stru_97C

Game_stru0 Engine::stru_97C

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

◆ field_98C

char Engine::field_98C[1148]

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

◆ uNumStationaryLights_in_pStationaryLightsStack

int Engine::uNumStationaryLights_in_pStationaryLightsStack

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

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

◆ fSaturation

float Engine::fSaturation

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

Используется в _44EC23_saturate_face_odm(), _44ED0A_saturate_face_blv(), AlterGamma_BLV() и AlterGamma_ODM().

◆ pStru9Instance

stru9* Engine::pStru9Instance

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

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

◆ pStru10Instance

stru10* Engine::pStru10Instance

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

Используется в _44EEA7(), Engine() и ~Engine().

◆ log

Log* Engine::log = nullptr

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

Используется в Engine(), Initialize(), MM7_Initialize() и OutlineSelection().

◆ bloodsplat_container

BloodsplatContainer* Engine::bloodsplat_container = nullptr

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

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

◆ decal_builder

DecalBuilder* Engine::decal_builder = nullptr

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

Используется в _44EEA7(), Draw(), draw_debug_outlines() и Engine().

◆ spell_fx_renedrer

SpellFxRenderer* Engine::spell_fx_renedrer = nullptr

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

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

◆ lightmap_builder

LightmapBuilder* Engine::lightmap_builder = nullptr

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

Используется в _44EEA7(), Draw(), draw_debug_outlines() и Engine().

◆ mouse

Mouse* Engine::mouse = nullptr

◆ keyboard

Keyboard* Engine::keyboard = nullptr

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

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

◆ particle_engine

ParticleEngine* Engine::particle_engine = nullptr

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

Используется в _44EEA7(), DrawParticles() и Engine().

◆ vis

Vis* Engine::vis = nullptr

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

Используется в Engine(), OnGameViewportClick(), OutlineSelection(), PickKeyboard() и PickMouse().


Объявления и описания членов структур находятся в файлах:
Party::pPickedItem
ItemGen pPickedItem
Definition: Party.h:312
SpriteObject
Definition: SpriteObject.h:189
PARTY_FLAGS_1_FALLING
@ PARTY_FLAGS_1_FALLING
Definition: Party.h:58
TE_MOVEMENT
@ TE_MOVEMENT
Definition: TurnEngine.h:22
LightsStack_StationaryLight_::uNumLightsActive
unsigned int uNumLightsActive
Definition: Lights.h:65
GameUI_DrawRightPanel
void GameUI_DrawRightPanel()
Definition: UIGame.cpp:1248
PlayerFrameTable
Definition: PlayerFrameTable.h:18
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
ViewingParams::field_48
int field_48
Definition: Viewport.h:75
uNumActors
size_t uNumActors
Definition: Actor.cpp:39
Party::vPosition
Vec3_int_ vPosition
Definition: Party.h:250
IndoorLocation::uNumSectors
int uNumSectors
Definition: Indoor.h:633
face
GLenum GLuint GLint GLenum face
Definition: SDL_opengl_glext.h:3022
pNew_LOD
LOD::WriteableFile * pNew_LOD
Definition: LOD.cpp:24
ParticleEngine::Draw
void Draw()
Definition: ParticleEngine.cpp:113
GameUI_DrawRightPanelItems
void GameUI_DrawRightPanelItems()
Definition: UIGame.cpp:1154
pChestList
ChestList * pChestList
Definition: Chest.cpp:38
Engine::Configure
bool Configure(std::shared_ptr< const EngineConfig > config)
Definition: Engine.h:101
stru10
Definition: stru10.h:5
pLevelDecorations
std::array< LevelDecoration, 3000 > pLevelDecorations
Definition: Decoration.cpp:8
Party::y_rotation_granularity
int y_rotation_granularity
Definition: Party.h:242
SetDataPath
void SetDataPath(const char *data_path)
Definition: Engine.cpp:124
SpriteObject::uFacing
unsigned __int16 uFacing
Definition: SpriteObject.h:220
IndoorCameraD3D::sRotationY
int sRotationY
Definition: IndoorCameraD3D.h:247
GameUI_DrawLifeManaBars
void GameUI_DrawLifeManaBars()
Definition: UIGame.cpp:1197
DecorationList::GetDecoration
DecorationDesc * GetDecoration(unsigned int index)
Definition: DecorationList.h:65
Timer::Initialize
void Initialize()
Definition: Time.cpp:72
Vec2::x
T x
Definition: VectorTypes.h:12
Game__StationaryLight::flt_18
float flt_18
Definition: Engine.h:50
Mouse::GetCursorPos
Point GetCursorPos()
Definition: Mouse.cpp:108
GenerateItemsInChest
void GenerateItemsInChest()
Definition: Chest.cpp:631
pTextureFrameTable
struct TextureFrameTable * pTextureFrameTable
Definition: Image.cpp:20
IconFrameTable::InitializeAnimation
void InitializeAnimation(unsigned int uIconID)
Definition: IconFrameTable.cpp:59
pSpriteFrameTable
struct SpriteFrameTable * pSpriteFrameTable
Definition: Sprites.cpp:22
PaletteManager::SetColorChannelInfo
void SetColorChannelInfo(int uNumRBits, int uNumGBits, int uNumBBits)
Definition: PaletteManager.cpp:167
OutdoorLocation::pBModels
BSPModelList pBModels
Definition: Outdoor.h:119
pSpriteObjects
std::array< SpriteObject, MAX_SPRITE_OBJECTS > pSpriteObjects
Definition: SpriteObject.cpp:34
pSprites_LOD
LODFile_Sprites * pSprites_LOD
Definition: LOD.cpp:20
Party
Definition: Party.h:151
vis_sprite_filter_1
Vis_SelectionFilter vis_sprite_filter_1
Definition: Vis.cpp:22
Viewport::uViewportTL_Y
int uViewportTL_Y
Definition: Viewport.h:23
DecorationList::FromFile
void FromFile(void *data_mm6, void *data_mm7, void *data_mm8)
Definition: DecorationList.cpp:14
OBJECT_Item
@ OBJECT_Item
Definition: Actor.h:66
Vec3_float_::x
float x
Definition: VectorTypes.h:89
OverlayList::InitializeSprites
void InitializeSprites()
Definition: Overlays.cpp:100
IconFrameTable::FromFile
void FromFile(void *data_mm6, void *data_mm7, void *data_mm8)
Definition: IconFrameTable.cpp:87
Engine::keyboard
Keyboard * keyboard
Definition: Engine.h:470
Mouse::Deactivate
void Deactivate()
Definition: Mouse.cpp:137
Party::sPrevRotationX
int sPrevRotationX
Definition: Party.h:255
Party::sRotationX
int sRotationX
Definition: Party.h:252
NPCStats::InitializeAdditionalNPCs
void InitializeAdditionalNPCs(NPCData *pNPCDataBuff, int npc_uid, int uLocation2D, int uMapId)
Definition: NPC.cpp:582
_44100D_should_alter_right_panel
bool _44100D_should_alter_right_panel()
Definition: Engine.cpp:2454
dword_5C6DF8
int dword_5C6DF8
Definition: mm7_data.cpp:651
Engine_::IocContainer::ResolveBloodsplatContainer
static BloodsplatContainer * ResolveBloodsplatContainer()
Definition: IocContainer.cpp:67
GameUI_DrawMinimap
void GameUI_DrawMinimap(unsigned int uX, unsigned int uY, unsigned int uZ, unsigned int uW, unsigned int uZoom, unsigned int bRedrawOdmMinimap)
Definition: UIGame.cpp:1916
Engine_::IocContainer::ResolveLogger
static Log * ResolveLogger()
Definition: IocContainer.cpp:51
LOD::File::LoadCompressedTexture
void * LoadCompressedTexture(const String &pContainer, size_t *data_size=nullptr)
Definition: LOD.cpp:921
pIconsFrameTable
struct IconFrameTable * pIconsFrameTable
Definition: mm7_data.cpp:168
ParticleEngine::UpdateParticles
void UpdateParticles()
Definition: ParticleEngine.cpp:134
LightmapBuilder::DrawLightmapsType
void DrawLightmapsType(int type)
Definition: LightmapBuilder.cpp:796
MapStats::GetMapInfo
MAP_TYPE GetMapInfo(const String &Str2)
Definition: MapInfo.cpp:225
GameUI_StatusBar_NothingHere
void GameUI_StatusBar_NothingHere()
Definition: UIStatusBar.cpp:57
level
GLint level
Definition: SDL_opengl.h:1572
OtherOverlayList::bRedraw
int bRedraw
Definition: Overlays.h:38
Party::sEyelevel
int sEyelevel
Definition: Party.h:239
SpriteObject::uSectorID
__int16 uSectorID
Definition: SpriteObject.h:223
Party::field_7B5_in_arena_quest
char field_7B5_in_arena_quest
Definition: Party.h:293
engine
std::shared_ptr< Engine > engine
Definition: Engine.cpp:130
IndoorLocation::pFaceExtras
struct BLVFaceExtra * pFaceExtras
Definition: Indoor.h:632
pSoundList
SoundList * pSoundList
Definition: AudioPlayer.cpp:21
init_event_triggers
void init_event_triggers()
Definition: Events.cpp:1205
vis_face_filter
Vis_SelectionFilter vis_face_filter
Definition: Vis.cpp:26
Graphics::IRenderFactory::Create
std::shared_ptr< IRender > Create(const std::string &renderer_name, bool is_fullscreen)
Definition: IRenderFactory.cpp:14
DecorationInteraction
void DecorationInteraction(unsigned int id, unsigned int pid)
Definition: Viewport.cpp:271
Engine::lightmap_builder
LightmapBuilder * lightmap_builder
Definition: Engine.h:468
windowManager
WindowManager windowManager
Definition: GUIWindow.cpp:2501
BLVFaceExtra::uEventID
uint16_t uEventID
Definition: Indoor.h:512
Party::uDefaultPartyHeight
unsigned int uDefaultPartyHeight
Definition: Party.h:238
ObjectList::InitializeColors
void InitializeColors()
Definition: ObjectList.cpp:26
Timer::Create
static Timer * Create()
Definition: Time.h:105
Polygon::field_59
char field_59
Definition: Polygon.h:49
IndoorCameraD3D::GetPickDepth
float GetPickDepth()
Definition: IndoorCameraD3D.cpp:61
game_starting_year
int game_starting_year
Definition: mm7_data.cpp:193
PauseGameDrawing
bool PauseGameDrawing()
Definition: GUIWindow.cpp:137
localization
Localization * localization
Definition: Localization.cpp:11
GameUI_DrawTorchlightAndWizardEye
void GameUI_DrawTorchlightAndWizardEye()
Definition: UIGame.cpp:2205
LEVEL_null
@ LEVEL_null
Definition: Indoor.h:285
Point::x
unsigned int x
Definition: Point.h:7
SpriteFrameTable
Definition: Sprites.h:57
IndoorCameraD3D::sRotationX
int sRotationX
Definition: IndoorCameraD3D.h:248
Viewport::uScreen_TL_X
int uScreen_TL_X
Definition: Viewport.h:18
OverlayList
Definition: Overlays.h:53
pMediaPlayer
MPlayer * pMediaPlayer
Definition: MediaPlayer.cpp:43
ObjectList::ObjectIDByItemID
unsigned int ObjectIDByItemID(unsigned int uItemID)
Definition: ObjectList.cpp:7
PaletteManager::LockAll
int LockAll()
Definition: PaletteManager.cpp:137
MM6_Initialize
void MM6_Initialize()
Definition: Engine.cpp:1228
GameUI_DrawHiredNPCs
void GameUI_DrawHiredNPCs()
Definition: UIGame.cpp:2236
TextureFrameTable::FromFile
void FromFile(void *data_mm6, void *data_mm7, void *data_mm8)
Definition: Image.cpp:83
IconFrameTable
Definition: IconFrameTable.h:51
Party::UpdatePlayersAndHirelingsEmotions
void UpdatePlayersAndHirelingsEmotions()
Definition: Party.cpp:657
NPCStats::Release
void Release()
Definition: NPC.cpp:556
SpriteObject::uType
SPRITE_OBJECT_TYPE uType
Definition: SpriteObject.h:215
_576E2C_current_minimap_zoom
int _576E2C_current_minimap_zoom
Definition: mm7_data.cpp:600
Party::uDefaultEyelevel
unsigned int uDefaultEyelevel
Definition: Party.h:240
pMovie_Track
PMovie pMovie_Track
Definition: MediaPlayer.cpp:44
Mouse::DrawCursorToTarget
void DrawCursorToTarget()
Definition: Mouse.cpp:197
Game__StationaryLight::vPosition
Vec3_float_ vPosition
Definition: Engine.h:48
Engine::decal_builder
DecalBuilder * decal_builder
Definition: Engine.h:466
OBJECT_Decoration
@ OBJECT_Decoration
Definition: Actor.h:69
Game__StationaryLight
Definition: Engine.h:47
AudioPlayer::Initialize
void Initialize()
Definition: AudioPlayer.cpp:364
qword_5C6DF0
int64_t qword_5C6DF0
Definition: mm7_data.cpp:650
SpellFxRenderer::LoadAnimations
void LoadAnimations()
Definition: SpellFxRenderer.cpp:1339
Vec3_float_::y
float y
Definition: VectorTypes.h:90
Vec3_float_::z
float z
Definition: VectorTypes.h:91
LightmapBuilder::MobileLightsCount
unsigned int MobileLightsCount
Definition: LightmapBuilder.h:85
DecorationDesc_mm6::uRadius
int16_t uRadius
Definition: DecorationList.h:41
pPlayers
NZIArray< struct Player *, 5 > pPlayers
Definition: Player.cpp:46
Initialize_GlobalEVT
void Initialize_GlobalEVT()
Definition: Events.cpp:73
SpriteObject::uSpriteFrameID
unsigned __int16 uSpriteFrameID
Definition: SpriteObject.h:224
Vis::get_picked_object_zbuf_val
int get_picked_object_zbuf_val()
Definition: Vis.cpp:517
Mouse::bRedraw
unsigned int bRedraw
Definition: Mouse.h:320
pIndoor
IndoorLocation * pIndoor
Definition: Indoor.cpp:49
Mouse::Activate
void Activate()
Definition: Mouse.cpp:193
current_screen_type
enum CURRENT_SCREEN current_screen_type
Definition: GUIWindow.cpp:83
LightmapBuilder::DrawDebugOutlines
void DrawDebugOutlines(char bit_one_for_list1__bit_two_for_list2)
Definition: LightmapBuilder.cpp:1077
pTurnEngine
struct stru262_TurnBased * pTurnEngine
Definition: TurnEngine.cpp:21
Dead
@ Dead
Definition: Actor.h:80
result
GLuint64EXT * result
Definition: SDL_opengl_glext.h:9435
IndoorCameraD3D
Definition: IndoorCameraD3D.h:104
pMapStats
struct MapStats * pMapStats
Definition: mm7_data.cpp:20
SpriteObject::uObjectDescID
unsigned __int16 uObjectDescID
Definition: SpriteObject.h:217
OBJECT_Actor
@ OBJECT_Actor
Definition: Actor.h:67
Engine::MM7_Initialize
bool MM7_Initialize(const std::string &mm7_path)
Definition: Engine.cpp:903
Party::uPartyHeight
unsigned int uPartyHeight
Definition: Party.h:237
WindowManager::DeleteAllVisibleWindows
void DeleteAllVisibleWindows()
Definition: GUIWindow.cpp:2503
Engine::config
std::shared_ptr< const EngineConfig > config
Definition: Engine.h:419
_4E94D0_light_type
char _4E94D0_light_type
Definition: mm7_data.cpp:305
pItemsTable
struct ItemsTable * pItemsTable
Definition: Items.cpp:37
Viewport::uScreen_TL_Y
int uScreen_TL_Y
Definition: Viewport.h:19
TextureFrameTable
Definition: Image.h:131
TE_FLAG_8
@ TE_FLAG_8
Definition: TurnEngine.h:7
Vis_ObjectInfo::object
void * object
Definition: Vis.h:29
UIMSG_CastQuickSpell
@ UIMSG_CastQuickSpell
Definition: GUIWindow.h:29
pWeather
Weather * pWeather
Definition: Weather.cpp:8
SoundList::Initialize
void Initialize()
Definition: AudioPlayer.cpp:72
IndoorCameraD3D::CalculateRotations
void CalculateRotations(int camera_rot_x, int camera_rot_y)
Definition: IndoorCameraD3D.cpp:1184
GameUI_StatusBar_Update
void GameUI_StatusBar_Update(bool force_hide)
Definition: Engine.cpp:1507
IconFrameTable::GetIcon
Icon * GetIcon(unsigned int idx)
Definition: IconFrameTable.cpp:17
DecalBuilder::DrawDecalDebugOutlines
void DrawDecalDebugOutlines()
Definition: DecalBuilder.cpp:528
Viewport::uScreen_BR_Y
int uScreen_BR_Y
Definition: Viewport.h:21
IndoorCameraD3D::vPartyPos
Vec3< int > vPartyPos
Definition: IndoorCameraD3D.h:253
Vec2::y
T y
Definition: VectorTypes.h:13
Engine::pStationaryLights
Game__StationaryLight pStationaryLights[25]
Definition: Engine.h:420
OSWindowFactory
Definition: OSWindowFactory.h:4
SpriteFrameTable::FromFile
void FromFile(void *data_mm6, void *data_mm7, void *data_mm8)
Definition: Sprites.cpp:378
SpriteObject::vPosition
struct Vec3_int_ vPosition
Definition: SpriteObject.h:218
Mouse::Initialize
void Initialize(OSWindow *window)
Definition: Mouse.cpp:112
pParty
Party * pParty
Definition: Party.cpp:30
Engine_::IocContainer::ResolveVis
static Vis * ResolveVis()
Definition: IocContainer.cpp:110
LODFile_IconsBitmaps::_inlined_sub0
void _inlined_sub0()
Definition: LOD.cpp:50
Engine_::IocContainer::ResolveParticleEngine
static ParticleEngine * ResolveParticleEngine()
Definition: IocContainer.cpp:103
LOD::WriteableFile::FreeSubIndexAndIO
void FreeSubIndexAndIO()
Definition: LOD.cpp:732
Party::_497FC5_check_party_perception_against_level
bool _497FC5_check_party_perception_against_level()
Definition: Party.cpp:130
pUIAnims
std::array< class UIAnimation *, 4 > pUIAnims
Definition: Party.cpp:52
Engine::mouse
Mouse * mouse
Definition: Engine.h:469
GameUI_DrawRightPanelFrames
void GameUI_DrawRightPanelFrames()
Definition: UIGame.cpp:1254
pIcons_LOD_mm6
LODFile_IconsBitmaps * pIcons_LOD_mm6
Definition: LOD.cpp:13
ViewingParams::uMinimapZoom
unsigned int uMinimapZoom
Definition: Viewport.h:65
pFontArrus
GUIFont * pFontArrus
Definition: GUIFont.cpp:18
Party::vPrevPosition
Vec3_int_ vPrevPosition
Definition: Party.h:253
Engine::_44F07B
bool _44F07B()
Definition: Keyboard.cpp:38
Engine_::EngineConfigFactory
Definition: EngineConfigFactory.h:15
Keyboard::WasKeyPressed
bool WasKeyPressed(int vKey)
Definition: Keyboard.cpp:327
OBJECT_BModel
@ OBJECT_BModel
Definition: Actor.h:70
vis_sprite_filter_2
Vis_SelectionFilter vis_sprite_filter_2
Definition: Vis.cpp:24
Vis_SelectionFilter
Definition: Vis.h:12
PaletteManager::LockTestAll
int LockTestAll()
Definition: PaletteManager.cpp:152
pGameLoadingUI_ProgressBar
GUIProgressBar * pGameLoadingUI_ProgressBar
Definition: GUIProgressBar.cpp:14
NPCStats::pNPCData
NPCData pNPCData[501]
Definition: NPC.h:164
viewparams
struct ViewingParams * viewparams
Definition: mm7_data.cpp:22
vis_sprite_filter_4
Vis_SelectionFilter vis_sprite_filter_4
Definition: Vis.cpp:32
OS_GetTime
unsigned int OS_GetTime()
Definition: Lin.cpp:12
Engine::bloodsplat_container
BloodsplatContainer * bloodsplat_container
Definition: Engine.h:465
Engine::log
Log * log
Definition: Engine.h:464
LODFile_IconsBitmaps::SetupPalettes
void SetupPalettes(unsigned int uTargetRBits, unsigned int uTargetGBits, unsigned int uTargetBBits)
Definition: LOD.cpp:872
SpriteFrameTable::ResetSomeSpriteFlags
void ResetSomeSpriteFlags()
Definition: Sprites.cpp:32
Viewport::uScreen_BR_X
int uScreen_BR_X
Definition: Viewport.h:20
BLVFace
Definition: Indoor.h:424
VisObjectType_Sprite
@ VisObjectType_Sprite
Definition: Vis.h:6
ItemGen::uItemID
int uItemID
Definition: Items.h:326
IndoorLocation::Draw
void Draw()
Definition: Indoor.cpp:322
Engine_::IocContainer::ResolveDecalBuilder
static DecalBuilder * ResolveDecalBuilder()
Definition: IocContainer.cpp:60
OtherOverlayList::DrawTurnBasedIcon
void DrawTurnBasedIcon(int a2)
Definition: Overlays.cpp:67
NPCStats::uNewlNPCBufPos
unsigned int uNewlNPCBufPos
Definition: NPC.h:178
LODFile_Sprites::_inlined_sub0
void _inlined_sub0()
Definition: LOD.cpp:55
Engine_::EngineConfigFactory::Clone
std::shared_ptr< EngineConfig > Clone(std::shared_ptr< const EngineConfig > other)
Definition: EngineConfigFactory.cpp:69
Localization
Definition: Localization.h:8
Weather::Draw
void Draw()
Definition: Weather.cpp:50
Initialize_GamesLOD_NewLOD
bool Initialize_GamesLOD_NewLOD()
Definition: LOD.cpp:1218
sub_4637E0_is_there_popup_onscreen
char sub_4637E0_is_there_popup_onscreen()
Definition: GUIWindow.cpp:1361
LODFile_IconsBitmaps::ReleaseAll2
void ReleaseAll2()
Definition: LOD.cpp:223
UI_Create
void UI_Create()
Definition: GUIWindow.cpp:2539
GameUI_StatusBar_DrawForced
void GameUI_StatusBar_DrawForced()
Definition: UIStatusBar.cpp:63
GameUI_StatusBar_Draw
void GameUI_StatusBar_Draw()
Definition: UIStatusBar.cpp:71
SoundList
Definition: AudioPlayer.h:157
Engine_::IocContainer::ResolveMouse
static Mouse * ResolveMouse()
Definition: IocContainer.cpp:88
MonsterList
Definition: Monsters.h:226
Log::Warning
void Warning(const wchar_t *pFormat,...)
Definition: Log.cpp:28
pIcons_LOD
LODFile_IconsBitmaps * pIcons_LOD
Definition: LOD.cpp:12
LODFile_IconsBitmaps::LoadTexture
unsigned int LoadTexture(const char *pContainer, enum TEXTURE_TYPE uTextureType=TEXTURE_DEFAULT)
Definition: LOD.cpp:1185
Engine::uNumStationaryLights
unsigned int uNumStationaryLights
Definition: Engine.h:422
AudioPlayer::StopChannels
void StopChannels(int uStartChannel, int uEndChannel)
Definition: AudioPlayer.cpp:331
IndoorCameraD3D::CreateWorldMatrixAndSomeStuff
void CreateWorldMatrixAndSomeStuff()
Definition: IndoorCameraD3D.cpp:489
Engine::OutlineSelection
void OutlineSelection()
Definition: Engine.cpp:718
pActors
std::array< Actor, 500 > pActors
Definition: Actor.cpp:38
pPlayerFrameTable
struct PlayerFrameTable * pPlayerFrameTable
Definition: mm7_data.cpp:171
FindMm7Directory
const char * FindMm7Directory(char *mm7_path)
Definition: Engine.cpp:1152
Viewport::uViewportBR_X
int uViewportBR_X
Definition: Viewport.h:24
uNumLevelDecorations
size_t uNumLevelDecorations
Definition: Decoration.cpp:9
window
EGLSurface EGLNativeWindowType * window
Definition: SDL_egl.h:1580
Party::uFlags
unsigned int uFlags
Definition: Party.h:313
f
GLfloat f
Definition: SDL_opengl_glext.h:1873
SpellFxRenderer::DrawPlayerBuffAnims
void DrawPlayerBuffAnims()
Definition: SpellFxRenderer.cpp:1317
GUI_UpdateWindows
void GUI_UpdateWindows()
Definition: GUIWindow.cpp:956
Engine::spell_fx_renedrer
SpellFxRenderer * spell_fx_renedrer
Definition: Engine.h:467
pTileTable
struct TileTable * pTileTable
Definition: mm7_data.cpp:700
NPCStats::pAdditionalNPC
NPCData pAdditionalNPC[100]
Definition: NPC.h:168
OS_IfShiftPressed
bool OS_IfShiftPressed()
Definition: Lin.cpp:18
OSWindowFactory::Create
OSWindow * Create(const char *title, int window_width, int window_height)
Definition: OSWindowFactory.cpp:13
Party::uWalkSpeed
unsigned int uWalkSpeed
Definition: Party.h:243
Engine::vis
Vis * vis
Definition: Engine.h:472
LEVEL_Outdoor
@ LEVEL_Outdoor
Definition: Indoor.h:287
KeyboardActionMapping
Definition: Keyboard.h:45
Mouse::DrawCursor
void DrawCursor()
Definition: Mouse.cpp:143
Timer::Pause
void Pause()
Definition: Time.cpp:19
PlayerFrameTable::FromFile
void FromFile(void *data_mm6, void *data_mm7, void *data_mm8)
Definition: PlayerFrameTable.cpp:79
ObjectList
Definition: ObjectList.h:41
ItemsTable::Release
void Release()
Definition: Items.cpp:157
AssetsManager::GetBitmap
Texture * GetBitmap(const String &name)
Definition: AssetsManager.cpp:126
TileTable
Definition: TileFrameTable.h:74
Vis_ObjectInfo
Definition: Vis.h:28
MPlayer
Definition: MediaPlayer.h:17
depth
GLint GLint GLsizei GLsizei GLsizei depth
Definition: SDL_opengl.h:1572
ObjectList::InitializeSprites
void InitializeSprites()
Definition: ObjectList.cpp:20
Engine::uNumStationaryLights_in_pStationaryLightsStack
int uNumStationaryLights_in_pStationaryLightsStack
Definition: Engine.h:443
DecalBuilder::curent_decal_id
int curent_decal_id
Definition: DecalBuilder.h:161
pCurrentMapName
String pCurrentMapName
Definition: mm7_data.cpp:712
MPlayer::Initialize
void Initialize()
Definition: MediaPlayer.cpp:623
pPaletteManager
PaletteManager * pPaletteManager
Definition: PaletteManager.cpp:7
Party::sPrevRotationY
int sPrevRotationY
Definition: Party.h:254
Viewport::uViewportBR_Y
int uViewportBR_Y
Definition: Viewport.h:25
pMiscTimer
Timer * pMiscTimer
Definition: Time.cpp:7
pEvents_LOD
LODFile_IconsBitmaps * pEvents_LOD
Definition: LOD.cpp:10
Engine_DeinitializeAndTerminate
void Engine_DeinitializeAndTerminate(int exitCode)
Definition: Engine.cpp:157
Engine::DropHeldItem
void DropHeldItem()
Definition: Viewport.cpp:289
Engine::SetSaturateFaces
void SetSaturateFaces(bool saturate)
Definition: Engine.h:143
LEVEL_Indoor
@ LEVEL_Indoor
Definition: Indoor.h:286
SpriteObject::Create
int Create(int yaw, int pitch, int a4, int a5)
Definition: SpriteObject.cpp:56
SpriteObject::containing_item
struct ItemGen containing_item
Definition: SpriteObject.h:227
dword_576E28
int dword_576E28
Definition: mm7_data.cpp:599
SPRITE_OBJECT_TYPE
SPRITE_OBJECT_TYPE
Definition: SpriteObject.h:5
distance
GLsizei GLsizei GLfloat distance
Definition: SDL_opengl_glext.h:9203
Party::pHirelings
std::array< NPCData, 2 > pHirelings
Definition: Party.h:311
OBJECT_Player
@ OBJECT_Player
Definition: Actor.h:68
DecorationList
Definition: DecorationList.h:57
Party::bTurnBasedModeOn
bool bTurnBasedModeOn
Definition: Party.h:305
pViewport
struct Viewport * pViewport
Definition: mm7_data.cpp:21
PaletteManager::ResetNonLocked
int ResetNonLocked()
Definition: PaletteManager.cpp:588
CURRENT_SCREEN::SCREEN_GAME
@ SCREEN_GAME
SpriteObject::uSoundID
unsigned __int16 uSoundID
Definition: SpriteObject.h:221
PaletteManager::RecalculateAll
void RecalculateAll()
Definition: PaletteManager.cpp:784
VisObjectType_Face
@ VisObjectType_Face
Definition: Vis.h:7
Party::armageddon_timer
int armageddon_timer
Definition: Party.h:320
GetLevelFogColor
unsigned int GetLevelFogColor()
Definition: Outdoor.cpp:3871
stru9
Definition: stru9.h:35
Point::y
unsigned int y
Definition: Point.h:8
CURRENT_SCREEN::SCREEN_NPC_DIALOGUE
@ SCREEN_NPC_DIALOGUE
Localization::Initialize
bool Initialize()
Definition: Localization.cpp:34
Engine::particle_engine
ParticleEngine * particle_engine
Definition: Engine.h:471
pOtherOverlayList
struct OtherOverlayList * pOtherOverlayList
Definition: Overlays.cpp:19
ChestList
Definition: Chest.h:23
r
GLdouble GLdouble GLdouble r
Definition: SDL_opengl.h:2079
OutdoorLocation::Release
void Release()
Definition: Outdoor.cpp:952
ItemsTable::Initialize
void Initialize()
Definition: Items.cpp:181
Engine::pStru10Instance
stru10 * pStru10Instance
Definition: Engine.h:456
NPCStats::Initialize
void Initialize()
Definition: NPC.cpp:445
ItemsTable
Definition: Items.h:448
ReplaceHSV
int ReplaceHSV(unsigned int uColor, float h_replace, float s_replace, float v_replace)
Definition: PaletteManager.cpp:843
PaletteManager::SetMistColor
void SetMistColor(unsigned char r, unsigned char g, unsigned char b)
Definition: PaletteManager.cpp:776
pMonsterList
struct MonsterList * pMonsterList
Definition: Monsters.cpp:9
IndoorLocation::Release
void Release()
Definition: Indoor.cpp:761
pKeyActionMap
struct KeyboardActionMapping * pKeyActionMap
Definition: Keyboard.cpp:35
v2
GLfloat GLfloat GLfloat v2
Definition: SDL_opengl_glext.h:695
Vis::PickMouse
bool PickMouse(float fDepth, float fMouseX, float fMouseY, Vis_SelectionFilter *sprite_filter, Vis_SelectionFilter *face_filter)
Definition: Vis.cpp:1268
assets
AssetsManager * assets
Definition: AssetsManager.cpp:12
Polygon::pODMFace
ODMFace * pODMFace
Definition: Polygon.h:47
uint
unsigned int uint
Definition: MM7.h:4
uActiveCharacter
unsigned int uActiveCharacter
Definition: mm7_data.cpp:555
pStationaryLightsStack
LightsStack_StationaryLight_ * pStationaryLightsStack
Definition: LightmapBuilder.cpp:11
stru10::bDoNotDrawPortalFrustum
int bDoNotDrawPortalFrustum
Definition: stru10.h:32
LODFile_Sprites::DeleteSomeOtherSprites
void DeleteSomeOtherSprites()
Definition: LOD.cpp:232
pNPCStats
struct NPCStats * pNPCStats
Definition: NPC.cpp:29
ODMFace
Definition: BSPModel.h:93
pOverlayList
struct OverlayList * pOverlayList
Definition: Overlays.cpp:20
pBitmaps_LOD
LODFile_IconsBitmaps * pBitmaps_LOD
Definition: LOD.cpp:16
Engine::fSaturation
float fSaturation
Definition: Engine.h:445
Mouse::SetCursorBitmapFromItemID
void SetCursorBitmapFromItemID(unsigned int uItemID)
Definition: Mouse.cpp:32
ODMFace::uAttributes
uint32_t uAttributes
Definition: BSPModel.h:135
ODM_GetFloorLevel
int ODM_GetFloorLevel(int X, signed int Y, int Z, int __unused, bool *pIsOnWater, int *bmodel_pid, int bWaterWalk)
Definition: Outdoor.cpp:1877
LODFile_Sprites::_461397
int _461397()
Definition: LOD.cpp:843
ViewingParams::bRedrawGameUI
int bRedrawGameUI
Definition: Viewport.h:74
UIMSG_Attack
@ UIMSG_Attack
Definition: GUIWindow.h:27
ActorInteraction
bool ActorInteraction(unsigned int id)
Definition: Viewport.cpp:250
DecalBuilder::DecalsCount
unsigned int DecalsCount
Definition: DecalBuilder.h:160
dword_6BE364_game_settings_1
int dword_6BE364_game_settings_1
Definition: mm7_data.cpp:714
Engine::CanSaturateFaces
bool CanSaturateFaces() const
Definition: Engine.h:134
GameUI_DrawCharacterSelectionFrame
void GameUI_DrawCharacterSelectionFrame()
Definition: UIGame.cpp:1688
EventProcessor
void EventProcessor(int uEventID, int targetObj, int canShowMessages, int entry_line)
Definition: Events.cpp:260
Vis::PickKeyboard
bool PickKeyboard(Vis_SelectionList *list, Vis_SelectionFilter *sprite_filter, Vis_SelectionFilter *face_filter)
Definition: Vis.cpp:1247
Mouse::SetCursorImage
void SetCursorImage(const String &name)
Definition: Mouse.cpp:38
uCurrentlyLoadedLevelType
LEVEL_TYPE uCurrentlyLoadedLevelType
Definition: Indoor.cpp:52
MonsterList::FromFile
void FromFile(void *data_mm6, void *data_mm7, void *data_mm8)
Definition: Monsters.cpp:394
OS_SetAppInt
void OS_SetAppInt(const char *pKey, int val)
Definition: Lin.cpp:98
pPrimaryWindow
GUIWindow * pPrimaryWindow
Definition: GUIWindow.cpp:48
TileTable::FromFile
void FromFile(void *data_mm6, void *data_mm7, void *data_mm8)
Definition: TileTable.cpp:90
IndoorLocation::GetSector
int GetSector(int sX, int sY, int sZ)
Definition: Indoor.cpp:1279
IndoorLocation::pFaces
struct BLVFace * pFaces
Definition: Indoor.h:630
Vis_SelectionList::uNumPointers
unsigned int uNumPointers
Definition: Vis.h:63
ChestList::FromFile
void FromFile(void *data_mm6, void *data_mm7, void *data_mm8)
Definition: Chest.cpp:457
Graphics::IRenderFactory
Definition: IRenderFactory.h:9
uLevel_StartingPointType
MapStartPoint uLevel_StartingPointType
Definition: Outdoor.cpp:46
GameUI_DrawPartySpells
void GameUI_DrawPartySpells()
Definition: UIGame.cpp:1699
LightsStack_StationaryLight_::AddLight
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)
Definition: LightsStack.cpp:30
pAudioPlayer
AudioPlayer * pAudioPlayer
Definition: AudioPlayer.cpp:20
Keyboard::IsKeyBeingHeld
static bool IsKeyBeingHeld(int vKey)
Definition: Keyboard.cpp:322
v0
GLfloat v0
Definition: SDL_opengl_glext.h:693
string
GLsizei const GLchar *const * string
Definition: SDL_opengl_glext.h:691
GameUI_DrawPortraits
void GameUI_DrawPortraits(unsigned int _this)
Definition: UIGame.cpp:1766
OnTimer
void OnTimer(int)
Definition: Engine.cpp:2479
MM7_LoadLods
bool MM7_LoadLods(const char *mm7_path)
Definition: Engine.cpp:869
Point
Definition: Point.h:3
pMessageQueue_50CBD0
struct GUIMessageQueue * pMessageQueue_50CBD0
Definition: GUIWindow.cpp:86
Vis_ObjectInfo::object_type
VisObjectType object_type
Definition: Vis.h:37
Engine_::IocContainer::ResolveSpellFxRenderer
static SpellFxRenderer * ResolveSpellFxRenderer()
Definition: IocContainer.cpp:74
Color16
uint16_t Color16(uint32_t r, uint32_t g, uint32_t b)
Definition: Engine.cpp:148
LightmapBuilder::StationaryLightsCount
unsigned int StationaryLightsCount
Definition: LightmapBuilder.h:83
pOutdoor
OutdoorLocation * pOutdoor
Definition: Outdoor.cpp:48
Engine::MutateConfig
void MutateConfig(std::function< void(std::shared_ptr< EngineConfig > &)> mutator)
Definition: Engine.h:412
GUIProgressBar::Progress
void Progress()
Definition: GUIProgressBar.cpp:83
Engine_::IocContainer::ResolveLightmapBuilder
static LightmapBuilder * ResolveLightmapBuilder()
Definition: IocContainer.cpp:81
SpriteObject::uAttributes
unsigned __int16 uAttributes
Definition: SpriteObject.h:222
IndoorCameraD3D::_4374E8_ProllyBuildFrustrum
void _4374E8_ProllyBuildFrustrum()
Definition: IndoorCameraD3D.cpp:581
DecalBuilder::DrawBloodsplats
void DrawBloodsplats()
Definition: DecalBuilder.cpp:517
pIndoorCameraD3D
IndoorCameraD3D * pIndoorCameraD3D
Definition: IndoorCameraD3D.cpp:21
Engine::DrawGUI
void DrawGUI()
Definition: Engine.cpp:252
Engine::pStru9Instance
stru9 * pStru9Instance
Definition: Engine.h:455
StringPrintf
String StringPrintf(const char *fmt,...)
Definition: Strings.cpp:9
Viewport::uViewportTL_X
int uViewportTL_X
Definition: Viewport.h:22
Party::sPrevEyelevel
int sPrevEyelevel
Definition: Party.h:256
ItemInteraction
void ItemInteraction(unsigned int item_id)
Definition: Viewport.cpp:224
OutdoorLocation::Draw
void Draw()
Definition: Outdoor.cpp:160
stru262_TurnBased::field_18
int field_18
Definition: TurnEngine.h:80
BLV_GetFloorLevel
int BLV_GetFloorLevel(int x, int y, int z, unsigned int uSectorID, unsigned int *pFaceID)
Definition: Indoor.cpp:2530
Party::sRotationY
int sRotationY
Definition: Party.h:251
Timer::uTotalGameTimeElapsed
unsigned int uTotalGameTimeElapsed
Definition: Time.h:135
stru262_TurnBased::turn_stage
int turn_stage
Definition: TurnEngine.h:75
String
std::string String
Definition: Strings.h:10
Vis_SelectionList::object_pointers
Vis_ObjectInfo * object_pointers[512]
Definition: Vis.h:62
sub_427769_isSpellQuickCastableOnShiftClick
bool sub_427769_isSpellQuickCastableOnShiftClick(unsigned int uSpellID)
Definition: Spells.cpp:741
Engine_::IocContainer::ResolveKeyboard
static Keyboard * ResolveKeyboard()
Definition: IocContainer.cpp:96
_unused_5B5924_is_travel_ui_drawn
int _unused_5B5924_is_travel_ui_drawn
Definition: mm7_data.cpp:621
pEventTimer
Timer * pEventTimer
Definition: Time.cpp:8
BLVFace::uAttributes
unsigned int uAttributes
Definition: Indoor.h:475
MapStartPoint_Party
@ MapStartPoint_Party
Definition: MapInfo.h:28
config
EGLConfig config
Definition: SDL_egl.h:1149
Engine_::EngineConfigFactory::Mutate
std::shared_ptr< EngineConfig > Mutate(std::shared_ptr< const EngineConfig > config, std::function< void(std::shared_ptr< EngineConfig > &)> mutator)
Definition: EngineConfigFactory.cpp:73
Mouse::RemoveHoldingItem
void RemoveHoldingItem()
Definition: Mouse.cpp:25
OverlayList::FromFile
void FromFile(void *data_mm6, void *data_mm7, void *data_mm8)
Definition: Overlays.cpp:119
Vec3::z
T z
Definition: VectorTypes.h:27
pObjectList
struct ObjectList * pObjectList
Definition: ObjectList.cpp:5
Mouse::ReadCursorWithItem
void ReadCursorWithItem()
Definition: Mouse.cpp:206
ItemsTable::pItems
NZIArray< ItemDesc, 800 > pItems
Definition: Items.h:460
ObjectList::FromFile
void FromFile(void *data_mm6, void *data_mm7, void *data_mm8)
Definition: ObjectList.cpp:55
pDecorationList
struct DecorationList * pDecorationList
Definition: DecorationList.cpp:11
SoundList::FromFile
void FromFile(void *data_mm6, void *data_mm7, void *data_mm8)
Definition: AudioPlayer.cpp:74
SpriteObject::spell_caster_pid
int spell_caster_pid
Definition: SpriteObject.h:232
Engine::PickMouse
bool PickMouse(float fPickDepth, unsigned int uMouseX, unsigned int uMouseY, bool bOutline, struct Vis_SelectionFilter *sprite_filter, struct Vis_SelectionFilter *face_filter)
Definition: Engine.cpp:662
GUIWindow::InitializeGUI
static void InitializeGUI()
Definition: GUIWindow.cpp:754
Game__StationaryLight::vRGBColor
Vec3_float_ vRGBColor
Definition: Engine.h:49
BLVFace::uFaceExtraID
uint16_t uFaceExtraID
Definition: Indoor.h:482
NPCStats
Definition: NPC.h:146
Vis::default_list
Vis_SelectionList default_list
Definition: Vis.h:149
render
std::shared_ptr< IRender > render
Definition: RenderOpenGL.cpp:52