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; }
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); } }