Esempio n. 1
0
/**
 * @brief GameMaster::walka	Funkcja losująca odpowiedniego przeciwnika i rozpoczynająca walkę
 * @param opcja		informacja jaka opcja walki (jaki przeciwnik) została wybrana
 */
void GameMaster::startFight(int enemyType)
{
	int enemyLvlEasy = (currentPlayer_->level() + 1 ) / 2;
	Enemy* enemy = nullptr;


	if (enemyType >= PVPActions)
	{
		//TODO wyznaczenie przeciwnika do pvp
	} else {
		switch((Action)enemyType) {
		case EnemyEasy:
			enemy = generateEnemy(enemyLvlEasy);
			currentPlayer_->setHasFoughtRecently(true);
			break;
		case EnemyHard:
			enemy = generateEnemy(enemyLvlEasy + 1);
			currentPlayer_->setHasFoughtRecently(true);
			break;
		case QuestEnemy:
			enemy = currentQuest_->enemies()->front();
		default:
			qDebug() << QString::fromUtf8("Błędna opcja");
		}
	}

	if (enemy == nullptr)
		return;

	fightWindow_ = new FightWindow(currentPlayer_, enemy, this); //NOTE CFiend moze lepiej nie alokowac na stercie
	fightWindow_->setWindowModality(Qt::ApplicationModal);
	fightWindow_->setAttribute(Qt::WA_DeleteOnClose);
	fightWindow_->beginFight();
}
Esempio n. 2
0
void Game::update() {
	checkCollisions();
	generateEnemy();

	if (keys[' '] == true) 
		player->shoot();

	if (keys['a'])
		player->moveLeft();

	if (keys['d'])
		player->moveRight();

	if (keys['w'])
		player->moveForward();

	if (keys['s'])
		player->moveBackward();

	if (keys['q'])
		player->pickAnotherWeapon();

	for (auto bullet : bullets) {
		bullet->update();
	}

	for (auto enemy : enemies) {
		enemy->update();
	}

	player->update();
}
void generateRoom(){
  int room = DRoom -> room;
  DRoom -> room = DRoom -> room + 1;
  generateEnemy();
  printf("There is a %s in this room\n", Enemy->name);
  DRoom -> roomClear= 0;
  DRoom -> roomXp = rand_lim(Player->level) + Player->level + room;
  generateWep(Player->level);
}
Esempio n. 4
0
void ColoredCubeApp::updateScene(float dt)
{
    for (int i = 0; i < MAX_NUM_STARS; i++)
    {
        stars[i].update(dt);
    }

    switch (gsm->getGameState()) {
    case GameStateManager::START_GAME: {
        D3DApp::updateScene(dt);
        gameObject1.update(dt);
        D3DXMATRIX w;

        D3DXMatrixTranslation(&w, 2, 2, 0);
        mfxWVPVar->SetMatrix(w);

        score = 0;

        // Build the view matrix.
        /*D3DXVECTOR3 pos(10.0f, 2.0f, 0.0f);
        D3DXVECTOR3 target(0.0f, 0.0f, 0.0f);
        D3DXVECTOR3 up(0.0f, 1.0f, 0.0f);
        D3DXMatrixLookAtLH(&mView, &pos, &target, &up);*/

        if(GetAsyncKeyState(VK_SPACE) & 0x8000 && gsm->getGameState() != GameStateManager::IN_GAME) {
            gsm->setGameState(GameStateManager::IN_GAME);
            audio->playCue(SELECT);
        }

        Vector3 oldEnemyPositions[MAX_NUM_ENEMIES];
        for (int i = 0; i < MAX_NUM_ENEMIES; i++)
        {
            oldEnemyPositions[i] = enemyObjects[i].getPosition();
        }

        Vector3 oldBulletPositions[MAX_NUM_BULLETS];
        for (int i = 0; i < MAX_NUM_BULLETS; i++)
        {
            oldBulletPositions[i] = playerBullets[i].getPosition();
        }

        //Camera Object
        camera.update(dt);
        break;
    }

    case GameStateManager::IN_GAME:
    {
        //Generate a block every three seconds
        if (enemyBuffer.elapsedTime() > 2) {
            enemyBuffer.resetClock();

            generateEnemy(enemyObjects, dt);
        }

        if (gameTimer.elapsedTime() >= 1) {
            gameTimer.resetClock();
            secondsRemaining--;
        }


        for (int i = 0; i < MAX_NUM_BULLETS; i++)
        {
            playerBullets[i].update(dt);
        }


        for (int i = 0; i < MAX_NUM_EXP_PARTICLES; i++)
        {
            particles[i].update(dt);
        }

        if (camera.isCameraRecoiling()) {
            camera.cameraRecoil(dt);
        }


        if(explosionRunning) explosionTimer += dt;
        if (explosionTimer > .55) {
            explosionTimer = 0;
            explosionRunning = false;
            for (int i = 0; i < MAX_NUM_EXP_PARTICLES; i++)
            {
                particles[i].setInActive();
            }
        }

        if(GetAsyncKeyState(VK_RETURN) & 0x8000) {
            if(shotRelease) {

                shootBullet(playerBullets, dt, gameObject1);

                //shotRelease = false;
            }
        }


        //if(!(GetAsyncKeyState(VK_RETURN) & 0x8000)) shotRelease = true;

        Vector3 oldEnemyPositions[MAX_NUM_ENEMIES];
        for (int i = 0; i < MAX_NUM_ENEMIES; i++)
        {
            oldEnemyPositions[i] = enemyObjects[i].getPosition();
        }

        Vector3 direction(0, 0, 0);
        Vector3 oldposition = gameObject1.getPosition();

        D3DApp::updateScene(dt);
        gameObject1.update(dt);
        for (int i = 0; i < MAX_NUM_ENEMIES; i++) {
            enemyObjects[i].update(dt);
        }

        if((GetAsyncKeyState('A') & 0x8000) && !(GetAsyncKeyState('D') & 0x8000))  direction.z = -1.0f;
        if((GetAsyncKeyState('D') & 0x8000) && !(GetAsyncKeyState('A') & 0x8000))  direction.z = +1.0f;

        D3DXVec3Normalize(&direction, &direction);

        for (int i = 0; i < MAX_NUM_ENEMIES; i++)
        {
            //if they collide and are active
            if(gameObject1.collided(&enemyObjects[i]) && enemyObjects[i].getActiveState())
            {
                audio->playCue(FAIL);
                enemyObjects[i].setInActive();
                //score++;
                camera.cameraShake(dt);
                score = 0;
                gsm->setGameState(GameStateManager::END_GAME);
            }


            if (enemyObjects[i].getPosition().x > 7) {
                enemyObjects[i].setInActive();
            }
        }

        for (int i = 0; i < MAX_NUM_BULLETS; i++)
        {
            for (int j = 0; j < MAX_NUM_ENEMIES; j++)
            {
                if(playerBullets[i].collided(&enemyObjects[j]) && enemyObjects[j].getActiveState())
                {
                    audio->playCue(BOOM);
                    explosionTimer = 0;
                    runExplosion(playerBullets[i].getPosition());
                    enemyObjects[j].setInActive();
                    playerBullets[i].setInActive();
                    score++;
                }
            }
        }


        gameObject1.setVelocity( direction * gameObject1.getSpeed());

        if (gameObject1.getPosition().z < -PLAYER_Z_RANGE) {
            gameObject1.setPosition(Vector3(oldposition.x, oldposition.y, -PLAYER_Z_RANGE));
            camera.setCameraMoveLeft(false);
            camera.setCameraMoveRight(true);
        }
        else if (gameObject1.getPosition().z > PLAYER_Z_RANGE) {
            gameObject1.setPosition(Vector3(oldposition.x, oldposition.y, PLAYER_Z_RANGE));
            camera.setCameraMoveRight(false);
            camera.setCameraMoveLeft(true);
        }
        else {
            camera.setCameraMoveRight(true);
            camera.setCameraMoveLeft(true);
        }

        //Destroys bullet if too far away
        for (int i = 0; i < MAX_NUM_BULLETS; i++)
        {
            if(playerBullets[i].getPosition().x < -10 && playerBullets[i].getActiveState())
                playerBullets[i].setInActive();
        }

        D3DXMATRIX w;

        D3DXMatrixTranslation(&w, 2, 2, 0);
        mfxWVPVar->SetMatrix(w);

        //Camera Object
        camera.update(dt);

        //Get Camera viewMatrix
        mView = camera.getViewMatrix();
        mProj = camera.getProjectionMatrix();
    }

    if (secondsRemaining <= 0)
    {
        gsm->setGameState(GameStateManager::END_GAME);
    }

    case GameStateManager::END_GAME:
    {
        //D3DApp::updateScene(dt);
        //gameObject1.update(dt);

        if (camera.isCameraShaking()) {
            camera.cameraShake(dt);
        }

        D3DXMATRIX w;

        D3DXMatrixTranslation(&w, 2, 2, 0);
        mfxWVPVar->SetMatrix(w);

        //// Build the view matrix.
        //D3DXVECTOR3 pos(10.0f, 2.0f, 0.0f);
        //D3DXVECTOR3 target(0.0f, 0.0f, 0.0f);
        //D3DXVECTOR3 up(0.0f, 1.0f, 0.0f);
        //D3DXMatrixLookAtLH(&mView, &pos, &target, &up);

        if(GetAsyncKeyState(VK_SPACE) & 0x8000 && gsm->getGameState() != GameStateManager::IN_GAME) {
            restartGame();
            gsm->setGameState(GameStateManager::IN_GAME);
            audio->playCue(SELECT);
        }

        //Camera Object
        camera.update(dt);

        break;
    }


    default: {
        throw(GameError(gameErrorNS::FATAL_ERROR, "Game State Error"));
        break;
    }
    }
}