void Game::updateEvents()
{
sf::Event ev;
while (_window->pollEvent(ev))
{
if (ev.type == sf::Event::Closed)
{
_window->close();
}
}
if (ev.type == sf::Event::KeyPressed) std::cout << ev.key.code;
}
if (isPressedUp && !isReleasedUp)
{
_t2->keysAssignment.moveUpCommand->execute(_t2, _deltaTime);
std::cout << "move t2" << '\n';
}
if (isPressedW && !isReleasedW)
{
_t1->keysAssignment.moveUpCommand->execute(_t1, _deltaTime);
std::cout << "move t1" << '\n';
}
int x = 0;
for (int j = 0; j < 10000; ++j) {
x += j ^ x;
}
std::cout << "debug " << i;
void PlayerInputController::keysProcessing(const float dt) const
{
for (const auto& tank : tanks)
{
tank->updateDirect();
if (sf::Keyboard::isKeyPressed(tank->keysAssignment.moveUpCommand->getKey()))
{
tank->keysAssignment.moveUpCommand->execute(tank, dt);
}
if (sf::Keyboard::isKeyPressed(tank->keysAssignment.moveDownCommand->getKey()))
{
tank->keysAssignment.moveDownCommand->execute(tank, dt);
}
if (sf::Keyboard::isKeyPressed(tank->keysAssignment.moveLeftCommand->getKey()))
{
tank->keysAssignment.moveLeftCommand->execute(tank, dt);
}
if (sf::Keyboard::isKeyPressed(tank->keysAssignment.moveRightCommand->getKey()))
{
tank->keysAssignment.moveRightCommand->execute(tank, dt);
}
}
}
void PlayerInputController::keysProcessing(const float dt) const
{
for (const auto& tank : tanks)
{
tank->updateDirect();
if (sf::Keyboard::isKeyPressed(tank->keysAssignment.moveUpCommand->getKey()))
{
tank->keysAssignment.moveUpCommand->execute(tank, dt);
}
if (sf::Keyboard::isKeyPressed(tank->keysAssignment.moveDownCommand->getKey()))
{
tank->keysAssignment.moveDownCommand->execute(tank, dt);
}
if (sf::Keyboard::isKeyPressed(tank->keysAssignment.moveLeftCommand->getKey()))
{
tank->keysAssignment.moveLeftCommand->execute(tank, dt);
}
if (sf::Keyboard::isKeyPressed(tank->keysAssignment.moveRightCommand->getKey()))
{
tank->keysAssignment.moveRightCommand->execute(tank, dt);
}
}
}
void Game::updateEvents()
{
sf::Event ev;
std::cout << "t1 = " << _t1->_sprite.getRotation() << '\n';
std::cout << "t2 = " << _t2->_sprite.getRotation() << '\n';
while (_window->pollEvent(ev))
{
if (ev.type == sf::Event::Closed)
{
_window->close();
}
}
inputController_->keysProcessing(_deltaTime);
}
void TwoPlayerInputController::keyProcess(Tank* playerToMove, Tank* playerCanBeCollision, const float dt) const
{
playerToMove->updateDirect();
if (sf::Keyboard::isKeyPressed(playerToMove->keysAssignment.moveUpCommand->getKey()))
{
playerToMove->keysAssignment.moveUpCommand->execute(playerToMove, dt);
}
if (sf::Keyboard::isKeyPressed(playerToMove->keysAssignment.moveDownCommand->getKey()))
{
playerToMove->keysAssignment.moveDownCommand->execute(playerToMove, dt);
}
if (sf::Keyboard::isKeyPressed(playerToMove->keysAssignment.moveLeftCommand->getKey()))
{
playerToMove->keysAssignment.moveLeftCommand->execute(playerToMove, dt);
}
if (sf::Keyboard::isKeyPressed(playerToMove->keysAssignment.moveRightCommand->getKey()))
{
playerToMove->keysAssignment.moveRightCommand->execute(playerToMove, dt);
}
}
void TwoPlayerInputController::keysProcessing(const float dt) const
{
keyProcess(player1, player2, dt);
keyProcess(player2, player1, dt);
}
void Game::updateEvents()
{
sf::Event ev;
while (_window->pollEvent(ev))
{
if (ev.type == sf::Event::Closed)
{
_window->close();
}
// Движение персонажей
inputController_->keysProcessing(_deltaTime);
}
}
PlayerInputController::keysProcessing
вроде эквивалентны в двух случаях. sf::Keyboard::isKeyPressed, кажется тоже вполне безопасно вызывать несколько раз.moveUpCommand->execute
, но не 3 остальные команды и проверьте, отличается ли движение вверх от других и глючит ли оно так же как раньше.