コード例 #1
0
ファイル: Game.cpp プロジェクト: davetron5000/adventureclone
BOOL Game::start(DWORD currentTime)
{
	Bmp8BitFileReader reader;
	itsGameSelectImages = new SimpleArray(4);
	ScreenImage *image = new ScreenImage();
	image->init(theDirectDrawObject,&reader,"game1select.bmp",NULL);
	itsGameSelectImages->addElement(image);

	image = new ScreenImage();
	image->init(theDirectDrawObject,&reader,"game2select.bmp",NULL);
	itsGameSelectImages->addElement(image);

	image = new ScreenImage();
	image->init(theDirectDrawObject,&reader,"game3select.bmp",NULL);
	itsGameSelectImages->addElement(image);

	image = new ScreenImage();
	image->init(theDirectDrawObject,&reader,"moreselect.bmp",NULL);
	itsGameSelectImages->addElement(image);

	itsCurrentlySelectedGame = 0;
	theEventDispatcher.init();
	itsSoundPlayer = new SoundPlayer(itsSoundManager);
	itsCurrentState = GAMESTATE_PREGAME;
	itsInstructionMessageTimerID = theEventDispatcher.setTimer(this,3500);
	isDisplayingInstructions = FALSE;

	DDCOLORKEY colorKey;
    colorKey.dwColorSpaceHighValue = ScreenImage::theTransparencyColor;
    colorKey.dwColorSpaceLowValue = ScreenImage::theTransparencyColor;

	itsInstructionMessage.init(theDirectDrawObject,&reader,"instructions.bmp",&colorKey);

	itsWorld = NULL;

	return TRUE;
}
コード例 #2
0
ファイル: Game.cpp プロジェクト: davetron5000/adventureclone
BOOL Game::initSurfaces(HWND hwnd,HINSTANCE hinstance)
{
    DDSURFACEDESC surfaceDesc;

	// This is cheesy, but I'm not sure how to deal with it for right now
	ScreenImage bgImage;
	Bmp8BitFileReader reader;
	bgImage.init(theDirectDrawObject,&reader,"bg.bmp");

    memset(&surfaceDesc,0,sizeof(surfaceDesc));
    surfaceDesc.dwSize  = sizeof(surfaceDesc);
    surfaceDesc.dwFlags = DDSD_CAPS | DDSD_BACKBUFFERCOUNT;
    surfaceDesc.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE|DDSCAPS_FLIP|DDSCAPS_COMPLEX;
    surfaceDesc.dwBackBufferCount = 1;

    if ( SUCCEEDED(theDirectDrawObject->CreateSurface(&surfaceDesc,&thePrimarySurface,NULL)) )
    {
        assert(theBitDepth == 8);

        PALETTEENTRY palette[256];
        bgImage.getPalette()->GetEntries(0,0,256,palette);
		PALETTEENTRY dimmedPalette[256];
		for (UINT i=0;i<256;i++)
		{
			dimmedPalette[i].peBlue = (palette[i].peBlue / 3) * 2;
			dimmedPalette[i].peRed = (palette[i].peRed / 3) * 2;
			dimmedPalette[i].peGreen = (palette[i].peGreen / 3) * 2;
		}
        
        if ( (SUCCEEDED(theDirectDrawObject->CreatePalette(DDPCAPS_8BIT | DDPCAPS_ALLOW256 | DDPCAPS_INITIALIZE,
                                                         palette,&thePalette,NULL)) ) &&
			 (SUCCEEDED(theDirectDrawObject->CreatePalette(DDPCAPS_8BIT | DDPCAPS_ALLOW256 | DDPCAPS_INITIALIZE,
                                                         dimmedPalette,&theDimmedPalette,NULL)) ) )

        {
            thePrimarySurface->SetPalette(thePalette);
            DDSCAPS surfaceCaps;

            memset(&surfaceCaps,0,sizeof(surfaceCaps));
            surfaceCaps.dwCaps = DDSCAPS_BACKBUFFER;

            if ( SUCCEEDED(thePrimarySurface->GetAttachedSurface(&surfaceCaps,&theBackbuffer)) )
            {
                if (SUCCEEDED(theDirectDrawObject->CreatePalette(DDPCAPS_8BIT | DDPCAPS_ALLOW256 | DDPCAPS_INITIALIZE,
                                                                 palette,&theBackbufferPalette,NULL) ))
                {
                    theBackbuffer->SetPalette(theBackbufferPalette);
                    if (SUCCEEDED(theDirectDrawObject->CreateClipper(NULL,&theClipper,NULL)))
                    {
                        if (SUCCEEDED(theClipper->SetHWnd(NULL,hwnd)))
                        {
                            if (SUCCEEDED(theBackbuffer->SetClipper(theClipper)))
                            {
                                bgImage.copyDataToSurface(thePrimarySurface);
                                bgImage.copyDataToSurface(theBackbuffer);
                                return TRUE;                
                            }
                            else
                            {
                                Logger::error("Couldn't set clipper on the backbuffer");
                            }
                        }
                        else
                        {
                            Logger::error("Couldn't set HWND on the clipper");
                        }
                    }
                    else
                    {
                        Logger::error("Couldn't create the clipper");
                    }
                }
                else
                {
                    Logger::error("Couldn't create a palette!");
                }
            }
            else
            {
                Logger::error("Couldn't get attached surface from primary surface");
            }
        }
        else
        {
            Logger::error("Couldn't create the palette");
        }
    }
    else
    {
        Logger::error("Couldn't create primary surface");
    }
    return FALSE;
}