World of Might and Magic  0.2.0
Open reimplementation of Might and Magic 6 7 8 game engine
Класс Engine_::EngineConfigFactory

#include <EngineConfigFactory.h>

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

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

 EngineConfigFactory ()
 
std::shared_ptr< EngineConfigCreate ()
 
std::shared_ptr< EngineConfigCreateFromCommandLine (const std::string &cmd)
 
std::shared_ptr< EngineConfigClone (std::shared_ptr< const EngineConfig > other)
 
std::shared_ptr< EngineConfigMutate (std::shared_ptr< const EngineConfig > config, std::function< void(std::shared_ptr< EngineConfig > &)> mutator)
 

Закрытые члены

std::shared_ptr< EngineConfigCreateDefaultConfiguration ()
 

Закрытые данные

Loglog = nullptr
 

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

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

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

◆ EngineConfigFactory()

Engine_::EngineConfigFactory::EngineConfigFactory ( )
inline

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

17  {
18  this->log = EngineIoc::ResolveLogger();
19  }

Перекрестные ссылки log и Engine_::IocContainer::ResolveLogger().

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

Методы

◆ Create()

std::shared_ptr< EngineConfig > EngineConfigFactory::Create ( )

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

83  {
85 }

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

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

◆ CreateFromCommandLine()

std::shared_ptr< EngineConfig > EngineConfigFactory::CreateFromCommandLine ( const std::string cmd)

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

87  {
89 
90  // config->renderer_name = "OpenGL";
91 
92  if (FindCaseInsensitive(cmd, "-window")) {
93  config->dword_6BE368_debug_settings_2 |= DEBUG_SETTINGS_RUN_IN_WIDOW;
94  }
95  if (FindCaseInsensitive(cmd, "-nointro")) {
96  config->no_intro = true;
97  }
98  if (FindCaseInsensitive(cmd, "-nologo")) {
99  config->no_logo = true;
100  }
101  if (FindCaseInsensitive(cmd, "-nosound")) {
102  config->no_sound = true;
103  }
104  if (FindCaseInsensitive(cmd, "-novideo")) {
105  config->no_video = true;
106  }
107  if (FindCaseInsensitive(cmd, "-nowalksound")) {
108  config->no_walk_sound = true;
109  }
110  if (FindCaseInsensitive(cmd, "-nomarg")) {
111  config->no_margareth = true;
112  }
113  if (FindCaseInsensitive(cmd, "-render=")) {
114  if (FindCaseInsensitive(cmd, "-render=DirectDraw")) {
115  config->renderer_name = "DirectDraw";
116  }
117  if (FindCaseInsensitive(cmd, "-render=OpenGL")) {
118  config->renderer_name = "OpenGL";
119  }
120  }
121 
122  return config;
123 }

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

Используется в Engine_::EngineFactory::CreateEngine().

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

◆ Clone()

std::shared_ptr< EngineConfig > EngineConfigFactory::Clone ( std::shared_ptr< const EngineConfig other)

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

69  {
70  return std::make_shared<EngineConfig>(*other.get());
71 }

Используется в Engine::SetForceRedraw(), Engine::SetSaturateFaces() и Engine::SetUnderwater().

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

◆ Mutate()

std::shared_ptr< EngineConfig > EngineConfigFactory::Mutate ( std::shared_ptr< const EngineConfig config,
std::function< void(std::shared_ptr< EngineConfig > &)>  mutator 
)

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

76  {
77  auto new_config = std::make_shared<EngineConfig>(*config.get());
78  mutator(new_config);
79 
80  return new_config;
81 }

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

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

◆ CreateDefaultConfiguration()

std::shared_ptr< EngineConfig > EngineConfigFactory::CreateDefaultConfiguration ( )
private

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

12  {
13  auto cfg = std::make_shared<EngineConfig>();
14 
15  if (!cfg->no_walk_sound) {
16  cfg->no_walk_sound = OS_GetAppInt("WalkSound", 1) == 0;
17  }
18  if (!cfg->always_run) {
19  cfg->always_run = OS_GetAppInt("valAlwaysRun", 0) != 0;
20  }
21  cfg->flip_on_exit = OS_GetAppInt("FlipOnExit", 0) != 0;
22 
23  cfg->show_damage = OS_GetAppInt("ShowDamage", 1) != 0;
24  int turn_type = OS_GetAppInt("TurnDelta", 3);
25 
26  switch (turn_type) {
27  case 1: // 16x
28  log->Warning(L"x16 Turn Speed"); // really shouldn't use this mode
29  cfg->turn_speed = 128;
30  break;
31 
32  case 2: // 32x
33  log->Warning(L"x32 Turn Speed"); // really shouldn't use this mode
34  cfg->turn_speed = 64;
35  break;
36 
37  case 3: // smooth
38  default:
39  cfg->turn_speed = 0;
40  break;
41  }
42 
43  cfg->sound_level = std::min(4, OS_GetAppInt("soundflag", 9));
44  cfg->music_level = std::min(3, OS_GetAppInt("musicflag", 9));
45  cfg->voice_level = std::min(4, OS_GetAppInt("CharVoices", 9));
46 
47  cfg->gamma = std::min(4, OS_GetAppInt("GammaPos", 4));
48 
49  if (OS_GetAppInt("Bloodsplats", 1))
50  cfg->flags2 |= GAME_FLAGS_2_DRAW_BLOODSPLATS;
51  else
52  cfg->flags2 &= ~GAME_FLAGS_2_DRAW_BLOODSPLATS;
53  cfg->no_bloodsplats = !(cfg->flags2 & GAME_FLAGS_2_DRAW_BLOODSPLATS);
54 
55  return cfg;
56 }

Перекрестные ссылки log, OS_GetAppInt() и Log::Warning().

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

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

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

◆ log

Log* Engine_::EngineConfigFactory::log = nullptr
private

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

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


Объявления и описания членов классов находятся в файлах:
Engine_::IocContainer::ResolveLogger
static Log * ResolveLogger()
Definition: IocContainer.cpp:51
Engine_::EngineConfigFactory::log
Log * log
Definition: EngineConfigFactory.h:31
FindCaseInsensitive
static bool FindCaseInsensitive(const std::string &haystack, const std::string &needle)
Definition: EngineConfigFactory.cpp:59
Log::Warning
void Warning(const wchar_t *pFormat,...)
Definition: Log.cpp:28
Engine_::EngineConfigFactory::CreateDefaultConfiguration
std::shared_ptr< EngineConfig > CreateDefaultConfiguration()
Definition: EngineConfigFactory.cpp:12
config
EGLConfig config
Definition: SDL_egl.h:1149
OS_GetAppInt
int OS_GetAppInt(const char *pKey, int uDefValue)
Definition: Lin.cpp:89