本文整理汇总了C++中Weapon::getDamage方法的典型用法代码示例。如果您正苦于以下问题:C++ Weapon::getDamage方法的具体用法?C++ Weapon::getDamage怎么用?C++ Weapon::getDamage使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Weapon
的用法示例。
在下文中一共展示了Weapon::getDamage方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: onMessage
bool AttackState::onMessage(Character* agent, const Telegram& msg)
{
switch (msg.msg) {
case Msg_AttackedByWeapon:{//被玩家的武器攻击到
log("Character::Msg_AttackedByWeapon");
Weapon *weapon = (Weapon*)GameEntityManager::getInstance()->getEntityFromID(msg.sender);
agent->takeDamage(weapon->getDamage());
if (agent->getLife() <= 0) {
agent->die();
return false;
}
switch (weapon->getType()) {
case WeaponTypeKnife:{
Knife *knife = (Knife*)weapon;
KnifeAttackDirection direction = *(KnifeAttackDirection*)msg.extraInfo;
if (knife->isXuliStateDamage()) {
if (direction == KnifeAttackDirectionUp) {
agent->flowup();
}else if (direction == KnifeAttackDirectionDown) {
agent->falldown();
}else if (direction == KnifeAttackDirectionRight) {
agent->rollback();
}else{
agent->stiff();
}
}else{
agent->stiff();
}
}
break;
case WeaponTypePistol:
agent->stiff();
break;
default:
break;
}
}
break;
default:
break;
}
return false;
}
示例2: shoot
GameObj* GOBox::shoot()
{
if (getIsWeapon())
{
Weapon* w = getWeapon();
if (getIsRangedWeapon()){
if (((RangedWeapon *)w)->readyToShoot())
{
double rbDepth = getDepth() / 2 + ((RangedWeapon *)w)->getPDepth()/1.5 + 0.6f;
btTransform* rbTrans = &getRigidBody()->getWorldTransform();
btVector3 boxRot = rbTrans->getBasis()[2];
boxRot.normalize();
btVector3 correctedDisplacement = boxRot * -rbDepth; // /2
double x = rbTrans->getOrigin().getX();// + 0.5 - w->getPWidth();
double y = rbTrans->getOrigin().getY();
double z = rbTrans->getOrigin().getZ() + correctedDisplacement.getZ();
GameObj* proj = new Projectile(x, y, z, rbTrans->getRotation().getX(), rbTrans->getRotation().getY(), rbTrans->getRotation().getZ(), rbTrans->getRotation().getW(),
((RangedWeapon *)w)->getPMass(), ((RangedWeapon *)w)->getPWidth(), ((RangedWeapon *)w)->getPHeight(), ((RangedWeapon *)w)->getPDepth());
proj->setDamage(w->getDamage());
//std::cout << "shoot: " << ((RangedWeapon *)w)->getPBlockType() << std::endl;
proj->setBlockType(((RangedWeapon *)w)->getPBlockType());
((RangedWeapon *)w)->setLastShot();
((Projectile*)proj)->initForce = ((RangedWeapon *)w)->getPInitForce();
return proj;
}
}
}
return nullptr;
}
示例3: main
//.........这里部分代码省略.........
}while( sMove != "q" );
if( sMove == "q" )
{
//cout << endl << "Really!? You just quit. Good going." << endl;
break;
}
/////////////////////////////////////PLAYER MOVEMENT AND ATTACK///////////////////////////////////////////
for( size_t i = 0 ; i < vvCreatures[dNum].size() ; i++ )
{
if( vvCreatures[dNum][i]->getCoordX() == tempX && vvCreatures[dNum][i]->getCoordY() == tempY )
{
//cout << "creature occupied set to true" << endl;
creatureOccupied = true;
break;
}
}
wallOccupied = vDL[dNum]->DungeonLevel::checkMove(tempX,tempY);
if(wallOccupied == true && creatureOccupied == false && ( tempX <! 0 || tempX >! 79 || tempY <! 0 || tempY >! 20 ))
{
vDL[dNum]->removeCreature(playerX, playerY);
playerX = tempX;
playerY = tempY;
vDL[dNum]->setCreature(pPlayer, playerX, playerY);
creatureTurn = true;
}
else if( wallOccupied == true && creatureOccupied == true )
{
if( bWeapon == false )
{
attack = mt() % (pPlayer->getWeapon())->getDamage();
}
else
{
attack = mt() % (punch->getDamage());
}
HP = (vDL[dNum]->getCreature(tempX,tempY))->getHP();
//cout << endl << "Creature's HP before: " << HP << endl;
mvprintw(24,0,"Creature's HP before: %i", HP);
refresh();
(vDL[dNum]->getCreature(tempX,tempY))->setHP(HP - attack);
//cout << endl << pPlayer->getName() << " attacked " << (vDL[dNum]->getCreature(tempX, tempY))->getName() << " for " << attack << " damage " << endl;
if( HP - attack <= 0 )
{
for( int i = 0 ; i < vvCreatures[dNum].size() ; i++ )
{
if( vvCreatures[dNum][i]->getCoordX() == tempX && vvCreatures[dNum][i]->getCoordY() == tempY )
{
vDL[dNum]->removeCreature( vvCreatures[dNum][i]->getCoordX(), vvCreatures[dNum][i]->getCoordY() );
//cout << pPlayer->getName() << " killed " << vvCreatures[dNum][i]->getName() << "!" << endl;
mvprintw(27,0,"%s killed the creature!",pPlayer->getName().c_str());
delete vvCreatures[dNum][i];
vvCreatures[dNum].erase(vvCreatures[dNum].begin() + i);
break;
}
}
pPlayer->setExperience(pPlayer->getExperience() + vDL.size() * 5);
}
else
{
HP = (vDL[dNum]->getCreature(tempX,tempY))->getHP();
}
//cout << endl << "Creature's HP after: " << HP << endl;
示例4: collideWeaponMonster
void collideWeaponMonster(Weapon w, Monster m[], Player p)
{
bool knockbackDebug = true;
float sqrt2over2 = .707;
for (int i = 0; i < numMonsters; i ++)
{
if (m[i].isLive == true)
{
if (m[i].vincible && w.isLive == true)
{
if(w.getDamageType() == bash || w.getDamageType() == stab)
{
//looking upwards
if (p.getDir() == UP)
{
//up box
if (w.getCurFrame() == 2)
{
if (bounding_box_collision( w.getX() + w.weaponOffsetX, w.getY() + w.weaponOffsetY, w.getW(), w.getLength(), m[i].getX() + m[i].getBoundOffsetW() , m[i].getY() + m[i].getBoundOffsetH(), m[i].getBoundW(), m[i].getBoundH()))
{
m[i].knockbackDirection = 1;
}
}
//diagonal box
if (w.getCurFrame() == 1)
{
if (bounding_box_collision(w.getX() + w.weaponOffsetX, w.getY() + w.weaponOffsetY + (w.getLength() * (1 - sqrt2over2)), w.getLength() * sqrt2over2 , w.getLength() * sqrt2over2 , m[i].getX() + m[i].getBoundOffsetW() , m[i].getY() + m[i].getBoundOffsetH(), m[i].getBoundW(), m[i].getBoundH()))
{
m[i].knockbackDirection = 2;
}
}
//right box
if (w.getCurFrame() == 0)
{
if (bounding_box_collision(w.getX() + w.weaponOffsetX, w.getY() + w.weaponOffsetY + w.getLength() - w.getW(), w.getLength(), w.getW() , m[i].getX() + m[i].getBoundOffsetW() , m[i].getY() + m[i].getBoundOffsetH(), m[i].getBoundW(), m[i].getBoundH()))
{
m[i].knockbackDirection = 3;
}
}
}
//looking downwards
if (p.getDir() == DOWN)
{
//down box
if (w.getCurFrame() == 2)
{
if (bounding_box_collision( w.getX() + w.weaponOffsetX + w.getLength() - w.getW(), w.getY() + w.weaponOffsetY, w.getW(), w.getLength(), m[i].getX() + m[i].getBoundOffsetW() , m[i].getY() + m[i].getBoundOffsetH(), m[i].getBoundW(), m[i].getBoundH()))
{
m[i].knockbackDirection = 5;
}
}
//diagonal box
if (w.getCurFrame() == 1)
{
if (bounding_box_collision(w.getX() + w.weaponOffsetX + (w.getLength() * (1 - sqrt2over2)), w.getY() + w.weaponOffsetY, w.getLength() * sqrt2over2 , w.getLength() * sqrt2over2 , m[i].getX() + m[i].getBoundOffsetW() , m[i].getY() + m[i].getBoundOffsetH(), m[i].getBoundW(), m[i].getBoundH()))
{
m[i].knockbackDirection = 6;
}
}
//left box
if (w.getCurFrame() == 0)
{
if (bounding_box_collision(w.getX() + w.weaponOffsetX, w.getY() + w.weaponOffsetY, w.getLength(), w.getW() , m[i].getX() + m[i].getBoundOffsetW() , m[i].getY() + m[i].getBoundOffsetH(), m[i].getBoundW(), m[i].getBoundH()))
{
m[i].knockbackDirection = 7;
}
}
}
//looking left
if (p.getDir() == LEFT)
{
//up box
if (w.getCurFrame() == 2)
{
if (bounding_box_collision(w.getX() + w.weaponOffsetX + w.getLength() - w.getW(), w.getY() + w.weaponOffsetY, w.getW(), w.getLength(), m[i].getX() + m[i].getBoundOffsetW() , m[i].getY() + m[i].getBoundOffsetH(), m[i].getBoundW(), m[i].getBoundH()))
{
m[i].knockbackDirection = 1;
}
}
//diagonal box
if (w.getCurFrame() == 1)
{
if (bounding_box_collision(w.getX() + w.weaponOffsetX + (w.getLength() * (1 - sqrt2over2)), w.getY() + w.weaponOffsetY + (w.getLength() * (1 - sqrt2over2)), w.getLength() * sqrt2over2 , w.getLength() * sqrt2over2 , m[i].getX() + m[i].getBoundOffsetW() , m[i].getY() + m[i].getBoundOffsetH(), m[i].getBoundW(), m[i].getBoundH()))
{
m[i].knockbackDirection = 8;
}
}
//left box
if (w.getCurFrame() == 0)
{
if (bounding_box_collision(w.getX() + w.weaponOffsetX, w.getY() + w.weaponOffsetY + w.getLength() - w.getW(), w.getLength(), w.getW() , m[i].getX() + m[i].getBoundOffsetW() , m[i].getY() + m[i].getBoundOffsetH(), m[i].getBoundW(), m[i].getBoundH()))
{
m[i].knockbackDirection = 7;
}
}
}
//facing right
if (p.getDir() == RIGHT)
{
//.........这里部分代码省略.........
示例5: hit
Uint16 Monster::hit(Uint16, Weapon& weap) {
sfxeng->playWAV(au_hit);
Uint16 newhealth=addHealth(weap.getDamage());
if (newhealth==0) die();
return newhealth;
}