void GameBoard::intersectYDarkEaterMario(int i) { if(!getModel()->getMario()->getIsMovingL() && !getModel()->getMario()->getIsMovingR() && !model->getDarkEater()->at(i)->isDestroyed()){ getModel()->getMario()->move(getModel()->getDarkEater()->at(i)->getRect().x(), getModel()->getMario()->getRect().y()); } if(!model->getDarkEater()->at(i)->isDestroyed() && getIsAttacking()) { getModel()->getShock()->move(model->getDarkEater()->at(i)->getRect().x() - 50, model->getDarkEater()->at(i)->getRect().y() - 50); getModel()->getShock()->setShow(true); Shock::currentFrame = 0; getModel()->getDarkEater()->at(i)->setSprite(QString(":images/dark_eater_die.png")); model->getDarkEater()->at(i)->setDestroyed(true); } }
void ReinforceSoldier2::checkNearestMonster() { auto instance = GameManager::getInstance(); auto monsterVector = instance->monsterVector; nearestMonster = NULL; for(int i = 0; i < monsterVector.size(); i++) { auto monster = monsterVector.at(i); double distance = (this->getPosition()).getDistance(monster->baseSprite->getPosition()); if (monster->getAttackBySoldier() && distance < 50 && (!monster->getIsAttacking())) { nearestMonster = monster; nearestMonster->stopWalking(); nearestMonster->setIsAttacking(true); break; } } }
void GameBoard::intersectXDarkEaterMario(int i) { if( !model->getMario()->getUntouchable() && !getIsAttacking() && !model->getDarkEater()->at(i)->isDestroyed() &&( model->getDarkEater()->at(i)->intersectRight(model->getMario()->getRect())||model->getDarkEater()->at(i)->intersectLeft(model->getMario()->getRect()))){ if( !model->getMario()->getIsMovingR()&& !model->getMario()->getIsMovingL()) model->getDarkEater()->at(i)->setMoveX(!model->getDarkEater()->at(i)->getMoveX()); if(getModel()->getMario()->getIsMovingR() && !model->getDarkEater()->at(i)->getMoveX()) model->getDarkEater()->at(i)->setMoveX(!model->getDarkEater()->at(i)->getMoveX()); else if(getModel()->getMario()->getIsMovingL() && model->getDarkEater()->at(i)->getMoveX()) model->getDarkEater()->at(i)->setMoveX(!model->getDarkEater()->at(i)->getMoveX()); showBloodCount = 0; this->model->getMario()->setIsHurted(true); } }
bool GameBoard::intersectBottomMario(int i) { if(i<model->getFloors()->size() || i<model->getSafes()->size() || i<model->getMysticTrees()->size() || i<model->getDarkEater()->size()){ if(!model->getFloors()->empty() && i<model->getFloors()->size()){ if(model->getMario()->intersectBottom(model->getFloors()->at(i)->getRect())) return true; } if(!model->getSafes()->empty() && i<model->getSafes()->size()){ if(model->getMario()->intersectBottom(model->getSafes()->at(i)->getRect())){ if(getIsAttacking()){ if(model->getSafes()->at(i)->getCapacity()){ if(model->getSafes()->at(i)->getCapacity() == 2){ model->createMushroom(model->getSafes()->at(i)->getRect().x(), model->getSafes()->at(i)->getRect().y(), false); model->getSafes()->at(i)->setCapacity(1); } }else model->getSafes()->at(i)->setDestroyed(true); } return true; } } if(!model->getMysticTrees()->empty() && i<model->getMysticTrees()->size()){ if(model->getMario()->intersectBottom(model->getMysticTrees()->at(i)->getRect())){ attackMysticTree(i); return true; } } if(!model->getDarkEater()->empty() && i<model->getDarkEater()->size()){ if(model->getMario()->intersectBottom(model->getDarkEater()->at(i)->getRect()) ){ intersectYDarkEaterMario(i); return true; } } intersectBottomMario(i+1); } else return false; }
void GameBoard::movementMario() { int y=model->getMario()->getRect().y(); if(model->getMario()->getIsLittle() && (model->getMario()->getGoldNumber() > model->getMario()->getGoldNumberWhenMushroom() + 30)) model->getMario()->setIsLittle(false); if(getIsJumping()){ if(getIsAttacking()){ for(int i=0;i<7;++i){xRelatif += 1;} //xRelatif += 7; } else for(int i=0;i<4;++i){xRelatif += 1;} //xRelatif+=4; yRelatif=(-0.02*(xRelatif*xRelatif)+200); //for(int i;i<yRelatif;++i){y = startJumpY-1;} y = startJumpY-yRelatif; moveXMario(y); model->getMario()->setCurrentFrame(0); if(intersectTopMario(0)){ xRelatif=0; yRelatif=0; startJumpY=model->getMario()->getRect().y(); setIsJumping(false); } } if(intersectBottomMario(0)){ xRelatif=0; yRelatif=0; startJumpY=model->getMario()->getRect().y(); setIsJumping(false); moveXMario(y); if(getIsAttacking()){ if(getModel()->getMario()->getIsLittle()) getModel()->getShock()->move(model->getMario()->getRect().x() - 60, model->getMario()->getRect().y() - 25); else getModel()->getShock()->move(model->getMario()->getRect().x() - 50, model->getMario()->getRect().y()); getModel()->getShock()->setShow(true); Shock::currentFrame = 0; setIsAttacking(false); } if(getIsMovingR() && tempMove == 1){ for(int i=0;i<57;i++){model->getMario()->setCurrentFrame(model->getMario()->getCurrentFrame() + 1);} //model->getMario()->setCurrentFrame(model->getMario()->getCurrentFrame() + 57); if (model->getMario()->getCurrentFrame() >= 1190 ) model->getMario()->setCurrentFrame(0); tempMove = 0; } else if(getIsMovingR()) tempMove++; else if(getIsMovingL() && tempMove == 1){ for(int i=0;i<57;i++){model->getMario()->setCurrentFrame(model->getMario()->getCurrentFrame() - 1);} //model->getMario()->setCurrentFrame(model->getMario()->getCurrentFrame() - 57); if (model->getMario()->getCurrentFrame() <= 0 ) model->getMario()->setCurrentFrame(1191); tempMove = 0; } else if(getIsMovingL()) tempMove++; else model->getMario()->setCurrentFrame(0); } if((!intersectBottomMario(0) && !getIsJumping())){ yRelatif=(-0.02*(xRelatif*xRelatif)); for(int i=0;i<4;++i){xRelatif += 1;} //xRelatif+=4; if(getIsAttacking()){ for(int i=0;i<7;++i){xRelatif += 1;} //xRelatif += 7; } y = startJumpY-yRelatif; moveXMario(y); model->getMario()->setCurrentFrame(0); } }