void PlayerPanel::changeHand() { auto player = Game::getInstance()->player(); auto lastSlot = player->currentHandSlot(); auto takeOut = [player](Event::Event* evt) { if (player->currentHandSlot()) { player->setWeaponAnimation('C'); // takeout } }; if (lastSlot) { // put away auto anim = player->setWeaponAnimation('D'); Event::Handler origHandler = anim->animationEndedHandler(); anim->animationEndedHandler().clear(); anim->animationEndedHandler().add(takeOut); anim->animationEndedHandler().add(origHandler); } player->setCurrentHand(player->currentHand() == HAND::RIGHT ? HAND::LEFT : HAND::RIGHT); if (!lastSlot) { takeOut(nullptr); } playWindowOpenSfx(); }
std::string GameCritterObject::_generateWeaponFrmString() { if (auto weapon = dynamic_cast<GameWeaponItemObject*>(currentHandSlot())) { switch (weapon->animationCode()) { case 1: // knife return "d"; case 2: // club return "e"; case 3: // hammer return "f"; case 4: // spear return "g"; case 5: // pistol return "h"; case 6: // smg return "i"; case 7: // rifle return "j"; case 8: // big gun return "k"; case 9: // minigun return "l"; case 10: // rocket launcher return "m"; } } return "a"; }