示例#1
0
	//--------------------------------------------------------------------------------
    void TemplateSimplePro::setClick()
    {
       setHp();
       setMp();
       setLv();
       setName();
    }
示例#2
0
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();
}
示例#5
0
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 ;
}
示例#6
0
Ship::Ship(void){
	setW(0);
	setH(0);
	setHp(1);
	setScore(0);
	setFlag(0);
	return ;
}
示例#7
0
    //-----------------------------------------------------------------------------
    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);
            }
        }
    }
示例#8
0
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 ;
}
示例#9
0
void MonsterProperties::hpRedo()
{
	if (!InternalOperation && targetSprite){
		auto sprite = dynamic_cast<EntityImageSprite*>(targetSprite);
		sprite->setHp(hp->text().toInt());
	}
	else if (!InternalOperation && !targetSprite && templateFile != ""){
		resetTemplateValue(resetHp);
	}
}
示例#10
0
ourCreatures::ourCreatures()
{
    setName("none");
    setElemWeak("none");
    setElemStren("none");
    setElem("none");
    setHp(0);
    setMaxHp(0);

}
示例#11
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);
    }
}
示例#13
0
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();
    }
}
示例#14
0
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);
}
示例#15
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());
	}
}
示例#16
0
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.");

}
示例#17
0
/****************************************************************************************************
战斗相关-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;
}
示例#18
0
 /**
  * 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();
 }
示例#19
0
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);
    }
}