Restrict Tile Map to its boundaries
- by Farooq Arshed
I have loaded a tmx file in cocos2dx and now I am trying to implement panning. I have successfully implemented the panning first part where the map moves. Now I want to restrict the map so it does not display the map beyond its boundary where it shows black screen. I am confused as to how to implement it.
Below is my code any help would be appreciated.
bool HelloWorld::init()
{
if ( !CCLayer::init() )
{
return false;
}
const char* tmx= "isometric_grass_and_water.tmx";
_tileMap = new CCTMXTiledMap();
_tileMap->initWithTMXFile(tmx);
this->addChild(_tileMap);
this->setTouchEnabled(true);
return true;
}
void HelloWorld::ccTouchesBegan(CCSet *touches, CCEvent *event){
CCSetIterator it;
for (it=touches->begin(); it!=touches->end(); ++it){
CCTouch* touch = (CCTouch*)it.operator*();
CCLog("touches id: %d", touch->getID());
oldLoc = touch->getLocationInView();
oldLoc = CCDirector::sharedDirector()->convertToGL(oldLoc);
}
}
void HelloWorld::ccTouchesMoved(CCSet *touches, CCEvent *event) {
if (touches->count() == 1) {
CCTouch* touch = (CCTouch*)( touches->anyObject() );
this->moveScreen(touch);
} else if (touches->count() == 2) {
this->scaleScreen(touches);
}
}
void HelloWorld::moveScreen(CCTouch* touch) {
CCPoint currentLoc = touch->getLocationInView();
currentLoc = CCDirector::sharedDirector()->convertToGL(currentLoc);
CCPoint moveTo = ccpSub(oldLoc, currentLoc);
moveTo = ccpMult(moveTo, -1);
oldLoc = currentLoc;
this->setPosition(ccpAdd(this->getPosition(), ccp(moveTo.x, moveTo.y)));
}