void MapTileLayer::draw() { if (map) { CHECK_GL_ERROR_DEBUG(); CCDirector* direct = CCDirector::sharedDirector(); int i = 0; CCSize mapTotalSize; mapTotalSize.width = map->nodeData->matrix->col * map->nodeSize->width; mapTotalSize.height = map->nodeData->matrix->row * map->nodeSize->height; for (i = 0; i <= map->nodeData->matrix->col; i ++) { MSPoint3D startP(i * map->nodeSize->width, 0, 0); MSPoint3D endP(i * map->nodeSize->width, 0, mapTotalSize.height); CCPoint sp = MapUtils::convertScreen(startP); CCPoint ep = MapUtils::convertScreen(endP); sp.y = CoordinateUtils::calculateCoordinateSystem(sp.y, direct->getWinSize()); ep.y = CoordinateUtils::calculateCoordinateSystem(ep.y, direct->getWinSize()); ccDrawLine(sp, ep); } for (i = 0; i <= map->nodeData->matrix->row; i ++) { MSPoint3D startQ(0, 0, i * map->nodeSize->height); MSPoint3D endQ(mapTotalSize.width, 0, i * map->nodeSize->height); CCPoint sq = MapUtils::convertScreen(startQ); CCPoint eq = MapUtils::convertScreen(endQ); sq.y = CoordinateUtils::calculateCoordinateSystem(sq.y, direct->getWinSize()); eq.y = CoordinateUtils::calculateCoordinateSystem(eq.y, direct->getWinSize()); ccDrawLine(sq, eq); } CHECK_GL_ERROR_DEBUG(); } else { CCLayer::draw(); } }
Photon LaserSource::getPhoton() { float angle = getRotation(); if(angle > 0) { angle = 360 - angle; } int direction = (int)(angle/45)+1; Photon startP(direction, color); float deltaX = 0; float deltaY = 0; if(direction == 1 || direction == 5) { deltaX = (float)(BLOCK_SIZE*(3-direction)/4); } else if(direction == 3 || direction == 7) { deltaY = (float)(BLOCK_SIZE*(direction-5)/4); } sf::Vector2f delta(deltaX, deltaY); startP.setPosition(LaserSource::getPosition() + delta); return startP; }