//-------------------------------------------------------------------------------- void TemplateSimplePro::setClick() { setHp(); setMp(); setLv(); setName(); }
void PlayerServer::injury(int point, Attribute attribute, std::unique_ptr<Card> &card, PlayerServer *source, bool fromChain) { TRIEV(t_PreInjury, &point, &attribute, &card, &source); if (point > 0) { WriteBuffer wb; uint8_t pt = (uint8_t)point; uint8_t attr = attribute; wb << this->position << pt << attr; GAME->notify(100, Notify_Injury, wb); setHp(hp - point); if (hp <= 0) { dying(source); } TRIEV(t_Injuried, &point, &attribute, &card, &source); if (!fromChain && chained && attribute != Attribute_None) { if(this->alive) this->setChained(false); int8_t pos = game->currentPosition; do { PlayerServer* player = static_cast<PlayerServer*>(game->players[pos]); if (player->alive && player->chained) { player->injury(point, attribute, card, source, true); if(player->alive) player->setChained(false); } pos++; if (pos >= (int8_t)game->players.size()) { pos = 0; } } while (pos != game->currentPosition); } } }
ourCreatures::ourCreatures(int hp, int maxHp, string creatName) { setName(creatName); setHp(hp); setMaxHp(maxHp); }
//Åöײ¼ì²âº¯Êý void BattleField::collisionDetection() { if (bullets.empty() || preys.empty()) { return; } // 1 Vector<Prey*> preyNeedToDelete; Vector<Bullet*> bulletNeedToDelete; // 2 for (int i = 0; i < bullets.size(); i++) { auto bullet1 = bullets.at(i); /*auto bulletRect = Rect(bullet->getPositionX() + bullet->getParent()->getPositionX() - bullet->getContentSize().width / 2, bullet->getPositionY() + bullet->getParent()->getPositionY() - bullet->getContentSize().height / 2, bullet->getContentSize().width, bullet->getContentSize().height);*/ auto bulletRect = bullet1->getBoundingBox(); for (int j = 0; j < preys.size(); j++) { auto enemy = preys.at(j); auto enemyRect = enemy->getBoundingBox(); // 4 if (bulletRect.intersectsRect(enemyRect))// Åöײ³É¹¦ { bullet->setpower(2); auto power = bullet->getpower(); auto hp = enemy->getHp(); hp = hp - 2; enemy->setHp(hp);//¿ÛѪ bulletNeedToDelete.pushBack(bullet1); if(hp<=0) preyNeedToDelete.pushBack(enemy); // 5 break; } } // ÒƳýËÀÁ˵Äprey for (Prey* preytemp:preyNeedToDelete) { preys.eraseObject(preytemp); preytemp->removeFromParentAndCleanup(true); } preyNeedToDelete.clear(); } // ÒƳýËÀÁ˵Äbullet for (const auto& bulletTemp : bulletNeedToDelete) { bullets.eraseObject(bulletTemp); //bulletTemp->removeFromParent(); bulletTemp->removeFromParentAndCleanup(true); } bulletNeedToDelete.clear(); }
Ship::Ship(unsigned int w, unsigned int h, unsigned int hp, unsigned int score, unsigned int flag) { setW(w); setH(h); setHp(hp); setScore(score); setFlag(flag); return ; }
Ship::Ship(void){ setW(0); setH(0); setHp(1); setScore(0); setFlag(0); return ; }
//----------------------------------------------------------------------------- void CCharacter::setHpMpSp( Flt num, DamageType type, ATTACK_RESULT_TYPE resType ) { //死亡 if ( ATTACK_RESULT_TYPE_DEAD == resType ) { setHp(0); } //恢复 if ( ATTACK_RESULT_TYPE_RECOVER == resType ) { if ( type & DT_HP ) { setHp(getHp()+num); } if ( type & DT_MP ) { //mCAttributeSystem.addValue(ATTR_ID_Mp, num); setMp(getMp()+num); } if ( type & DT_SP ) { //mCAttributeSystem.addValue(ATTR_ID_Sp, num); setSp(getSp()+num); } } //伤害 if ( ATTACK_RESULT_TYPE_HURT == resType ) { if ( type & DT_HP ) { //mCAttributeSystem.addValue(ATTR_ID_Hp, -num); setHp(getHp()-num); } if ( type & DT_MP ) { //mCAttributeSystem.addValue(ATTR_ID_Mp, -num); setMp(getMp()-num); } if ( type & DT_SP ) { //mCAttributeSystem.addValue(ATTR_ID_Sp, -num); setSp(getSp()-num); } } }
IElement::IElement(unsigned int hp, unsigned int posX ,unsigned int posY, unsigned int sizeX, unsigned int sizeY, int speed, std::string* skin){ setHp(hp); setPosX(posX); setPosY(posY); setSizeX(sizeX); setSizeY(sizeY); setSpeed(speed); setSkin(skin); return ; }
void MonsterProperties::hpRedo() { if (!InternalOperation && targetSprite){ auto sprite = dynamic_cast<EntityImageSprite*>(targetSprite); sprite->setHp(hp->text().toInt()); } else if (!InternalOperation && !targetSprite && templateFile != ""){ resetTemplateValue(resetHp); } }
ourCreatures::ourCreatures() { setName("none"); setElemWeak("none"); setElemStren("none"); setElem("none"); setHp(0); setMaxHp(0); }
Tank::Tank(Planet* planet, std::string tank_path, sf::Font* hp_font) { rotation = 0.0; setHp(INITIALHP); createSprite(tank_path); setPlanet(planet); createHP(hp_font); }
void GameLayer::initMembers() { std::vector<std::string> fileNames { "CardBlue.png", "CardRed.png", "CardGreen.png", "CardYellow.png", "CardPurple.png" }; std::vector<Character::Element> elements { Character::Element::Water, Character::Element::Fire, Character::Element::Wind, Character::Element::Holy, Character::Element::Shadow, }; for (int i = 0; i < fileNames.size(); i++) { //メンバー auto memberData = Character::create(); memberData->setMaxHp(200); memberData->setHp(200); memberData->setElement(elements[i]); _memberDatum.pushBack(memberData); //メンバーの表示 auto member = Sprite::create(fileNames[i].c_str()); member ->setPosition(Point(70 + i * 125, 598)); addChild(member, ZOrder::Char); //メンバーヒットポイントバー枠の表示 auto hpBg = Sprite::create("HpCardBackground.png"); hpBg->setPosition(Point(70 + i * 125, 554)); addChild(hpBg, ZOrder::CharHp); //メンバーヒットポイントバーの表示 auto hpBarForMember = ProgressTimer::create(Sprite::create("HpCardGreen.png")); hpBarForMember->setPosition(Point(hpBg->getContentSize().width / 2, hpBg->getContentSize().height / 2)); hpBarForMember->setType(ProgressTimer::Type::BAR); hpBarForMember->setMidpoint(Point::ZERO); hpBarForMember->setBarChangeRate(Point(1, 0)); hpBarForMember->setPercentage(memberData->getHpPercentage()); hpBg->addChild(hpBarForMember); //配列に格納 _members.pushBack(member); _hpBarForMembers.pushBack(hpBarForMember); } }
void Player::setGeneralName(const QString &general_name){ const General *new_general = Sanguosha->getGeneral(general_name); if(this->general != new_general){ this->general = new_general; if(new_general){ setHp(getMaxHP()); setKingdom(general->getKingdom()); } emit general_changed(); } }
void Spider::data(void) { data_speed(50, 0); data_frames(7, 4); data_frames_blackboard(4,4); setFlag1(false); setIsRotate(false); setNumFrameHcur(3); setRadiusAttack(50); setRadiusReview(300); setHp(100); setMp(0); }
void MonsterProperties::changeSpriteValue() { if (targetSprite && this->isVisible() && targetSprite->isHasMonsterProperties()){ auto sprite = dynamic_cast<EntityImageSprite*>(targetSprite); sprite->setHp(hp->text().toInt()); sprite->setMp(mp->text().toInt()); sprite->setAttack(attack->text().toInt()); sprite->setDefense(attack->text().toInt()); sprite->setMagic_Attack(magic_attack->text().toInt()); sprite->setMagic_Defense(magic_defense->text().toInt()); sprite->setSpeed(speed->text().toFloat()); sprite->setHardFactor(hardFactor->text().toFloat()); } }
Player::Player(Device* dev, SceneManager* scn, SceneNode* parent, std::string const& name, std::string const& shader, std::string const& path) :Entity(scn, parent, name, shader, path), dev(dev) { LOG(L_DEBUG, "Creating Player..."); setHp(9); setLife(3); setAttack(3); if (!static_cast<event::EventPlayer*>(this->dev->getEventManager()->getEventFromName("EventPlayer"))->getPlayer()) static_cast<event::EventPlayer*>(this->dev->getEventManager()->getEventFromName("EventPlayer"))->setPlayer(this); LOG(L_DEBUG, "Player has been created."); }
/**************************************************************************************************** 战斗相关-begin ****************************************************************************************************/ bool Building::initWithBattleLogic( DBuilding * db ) { _type = db->type / 100; _level = db->type % 100; setId(db->id); setType(db->type); setStatus(e_battle_status_idle); auto config = BuildingConfig::getBuildingConfig(db->type); setCoord(db->coord); //设置中心点 setMidCoord(Coord(db->coord.x - config->grid,db->coord.y - config->grid)); setHp(config->max_hp); if (initWithFile(BuildingCommon::getArmatureNameFromType(_type).c_str(),config->grid % 10)) { setCoor(db->coord); updateStatus(); return true; } return false; }
/** * Construct this Entry from XML. This member has to remain synchronized * with the detailed DTD in operations-engines.dtd * * @param e Engine XML element */ /*public*/ Engine::Engine(QDomElement e) : RollingStock(e) // MUST create the rolling stock first! { common(); QString a; // must set _model first so locomotive hp, length, type and weight is set properly if ((a = e.attribute (Xml::MODEL)) != NULL) { _model = a; } if ((a = e.attribute (Xml::HP)) != NULL) { setHp(a); } if ((a = e.attribute (Xml::LENGTH)) != NULL) { setLength(a); } if ((a = e.attribute (Xml::TYPE)) != NULL) { setTypeName(a); } if ((a = e.attribute (Xml::WEIGHT_TONS)) != NULL) { setWeightTons(a); } if ((a = e.attribute(Xml::B_UNIT)) != NULL) { setBunit(a == (Xml::_TRUE)); } if ((a = e.attribute (Xml::CONSIST)) != NULL) { Consist* c = EngineManager::instance()->getConsistByName(a); if (c != NULL) { setConsist(c); if ((a = e.attribute (Xml::LEAD_CONSIST)) != NULL && a==(Xml::_TRUE)) { _consist->setLead(this); } if ((a = e.attribute (Xml::CONSIST_NUM)) != NULL) { _consist->setConsistNumber(a.toInt()); } } else { log->error("Consist " + a + " does not exist"); } } addPropertyChangeListeners(); }
void PlayerServer::dying(PlayerServer *killer) { TRIEV(t_PreDying); if (!isDying()) return; int pos = game->currentPosition; do { PlayerServer* player = static_cast<PlayerServer*>(game->players[pos]); if (player->alive) { bool canSave = true; player->TRIEV(t_CanSave, &canSave, this); if (canSave) { while (isDying()) { unique_ptr<Card> card; if (player == this) card = move(player->needUseCard(CardProperty_Tao | CardProperty_Jiu)); else card = move(player->needUseCard(CardProperty_Tao)); if (card) { int addhp = 1; TRIEV(t_AddHpPoint, &addhp, &card, &player); setHp(hp + addhp); GAME->addToDeadwood(card); if (!isDying()) { return; } } else break; } } } pos++; if (pos > (int)game->players.size()) { pos = 0; } } while (pos!=game->currentPosition); died(killer); }
// メンバーの回復 void GameLayer::healMember(int healing) { for (int i = 0; i < _memberDatum.size(); i++) { // メンバーデータ取得 auto memberData = _memberDatum.at(i); // HPが0の場合は、回復しない if (memberData->getHp() <= 0) continue; // メンバーを回復する float preHpPercentage = memberData->getHpPercentage(); int afterHp = memberData->getHp() + healing; if (afterHp > memberData->getMaxHp()) afterHp = memberData->getMaxHp(); memberData->setHp(afterHp); // メンバーHPアニメーション auto act = ProgressFromTo::create(0.5, preHpPercentage, memberData->getHpPercentage()); _hpBarForMembers.at(i)->runAction(act); } }