void TilePlacementState::UpdateKeyboardInput(float dt)
{
	if (GetAsyncKeyState('W') & 0x8000)
	{
		if (!IsWPressed)
		{
			MoveUp();
		}
		IsWPressed = true;
	}
	else if (!GetAsyncKeyState('W'))
	{
		IsWPressed = false;
	}

	if (GetAsyncKeyState('A') & 0x8000)
	{

		if (!IsAPressed)
		{
			MoveLeft();
		}
		IsAPressed = true;
	}
	else if (!GetAsyncKeyState('A'))
	{
		IsAPressed = false;
	}

	if (GetAsyncKeyState('S') & 0x8000)
	{
		if (!IsSPressed)
		{
			MoveDown();
		}
		IsSPressed = true;
	}
	else if (!GetAsyncKeyState('S'))
	{
		IsSPressed = false;
	}

	if (GetAsyncKeyState('D') & 0x8000)
	{
		if (!IsDPressed)
		{
			MoveRight();
		}
		IsDPressed = true;
	}
	else if (!GetAsyncKeyState('D'))
	{
		IsDPressed = false;
	}
	if (GetAsyncKeyState('P') & 0x8000)
	{
		if (!IsPPressed)
		{
			PlaceTile();
		}
		IsPPressed = true;
	}
	else if (!GetAsyncKeyState('P'))
	{
		IsPPressed = false;
	}


}
示例#2
0
void CLevelEditor::Input( CGameInput * pGameInput, float dps ) {
    
    if( !m_bEditorOn || !m_pCurLevel )
        return;
    
    int mx, my;
    auto mouseState = SDL_GetMouseState( &mx, &my );
    
    
    Vector2< float > cameraTranslate;
    
    if( m_pCamera ) {
        
        cameraTranslate = m_pCamera->GetTranslate();
        
    }
    
    int tX = ( mx - cameraTranslate.GetX() ) / TEXTURE_RENDER_WIDTH;
    int tY = ( my - cameraTranslate.GetY() ) / TEXTURE_RENDER_HEIGHT;
    
    if( mx - cameraTranslate.GetX() < 0 )
        tX--;
    
    if( my - cameraTranslate.GetY() < 0 )
        tY--;
    
    int x = tX * TEXTURE_RENDER_WIDTH;
    int y = tY * TEXTURE_RENDER_HEIGHT;

    
    if( mouseState & SDL_BUTTON( SDL_BUTTON_LEFT ) ) {
        
        if( m_CurTileIndex > -1  ) {
            
            m_SelectedTileIndex = m_CurTileIndex;
        
        } else if( m_SelectedTileIndex > -1 ) {
            
            m_pCurLevel->RemoveTileAt( mx - cameraTranslate.GetX(), my - cameraTranslate.GetY() );
            PlaceTile( m_SelectedTileIndex, x, y );
                
        }
            
    }
    
    if( m_pCamera ) {
    
        if( pGameInput->KeyDown( SDL_SCANCODE_UP ) ) {
         
            m_pCamera->Translate( 0.0f, -CAMERA_TRANSLATE_SPEED * dps );
            
        }

        if( pGameInput->KeyDown( SDL_SCANCODE_DOWN ) ) {
            
            m_pCamera->Translate( 0.0f, CAMERA_TRANSLATE_SPEED * dps );
            
        }
      
        if( pGameInput->KeyDown( SDL_SCANCODE_LEFT ) ) {
            
            m_pCamera->Translate( -CAMERA_TRANSLATE_SPEED * dps, 0.0f );
            
        }
        
        if( pGameInput->KeyDown( SDL_SCANCODE_RIGHT ) ) {
            
            m_pCamera->Translate( CAMERA_TRANSLATE_SPEED * dps, 0.0f );
            
        }

    }
    
    
    if( pGameInput->KeyDown( SDL_SCANCODE_1 ) ) {
        
        if( m_SelectedTileIndex > -1 ) {
            
            m_pCurLevel->RemoveTileAt( mx - cameraTranslate.GetX(), my - cameraTranslate.GetY() );
            PlaceTile( m_SelectedTileIndex, x, y );
        
        }
        
    }
    
    if( pGameInput->KeyDown( SDL_SCANCODE_3 ) ) {
        
        
        m_pCurLevel->RemoveTileAt( mx - cameraTranslate.GetX(), my - cameraTranslate.GetY() );

        
    }
    
    if( pGameInput->ShiftMod() && pGameInput->KeyDownOnce( SDLK_0 ) ) {
        
        if( m_pCurLevel ) {
            
            m_LastSaveTime = SDL_GetTicks();
            m_pCurLevel->Save( m_pCurLevel->GetPath() );
        
        }
        
    }
    
}