Пример #1
0
void		Movement::update()
{
  int		x = _data.player().getX();
  int		y = _data.player().getY();
  bool		moved = _oldx != x || _oldy != y;

  if (_path && _pathi == _path->size() && moved)
    {
      _releaseKeys();
      delete _path;
      _path = NULL;
    }
  else if (_path && _pathi < _path->size() && (_pathi == 1 || moved))
    {
      int	dx = (*_path)[_pathi]->x - x;
      int	dy = (*_path)[_pathi]->y - y;
      EKey	k;

      _releaseKeys();
      if (!dx)
	k = dy < 0 ? KEY_UP : KEY_DOWN;
      else
	k = dx < 0 ? KEY_LEFT : KEY_RIGHT;
      sdlSetButton(k, true);
      _pathi++;
    }

  _oldx = x;
  _oldy = y;
}
Пример #2
0
void		Bot::clear()
{
  _queue.clear();
  for (uint8_t i = KEY_LEFT; i < KEY_BUTTON_SPEED; i++)
    sdlSetButton((EKey) i, false);
}
Пример #3
0
void		sdlReleaseButton(EKey key)
{
  sdlSetButton(key, false);
}
Пример #4
0
void		sdlPressButton(EKey key)
{
  sdlSetButton(key, true);
}
Пример #5
0
void		Movement::_releaseKeys()
{
  for (uint8_t i = KEY_LEFT; i <= KEY_DOWN; i++)
    sdlSetButton((EKey) i, false);
}