CCArray* CollisionEngine::getSurroundingTilesAtPosition(CCPoint position, CCTMXLayer *layer) { CCPoint plPos = tileCoordForPosition(position); CCArray *gids = CCArray::create(); for (int i = 0; i < 9; i++) { int c = i % 3; int r = (int) (i / 3); CCPoint tilePos = ccp(plPos.x + (c - 1), plPos.y + (r - 1)); // fall into a hole if (tilePos.y > (map->getMapSize().height - 1)) { // kill the enemy here //this->gameOver(false); return NULL; } int tgid = layer->tileGIDAt(tilePos); CCRect tileRect = tileRectFromTileCoords(tilePos); CCDictionary *tileDict = CCDictionary::create(); CCXNumericData *tilePosData = CCXNumericData::create(); CCXNumericData *tgidData = CCXNumericData::create(); CCXNumericData *rectOrgXData = CCXNumericData::create(); CCXNumericData *rectOrgYData = CCXNumericData::create(); tilePosData->setPoint(tilePos); tgidData->setIntValue(tgid); rectOrgXData->setFloatValue(tileRect.origin.x); rectOrgYData->setFloatValue(tileRect.origin.y); tileDict->setObject(tgidData, "gid"); tileDict->setObject(rectOrgXData, "x"); tileDict->setObject(rectOrgYData, "y"); tileDict->setObject(tilePosData, "tilePos"); gids->addObject(tileDict); } gids->removeObjectAtIndex(4); gids->insertObject(gids->objectAtIndex(2), 6); gids->removeObjectAtIndex(2); gids->exchangeObjectAtIndex(4, 6); gids->exchangeObjectAtIndex(0, 4); return gids; }