Ejemplo n.º 1
0
static void UpdateAndDraw( HWND hwnd ) {
    HRESULT hr;
	Device->BeginScene();
    IDirect3DSurface9* backBuffer=0;
	hr = Device->GetBackBuffer(0,0,D3DBACKBUFFER_TYPE_MONO,&backBuffer);
	Assert(hr==D3D_OK);
	D3DSURFACE_DESC desc;
	hr = backBuffer->GetDesc(&desc);
	Assert(hr==D3D_OK);
	D3DLOCKED_RECT lockedRect;
	hr = backBuffer->LockRect(&lockedRect,NULL,D3DLOCK_NOSYSLOCK|D3DLOCK_DISCARD);
	Assert(hr==D3D_OK);
	NimblePixMap pixmap(desc.Width,desc.Height,32,lockedRect.pBits,lockedRect.Pitch);
	if( ResizeOrMove ) {
		GameResizeOrMove( pixmap );
		ResizeOrMove = false;
	}
	GameUpdateDraw( pixmap, NimbleUpdate|NimbleDraw );
	hr = backBuffer->UnlockRect();
	Assert(hr==D3D_OK);
	backBuffer->Release();
    Device->EndScene();
    hr = Device->Present( 0, 0, 0, 0 );
	if( hr!=D3D_OK ) {
		Decode(hr);
	}
}
Ejemplo n.º 2
0
bool GameKeyDown( int key ) {
    switch(key) {
        case HOST_KEY_ESCAPE:
	        HostExit();
		    return true;
		case HOST_KEY_RETURN:
			VisibleDialog = NULL;
            break;
        case ' ':
			if( CultureBeginX<=DuckX && DuckX<CultureEndX ) 
				VisibleDialog = &WarnAwayFromCultureDialog;
			else
			    // Fire airgun at Duck's feet, becaus firing airgun at surface generates wave that
			    // mostly cancels itself.
                AirgunFire( DuckX, 8 );
            break;
		case 'a':
			IsAutoGainOn.toggleChecked();
			break;
		case 'f':
			ShowFrameRate = !ShowFrameRate;
			break;
		case 'n':
			if( ScoreState.isTraining() )
				CreateNewArea();
			else
				ScoreState.startNewArea();
			break;
		case 'p':
			IsPaused.toggleChecked();
			break;
		case 'g':
			ToggleShowGeology();
			break;
		case 'r':
			ToggleShowReservoir();
			break;
		case 's':
			ToggleShowSeismic();
			break;
#if WRITING_DOCUMENTATION
		case '0':
			IsPaused=false;
			WavefieldInitialize( TheGeology );
	        SeismogramReset( WindowWidth-PanelWidth, WindowHeight/2 );
			AirgunFire( WavefieldRect.width()/2, 8 );
			for( int i=0; i<70; ++i )
				GameUpdateDraw(TheMap,NimbleUpdate);
			DuckX=0;
			RigX=0;
			IsPaused=true;
			break;
#endif /* WRITING_DOCUMENTATION */

#if ASSERTIONS
		case '3': {
			CashMeter += 30;
			break;
		}
		case '4': {
			CashMeter -= 20;
			break;
		}
		case '5': {
			ShowSeismic = true;
			ShowGeology = true;
			ShowReservoir.setChecked(true);
			break;
		}
#endif
	}
    return false;
}