コード例 #1
0
ファイル: c_main.cpp プロジェクト: petitJAM/PetEscape
void render_playing_state()
{
    // Render the background.
    al_clear_to_color( al_map_rgb( 105, 230, 255 ) );

    for( int i = 0; i < block_map->getLength(); ++i )
    {
        for( int j = 0; j < block_map->getHeight(); ++j )
        {
            if( block_map->getBlock( i, j ).getBlockType() )
            {
                al_draw_bitmap( tiles[ block_map->getBlock( i, j ).getBlockType() - 1 ],
                        i * 32 + GLOBAL_RENDER_OFFSET,
                        j * 32,
                        0 );
            }
        }
    }

    // Rendering code goes here
    BOOST_FOREACH( m_element tmp, objs )
    {
        ((GameObject*)(tmp.second))->render();
    }

    BOOST_FOREACH( m_element tmp, enemies )
    {
        EnemyObject* enemy = ((EnemyObject*)(tmp.second));
        std::cerr << (int)enemy->getID() << " " <<(int)enemy->getX() << std::endl;
        enemy->render();
    }
コード例 #2
0
bool Ned3DObjectManager::interactEnemyTerrain(EnemyObject &enemy, TerrainObject &terrain)
{
  Terrain *terr = terrain.getTerrain();
  if(terr == NULL) return false;

  //test for enemy collision with terrain
  Vector3 enemyPos = enemy.getPosition();
    
  float terrainHeight = terr->getHeight(enemyPos.x,enemyPos.z);
  if (enemyPos.y < terrainHeight)
  {
    enemyPos.y = terrainHeight;
    //enemy.setPPosition(enemyPos);       
    int tmpHndl = gParticle.createSystem("enemyfeatherssplat");
    gParticle.setSystemPos(tmpHndl, enemyPos);

    int thumpSound = gSoundManager.requestSoundHandle("Thump.wav");
    int instance = gSoundManager.requestInstance(thumpSound);
     if(thumpSound != SoundManager::NOINSTANCE)
  {
    gSoundManager.setPosition(thumpSound,instance,enemyPos);
    gSoundManager.play(thumpSound,instance);
    gSoundManager.releaseInstance(thumpSound,instance);
  }
    
    enemy.killObject();

    return true;
  }
  return false;
}
コード例 #3
0
// The main loop itself
void GameLogicCtrlr::LoopGame()
{
	if(!launchEnemies)
	{
		launchEnemies = true;

		// Mark time stamp
		this->launchTimeStamp = (long int) std::time(NULL) + this->launchTimeInterval;

		EnemyObject* enemy;
		float randSpawnPos;
		float randScale;

		// Make some enemies
		for(int i = 1; i < 6; i++)
		{
			randSpawnPos = GameLogicCtrlr::GetRandomNumber((int) EDGE_BORDER);
			enemy = NULL;
			enemy = new EnemyObject(glm::vec3(0.0f, randSpawnPos, ENEMY_SPAWN_HEIGHT));
			randScale = ((GameLogicCtrlr::GetRandomNumber(2) + 2) / 2.0f) + 0.5f;
			enemy->SetScale(randScale, randScale, randScale);
			GameObjectCtrlr::GetInstance()->Add(enemy);
		}
	}

	if( ((long int) std::time(NULL) > this->launchTimeStamp) && launchEnemies)
	{
		launchEnemies = false;
	}
}
コード例 #4
0
void EnemySpawner::spawnCountOfEnemy(const SpawnerInfo& enemyToSpawnNow, GameData * _gameData )
{
	for(int i = enemyToSpawnNow.amount; i > 0; i --)
	{
		//EnemyCollection& enemysColl = _gameData->getEnemys();
		BaseCollection<ShipPrefab, EnemyObject>& enemiesCollection = _gameData->getEnemies();
		EnemyObject * tmpEnemy = _gameData->instantiateEnemy(enemyToSpawnNow.prefabID, AI_TYPE::fighter);
		Vector3 newPosition = myPosition + Vector3(200.0*(i-1), 0.0, 0.0);
		tmpEnemy->setPosition(newPosition);
		EffectObject * spawnEffect = _gameData->instantiateEffect(enemyToSpawnNow.spawnEffectID);
		spawnEffect->setPosition(newPosition);
	}
}
コード例 #5
0
void Ned3DObjectManager::shootEnemy(EnemyObject &enemy)
{
  int tmpHndl = gParticle.createSystem("enemyfeathers");
  Vector3 enemyPos = enemy.getPosition();
  gParticle.setSystemPos(tmpHndl, enemyPos);
  int deathSound = gSoundManager.requestSoundHandle("enemydeath.wav");
  int deathInstance = gSoundManager.requestInstance(deathSound);
  if(deathInstance != SoundManager::NOINSTANCE)
  {
    gSoundManager.setPosition(deathSound,deathInstance,enemyPos);
    gSoundManager.play(deathSound,deathInstance);
    gSoundManager.releaseInstance(deathSound,deathInstance);
  }
  enemy.setDying();
}
コード例 #6
0
bool Ned3DObjectManager::interactPlaneEnemy(PlaneObject &plane, EnemyObject &enemy)
{
  bool collided = enforcePositions(plane, enemy);
  if(collided && !enemy.isDying())
  {
    shootEnemy(enemy);
    plane.damage(1);
  }
  return collided;
}
コード例 #7
0
unsigned int Ned3DObjectManager::spawnEnemy(const Vector3 &position, const Vector3 &circleCenter, float speed, bool flyLeft)
{
  if(m_enemyModel == NULL)
    m_enemyModel = m_models->getModelPointer("Enemy"); // Cache enemy model
  if(m_enemyModel == NULL)
    return 0;  // Still NULL?  No such model
  EnemyObject *enemy = new EnemyObject(m_enemyModel);
  enemy->setSpeed(speed);
  enemy->setPosition(position);
  enemy->setCirclingParameters(circleCenter, flyLeft);
  enemy->setMovementPattern(EnemyObject::MP_CIRCLING);
  unsigned int id = addObject(enemy);

  addPhysics(enemy,true);
  enemy->setPPosition(position.x,position.y,position.z);

  m_enemys.insert(enemy);
  m_startingEnemies++;

  return id;
}
コード例 #8
0
unsigned int Ned3DObjectManager::spawnEnemy(const Vector3 &position, const EulerAngles &orientation, float speed)
{
  if(m_enemyModel == NULL)
    m_enemyModel = m_models->getModelPointer("Enemy"); // Cache enemy model
  if(m_enemyModel == NULL)
    return 0;  // Still NULL?  No such model
  EnemyObject *enemy = new EnemyObject(m_enemyModel);
  enemy->setSpeed(speed);
  enemy->setPosition(position);
  enemy->setOrientation(orientation);
  enemy->setMovementPattern(EnemyObject::MP_STRAIGHT);
  unsigned int id = addObject(enemy);

  addPhysics(enemy,true);
  enemy->setPPosition(position.x,position.y,position.z);

  m_enemys.insert(enemy);
  m_startingEnemies++;

  return id;
}