void Player::moveTo(const CCPoint& pos, const std::vector<CCPoint>& path) { if(!path.empty()) { std::vector<MoveInfo> moveInfos; for(auto& p : path) { moveInfos.push_back(MoveInfo(p)); } auto action = createAnimation(m_animTextureName, moveInfos, CCSize(48, 48), 4, 0.1f, 1); //CCHide * hide= CCHide::create(); m_sprite->runAction(action); action = createMoveAction( moveInfos, CCSize(48 * m_scale, 48 * m_scale), 0.4f); CCCallFunc* fun = CCCallFunc::create(getScene(), callfunc_selector(HelloWorld::inChooseActionState)); runAction(CCSequence::create(action, fun, 0)); } }
static Action::Ptr createGrabAndMoveAction(GraspingActionContext &ctx, stringstream &ss) { // format: grab_and_move <grabstr> <movestr> string op; ss >> op; BOOST_ASSERT(op == "grab"); Action::Ptr grabaction = createGrabAction(ctx, ss); ss >> op; BOOST_ASSERT(op == "move"); Action::Ptr moveaction = createMoveAction(ctx, ss); ActionChain::Ptr chain(new ActionChain); *chain << grabaction << moveaction; return chain; }
Action::Ptr GraspingActionSpec::createAction(GraspingActionContext &ctx) const { stringstream ss; ss << specstr; string op; ss >> op; // consume type switch (type) { case GRAB: return createGrabAction(ctx, ss); break; case RELEASE: return createReleaseAction(ctx, ss); break; case MOVE: return createMoveAction(ctx, ss); break; case GRAB_AND_MOVE: return createGrabAndMoveAction(ctx, ss); break; } if (op != "none") cout << "warning: unrecognized action op " << op << endl; return createNoneAction(); };