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; } }
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() ); } } }