void Player::walk(const Common::Point &pos, Facing facing) { cancelWalk(); _needToWalk = true; _readyToWalk = true; _prepareWalkPos = pos; _prepareWalkFacing = facing; }
void Creature::updateWalk() { if(m_walking) { int elapsedTicks = g_clock.ticksElapsed(m_walkStartTicks); int totalPixelsWalked = std::min((int)round(elapsedTicks / m_walkTimePerPixel), 32); if(m_inverseWalking) { if(m_direction == Otc::North || m_direction == Otc::NorthEast || m_direction == Otc::NorthWest) m_walkOffset.y = 32 - totalPixelsWalked; else if(m_direction == Otc::South || m_direction == Otc::SouthEast || m_direction == Otc::SouthWest) m_walkOffset.y = totalPixelsWalked - 32; if(m_direction == Otc::East || m_direction == Otc::NorthEast || m_direction == Otc::SouthEast) m_walkOffset.x = totalPixelsWalked - 32; else if(m_direction == Otc::West || m_direction == Otc::NorthWest || m_direction == Otc::SouthWest) m_walkOffset.x = 32 - totalPixelsWalked; if(m_walkOffset.x == 0 && m_walkOffset.y == 0) cancelWalk(m_direction); } else { if(m_direction == Otc::North || m_direction == Otc::NorthEast || m_direction == Otc::NorthWest) m_walkOffset.y = -totalPixelsWalked; else if(m_direction == Otc::South || m_direction == Otc::SouthEast || m_direction == Otc::SouthWest) m_walkOffset.y = totalPixelsWalked; if(m_direction == Otc::East || m_direction == Otc::NorthEast || m_direction == Otc::SouthEast) m_walkOffset.x = totalPixelsWalked; else if(m_direction == Otc::West || m_direction == Otc::NorthWest || m_direction == Otc::SouthWest) m_walkOffset.x = -totalPixelsWalked; } int totalWalkTileTicks = (int)m_walkTimePerPixel*32 * 0.5; if(m_type->dimensions[ThingType::AnimationPhases] > 0) m_animation = (g_clock.ticks() % totalWalkTileTicks) / (totalWalkTileTicks / (m_type->dimensions[ThingType::AnimationPhases] - 1)) + 1; else m_animation = 0; g_dispatcher.scheduleEvent(std::bind(&Creature::updateWalk, asCreature()), m_walkTimePerPixel); if(totalPixelsWalked == 32) cancelWalk(m_direction); } }
void FootstepMarker::processMenuFeedback(uint8_t menu_entry_id) { switch (menu_entry_id) { case 1: { // look ground lookGround(); break; } case 2: { // execute executeCB(std_msgs::Empty::ConstPtr()); break; } case 3: { // replan planIfPossible(); break; } case 4: { // cancel walk cancelWalk(); break; } case 5: { // toggle 6dof marker show_6dof_control_ = !show_6dof_control_; break; } case 6: { // toggle 6dof marker changePlannerHeuristic(":straight-heuristic"); break; } case 7: { // toggle 6dof marker changePlannerHeuristic(":stepcost-heuristic**"); break; } case 8: { // toggle 6dof marker lleg_first_ = true; break; } case 9: { // toggle 6dof marker lleg_first_ = false; break; } default: { break; } } }
void Player::cancelCommand() { cancelWalk(); _action->_inProgress = false; }