subsystems and videomodes implemented (except SDL2); smaller fixes too

This commit is contained in:
aap
2020-04-15 09:47:43 +02:00
parent 5685e6109e
commit 2d345499d2
34 changed files with 778 additions and 229 deletions

View File

@ -217,10 +217,10 @@ main(int argc, char *argv[])
if(EventHandler(INITIALIZE, nil) == EVENTERROR)
return 0;
engineStartParams.width = sk::globals.width;
engineStartParams.height = sk::globals.height;
engineStartParams.windowtitle = sk::globals.windowtitle;
engineStartParams.window = &window;
engineOpenParams.width = sk::globals.width;
engineOpenParams.height = sk::globals.height;
engineOpenParams.windowtitle = sk::globals.windowtitle;
engineOpenParams.window = &window;
if(EventHandler(RWINITIALIZE, nil) == EVENTERROR)
return 0;
@ -253,7 +253,7 @@ namespace sk {
void
SetMousePosition(int x, int y)
{
glfwSetCursorPos(*engineStartParams.window, (double)x, (double)y);
glfwSetCursorPos(*engineOpenParams.window, (double)x, (double)y);
}
}

View File

@ -215,10 +215,10 @@ main(int argc, char *argv[])
if(EventHandler(INITIALIZE, nil) == EVENTERROR)
return 0;
engineStartParams.width = sk::globals.width;
engineStartParams.height = sk::globals.height;
engineStartParams.windowtitle = sk::globals.windowtitle;
engineStartParams.window = &window;
engineOpenParams.width = sk::globals.width;
engineOpenParams.height = sk::globals.height;
engineOpenParams.windowtitle = sk::globals.windowtitle;
engineOpenParams.window = &window;
if(EventHandler(RWINITIALIZE, nil) == EVENTERROR)
return 0;
@ -316,7 +316,7 @@ namespace sk {
void
SetMousePosition(int x, int y)
{
SDL_WarpMouseInWindow(*engineStartParams.window, x, y);
SDL_WarpMouseInWindow(*engineOpenParams.window, x, y);
}
}

View File

@ -13,9 +13,34 @@ InitRW(void)
return false;
if(AppEventHandler(sk::PLUGINATTACH, nil) == EVENTERROR)
return false;
if(!rw::Engine::open())
if(!rw::Engine::open(&engineOpenParams))
return false;
if(!rw::Engine::start(&engineStartParams))
SubSystemInfo info;
int i, n;
n = Engine::getNumSubSystems();
for(i = 0; i < n; i++)
if(Engine::getSubSystemInfo(&info, i))
printf("subsystem: %s\n", info.name);
int want = -1;
VideoMode mode;
n = Engine::getNumVideoModes();
for(i = 0; i < n; i++)
if(Engine::getVideoModeInfo(&mode, i)){
if(mode.width == 640 && mode.height == 480 && mode.depth == 32)
want = i;
printf("mode: %dx%dx%d %d\n", mode.width, mode.height, mode.depth, mode.flags);
}
// if(want >= 0) Engine::setVideoMode(want);
Engine::getVideoModeInfo(&mode, Engine::getCurrentVideoMode());
if(mode.flags & VIDEOMODEEXCLUSIVE){
globals.width = mode.width;
globals.height = mode.height;
}
if(!rw::Engine::start())
return false;
rw::Image::setSearchPath("./");

View File

@ -1,4 +1,4 @@
extern rw::EngineStartParams engineStartParams;
extern rw::EngineOpenParams engineOpenParams;
namespace sk {

View File

@ -254,7 +254,7 @@ WinMain(HINSTANCE instance, HINSTANCE,
MessageBox(0, "MakeWindow() - FAILED", 0, 0);
return 0;
}
engineStartParams.window = win;
engineOpenParams.window = win;
initkeymap();
if(EventHandler(RWINITIALIZE, nil) == EVENTERROR)
@ -283,7 +283,7 @@ void
SetMousePosition(int x, int y)
{
POINT pos = { x, y };
ClientToScreen(engineStartParams.window, &pos);
ClientToScreen(engineOpenParams.window, &pos);
SetCursorPos(pos.x, pos.y);
}