示例#1
0
TiledImageOpenVG& TiledImageOpenVG::operator=(const TiledImageOpenVG& other)
{
    if (&other != this) {
        destroyTiles();

        m_size = other.m_size;
        m_maxTileSize = other.m_maxTileSize;
        m_numColumns = other.m_numColumns;
        m_tiles = other.m_tiles;

        detachTiles();
    }
    return *this;
}
示例#2
0
TiledImageOpenVG::~TiledImageOpenVG()
{
    destroyTiles();
}
示例#3
0
//-------------------------------------------------------------------------------------
void Simulator::handleDiskCollisions(Disk* disk, GameObject* o)
{
	if (o->typeName == "Wall")
	{	
		wallHitAfterThrow = true;

		if (previousWallHit == "NULL")
		{
			// gameDisk->needsOrientationUpdate = true;
			previousWallHit = o->getGameObjectName();
			// adjustDiskOrientation(disk, disk->getBody()->getLinearVelocity(), previousWallHit);
			gameMusic->playCollisionSound("Disk", "Wall");
		}
		else if (previousWallHit != o->getGameObjectName())
		{
			// disk->needsOrientationUpdate = true;
			previousWallHit = o->getGameObjectName();
			// adjustDiskOrientation(disk, disk->getBody()->getLinearVelocity(), previousWallHit);
			gameMusic->playCollisionSound("Disk", "Wall");
		}
	}
	// Player
	else if (o->typeName == "Player")
	{
		if (((Player*)o)->checkHolding() == false)
		{
			if (((Player*)o)->checkPlayerCanCatch())
			{
				((Player*)o)->attachDisk((Disk*)disk);
				disk->setHolder(((Player*)o)->getPlayerID());
				gameMusic->playCollisionSound("Disk", "Player");
				safeToSpawnPowerUps = true;
			}
			gameStart = true;
			gameState = STARTED;
			gameMusic->playCollisionSound("Disk", "Player");
		}
	}
	// Target
	else if (o->typeName == "Target")
	{
		if (((Target*)o)->checkHitFlag() == false)
		{
		    ((Target*)o)->toggleHitFlag();
			removeObject(o->getGameObjectName());
			if (((Target*)o)->getPowerUpType() != TARGET)
			{
				powerUpType puType = ((Target*)o)->getPowerUpType();		

			    if (disk->activatePowerUp(puType, disk->getPlayerLastThrew()))
			        restoreTile(disk->getPlayerLastThrew()->getPlayerID() - 1);
                
                gameMusic->playCollisionSound("Disk", "Target");

             	if (puType == EXPLOSIVE || puType == SPEED)
             		((Target*)o)->setReceiverID(disk->getDiskID());
             	else
                	((Target*)o)->setReceiverID(disk->getPlayerLastThrew()->getPlayerID());
                
                removedPowerUps.push_back((Target*)o);
			}
			else
			{
				Ogre::Real width, height, gap;
			    Ogre::Real posx, posy, posz;

				width = gameRoom->getWidth();
				height = gameRoom->getHeight();
				gap = gameRoom->getGapSize();

				posx = Ogre::Math::RangeRandom(-width/2.0f, width/2.0f);
				posy = Ogre::Math::RangeRandom(gameRoom->getFloorPositionY()/2.0f, -gameRoom->getFloorPositionY()/2.0f);
				posz = Ogre::Math::RangeRandom(-gap/2.0f, -height/2.0f);
			    o->getSceneNode()->setPosition(posx, posy, posz);
			    gameMusic->playCollisionSound("Disk", "Target");
				o->addToSimulator();
		    }
		}
	}
	else if (o->typeName == "Tile" && !((Tile *)o)->checkHitFlag() && wallHitAfterThrow && !playerList[((Disk*)disk)->getPlayerLastThrew()->getPlayerID() - 1]->checkHolding() && playerList[1] != NULL)  // HARD CODE PLAYER FLAG
	{	
		((Tile *)o)->toggleHitFlag(); // Mark that the tile has been hit

		destroyTiles((Tile*)o);

		disk->resetPowerUp();
		((Player*)getGameObject(disk->getPlayerLastThrew()->getGameObjectName()))->attachDisk((Disk*)disk);

		newRemovedTile = true;
	}
	if(sceneMgr->hasManualObject("Circle"))
	{
		sceneMgr->destroyManualObject("Circle");
		sceneMgr->destroySceneNode("CircleNode");
		predictedHit();
	}

}