Example #1
0
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;
		}
	}
}
Example #3
0
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);
    }
}
Example #4
0
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;
}
Example #5
0
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);
    }
}