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

#include <Application.h>

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

Классы

class  Configuration
 
class  Game
 
class  GameFactory
 
class  GameWindowHandler
 
class  IocContainer
 
class  Menu
 

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

ApplicationConfigure (ApplicationConfig &config)
 
bool ValidateConfig (std::string &out_errors)
 
const std::stringGetMm7InstallPath () const
 
void SetMm7InstallPath (const std::string &path)
 
void SetRenderer (const std::string &renderer)
 
const std::stringGetRenderer () const
 
void Run ()
 

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

ApplicationConfig config
 

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

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

Методы

◆ Configure()

Application * Application::Configure ( ApplicationConfig config)

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

84  {
85  this->config = config;
86  return this;
87 }

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

◆ ValidateConfig()

bool Application::ValidateConfig ( std::string out_errors)

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

107  {
108  out_errors = "";
109 
110  std::string mm7_exe_path = config.mm7_install_path + "/MM7.exe";
111  if (!PathFileExistsA(mm7_exe_path.c_str())) {
112  out_errors =
113  "Might and Magic VII exe not found in: " + config.mm7_install_path;
114  return false;
115  }
116 
117  return true;
118 }

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

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

◆ GetMm7InstallPath()

const std::string & Application::GetMm7InstallPath ( ) const

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

92  {
93  return this->config.mm7_install_path;
94 }

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

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

◆ SetMm7InstallPath()

void Application::SetMm7InstallPath ( const std::string path)

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

89  {
90  this->config.mm7_install_path = path;
91 }

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

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

◆ SetRenderer()

void Application::SetRenderer ( const std::string renderer)
inline

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

15 { config.renderer = renderer; }

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

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

◆ GetRenderer()

const std::string& Application::GetRenderer ( ) const
inline

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

16 { return config.renderer; }

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

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

◆ Run()

void Application::Run ( )

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

120  {
121  CoInitializeEx(0, COINIT_APARTMENTTHREADED); // SHBrowseForFolder
122 
123  auto module = GetModuleHandleA(nullptr);
124  HWND dialog = CreateDialogParamA(module, MAKEINTRESOURCEA(IDD_FORMVIEW),
125  nullptr, DialogProc, (LPARAM)this);
126  HICON icon =
127  (HICON)LoadImageA(module, MAKEINTRESOURCE(IDI_ICON1), IMAGE_ICON, 0, 0,
128  LR_DEFAULTCOLOR | LR_DEFAULTSIZE);
129  SendMessageA(dialog, WM_SETICON, ICON_BIG, (LPARAM)icon);
130  SendDlgItemMessageA(dialog, IDC_EDIT_MM7_INSTALL_DIR, WM_SETTEXT, 0,
131  (LPARAM)config.mm7_install_path.c_str());
132 
133  MSG msg;
134  while (GetMessageA(&msg, dialog, 0, 0)) {
135  TranslateMessage(&msg);
136  DispatchMessageA(&msg);
137  }
138 
139  STARTUPINFOA si;
140  ZeroMemory(&si, sizeof(si));
141  si.cb = sizeof(si);
142 
143  PROCESS_INFORMATION pi;
144  ZeroMemory(&pi, sizeof(pi));
145 
146  std::string womm_filename = GetExePath() + "/" + "World of Might and Magic.exe";
147  std::string command_line = womm_filename + " -window -nointro -nologo -novideo -nomarg -render=" + GetRenderer();
148 
149  std::vector<char> cmd(command_line.begin(), command_line.end());
150  cmd.push_back(0);
151  CreateProcessA(
152  womm_filename.c_str(), cmd.data(), nullptr, nullptr, FALSE,
153  NORMAL_PRIORITY_CLASS, nullptr,
154  config.mm7_install_path.c_str(), &si, &pi);
155 }

Перекрестные ссылки DialogProc(), GetExePath(), GetRenderer() и pi.

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

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

◆ config

ApplicationConfig Application::config
private

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

Используется в Configure() и Application::GameFactory::CreateConfiguration().


Объявления и описания членов классов находятся в файлах:
path
GLsizei const GLchar *const * path
Definition: SDL_opengl_glext.h:3733
GetExePath
static std::string GetExePath()
Definition: Application.cpp:102
pi
const float pi
Definition: VectorTypes.h:22
Application::GetRenderer
const std::string & GetRenderer() const
Definition: Application.h:16
string
GLsizei const GLchar *const * string
Definition: SDL_opengl_glext.h:691
Application::config
ApplicationConfig config
Definition: Application.h:21
DialogProc
INT_PTR __stdcall DialogProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
Definition: Application.cpp:21
config
EGLConfig config
Definition: SDL_egl.h:1149