Пример #1
0
int FxPlayerTiny::Run()
{
	// Windows conf
    if (!SetupWindow(GString(FXPLAYER_APP_TITLE " ")))
        return 1;

    ShowWindow(hWnd, SW_SHOWDEFAULT);
    UpdateWindow(hWnd);

	// Gfx conf
    GFxLoader loader;

    GPtr<GFxFileOpener> pfileOpener = *new GFxFileOpener;
    loader.SetFileOpener(pfileOpener);

	// Register FsCommandHander
    GPtr<GFxFSCommandHandler> pcommandHandler = *new FxPlayerFSCommandHandler;
    loader.SetFSCommandHandler(pcommandHandler);

	// Register FsDelegate
	pGameDelegate   = *new FxDelegate();
	loader.SetExternalInterface(pGameDelegate);
    pGameDelegate->RegisterHandler(this);
    
	GPtr<GFxImageCreator> pimageCreator = *new GFxImageCreator(1);
	loader.SetImageCreator(pimageCreator);

	// Login flash
    if (!(pMovieDef = *loader.CreateMovie(FXPLAYER_FILENAME)))
    {
        GString errorString = "Unable to load file: ";
        MessageBox(NULL, errorString.ToCStr(), "Error", MB_OK | MB_ICONEXCLAMATION);
        return 1;
    }
    if (!(pMovie = *pMovieDef->CreateInstance())) 
		return 1;
	pMovie->SetViewport(Width, Height, 0,0, Width, Height);

	// HUD flash
	if (!(pHUDDef = *loader.CreateMovie(CONFIG_FILENAME)))
    {
        GString errorString = "Unable to load file: ";
        MessageBox(NULL, errorString.ToCStr(), "Error", MB_OK | MB_ICONEXCLAMATION);
        return 1;
    }
    if (!(pHUD = *pHUDDef->CreateInstance()))
		return 1;
	pHUD->SetBackgroundAlpha(0.0f);
	pHUD->SetViewport(Width, Height, 0,0, Width, Height);

	
	// render config
    if (!(pRenderer = *GRendererD3D9::CreateRenderer()))
        return 1;
    if (!pRenderer->SetDependentVideoMode(pDevice, &PresentParams, 0, hWnd))
        return 1;
    pRenderConfig = *new GFxRenderConfig(pRenderer, GFxRenderConfig::RF_EdgeAA | GFxRenderConfig::RF_StrokeNormal);
    loader.SetRenderConfig(pRenderConfig);

    // how much to advance Flash playback.
    MovieLastTime = timeGetTime();

    // Application / Player message loop.
    MSG msg;
    ZeroMemory(&msg, sizeof(msg));

	while(msg.message != WM_QUIT && g_gamestate != GAME_STATE::QUIT)
    {
        if (PeekMessage(&msg, NULL, 0U, 0U, PM_REMOVE))
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
        else
        {
            // Check for lost D3D Devices.
            if (pRenderer)
            {                       
                GRendererD3D9::DisplayStatus status = pRenderer->CheckDisplayStatus();
                if (status == GRendererD3D9::DisplayStatus_Unavailable) { ::Sleep(10); continue; }
                if (status == GRendererD3D9::DisplayStatus_NeedsReset)
                {           
                    if (!SUCCEEDED(ResetD3D()))
                        continue;
                }
            }

			switch (g_gamestate) {
				case GAME_STATE::LOGIN_SCREEN:
					DisplayLoginScreen();
					break;
				case GAME_STATE::LOGINED:
					DisplayGameScreen();
					break;
				default:
					break;
			}
        }
    }

    return 0;
}