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; }
TiledImageOpenVG::~TiledImageOpenVG() { destroyTiles(); }
//------------------------------------------------------------------------------------- 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(); } }