Ejemplo n.º 1
0
bool SimplePanleLayer::onTouchBegan(Touch *touch, Event *event)
{
	auto target = static_cast<BaseBuildIcon*>(event->getCurrentTarget());
    Point locationInNode = target->convertTouchToNodeSpace(touch);
    Size size = target->baseIcon->getContentSize();
	Rect rect = Rect(0-size.width/2, 0-size.height/2, size.width, size.height);
    if (rect.containsPoint(locationInNode))
    {
		if(target->getIsSelected())//如果已经选中(第二次按下)
		{
			if(target->getIsAble())//如果钱够用
			{
				SoundManager::playTowerSell();
				GameManager::getInstance()->MONEY = GameManager::getInstance()->MONEY+ (tower->getBuildMoney()/2);
				tower->sellTower();
				this->setVisible(false);
				isBuilt = true;
			}
		}else{//第一次按下
			target->setSelected();//设置为选中状态
		}
        return true;
    }
    return false;
}
bool UpdatePanleLayer2WithFlag::onTouchBegan(Touch *touch, Event *event)
{
	auto target = static_cast<BaseBuildIcon*>(event->getCurrentTarget());
    Point locationInNode = target->convertTouchToNodeSpace(touch);
    Size size = target->baseIcon->getContentSize();
	Rect rect = Rect(0-size.width/2, 0-size.height/2, size.width, size.height);
    if (rect.containsPoint(locationInNode))
    {
		if(target->getIsSelected())//如果已经选中(第二次按下)
		{
			if(target->getIsAble())//如果钱够用
			{
				switch (target->getTag())
				{
				case(1):
					SoundManager::playTowerUpdate();
					GameManager::getInstance()->MONEY = GameManager::getInstance()->MONEY-tower->getUpdateMoney();
					tower->update1();
					break;
				case(2):
					SoundManager::playTowerUpdate();
					GameManager::getInstance()->MONEY = GameManager::getInstance()->MONEY-tower->getUpdateMoney();
					tower->update2();
					break;
				case(3)://售出
					SoundManager::playTowerSell();
					GameManager::getInstance()->MONEY = GameManager::getInstance()->MONEY+ (tower->getBuildMoney()/2);
					tower->sellTower();
					break;
				}
				this->setVisible(false);
				isBuilt = true;
			}
		}else{//第一次按下
			updateIcon1->setNotSelected();
			updateIcon2->setNotSelected();
			sellIcon->setNotSelected();
			target->setSelected();//设置为选中状态
			switch (target->getTag())
			{
				case(1)://
					static_cast<BaseMap*>(this->getParent()->getParent())->playerState->showTowerInfo(ASSASSIN);
					break;
				case(2)://
					static_cast<BaseMap*>(this->getParent()->getParent())->playerState->showTowerInfo(TEMPLAR);
					break;
			}
		}
        return true;
    }
    return false;
}
Ejemplo n.º 3
0
void Branch::drawBranches(QPainter* painter, QPointF panDiff)
{
    QPen pen = QPen();
    pen.setWidth(2);

    QPointF maxRectTemp[4];
    maxRectTemp[0] = maxRect[0] + panDiff;
    maxRectTemp[1] = maxRect[1] + panDiff;
    maxRectTemp[2] = maxRect[2] + panDiff;
    maxRectTemp[3] = maxRect[3] + panDiff;

    QPointF minRectTemp[4];
    minRectTemp[0] = minRect[0] + panDiff;
    minRectTemp[1] = minRect[1] + panDiff;
    minRectTemp[2] = minRect[2] + panDiff;
    minRectTemp[3] = minRect[3] + panDiff;

    if (!getIsSelected())
    {
        pen.setColor(QColor(0, 130, 0, 95));
        painter->setPen(pen);
        painter->setBrush(QBrush(QColor(0, 130, 0, 95), Qt::SolidPattern));
        painter->drawPolygon(maxRectTemp, 4);

        pen = QPen();
        pen.setWidth(2);
        pen.setColor(QColor(0, 75, 0, 95));
        painter->setPen(pen);
        painter->setBrush(QBrush(QColor(0, 75, 0, 95), Qt::SolidPattern));
        painter->drawPolygon(minRectTemp, 4);
    }
    else
    {
        pen.setColor(QColor(0, 130, 0, 255));
        painter->setPen(pen);
        painter->setBrush(QBrush(QColor(0, 130, 0, 255), Qt::SolidPattern));
        painter->drawPolygon(maxRectTemp, 4);

        pen = QPen();
        pen.setWidth(2);
        pen.setColor(QColor(0, 75, 0, 255));
        painter->setPen(pen);
        painter->setBrush(QBrush(QColor(0, 75, 0, 255), Qt::SolidPattern));
        painter->drawPolygon(minRectTemp, 4);
    }
}