예제 #1
0
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();

}
예제 #2
0
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";
}