void Pathfinder::update( const Tilemap& tilemap ) { _d->tilemap = const_cast< Tilemap* >( &tilemap ); _d->grid.resize( tilemap.getSize() ); for( int k=0; k < tilemap.getSize(); k++) { _d->grid[ k ].resize( tilemap.getSize()); } TilemapTiles tiles = _d->tilemap->getArea( TilePos( 0, 0 ), Size( tilemap.getSize() ) ); foreach( Tile* tile, tiles ) { _d->grid[ tile->getI() ][ tile->getJ() ] = new AStarPoint( tile ); }
void GameLoader::Impl::initEntryExitTile( const TilePos& tlPos, Tilemap& tileMap, const unsigned int picIdStart, bool exit ) { unsigned int idOffset = 0; TilePos tlOffset; if( tlPos.getI() == 0 || tlPos.getI() == tileMap.getSize() - 1 ) { tlOffset = TilePos( 0, 1 ); idOffset = (tlPos.getI() == 0 ? 1 : 3 ); } else if( tlPos.getJ() == 0 || tlPos.getJ() == tileMap.getSize() - 1 ) { tlOffset = TilePos( 1, 0 ); idOffset = (tlPos.getJ() == 0 ? 2 : 0 ); } Tile& signTile = tileMap.at( tlPos + tlOffset ); StringHelper::debug( 0xff, "(%d, %d)", tlPos.getI(), tlPos.getJ() ); StringHelper::debug( 0xff, "(%d, %d)", tlOffset.getI(), tlOffset.getJ() ); signTile.setPicture( ResourceGroup::land3a, picIdStart + idOffset ); signTile.setFlag( Tile::tlRock, true ); }
void GameLoader::Impl::initWaterTileAnimation( Tilemap& tmap ) { TilemapArea area = tmap.getArea( TilePos( 0, 0 ), Size( tmap.getSize() ) ); Animation water; water.setFrameDelay( 12 ); water.load( ResourceGroup::land1a, 121, 7 ); water.load( ResourceGroup::land1a, 127, 7, true ); foreach( Tile* tile, area ) { int rId = tile->getOriginalImgId() - 364; if( rId >= 0 && rId < 8 ) { water.setCurrentIndex( rId ); tile->setAnimation( water ); } }
RoadPropagator::RoadPropagator( const Tilemap& tileMap, const Tile& startTile ) : _d( new Impl( tileMap, startTile ) ) { _d->mapSize = tileMap.getSize(); }