Source Code (Use browser search to find items of interest.)

Class Index

ksnake'Level (./kdegames/ksnake/level.h:12)

class Level {
public:
    Level  (Board *);
    void    up();
    void    set(int l) { lev = l; }
    int     get() { return lev; }
    void    create(Img);

private:
    Board  *board;
    QImage  makeImage(char *);
    void    makeImageFromData(const uchar *buf);
    void    doNumber(int beginAt, const uchar *buf);
    void    initBoard(QImage );
    void    createRoom();
    void    createBanner();

    int     lev;
};

ksnake'Level::Level() (./kdegames/ksnake/level.cpp:17)

Level::Level(Board *b)
{
    board = b;
    create(Intro);
}


ksnake'Level::up() (./kdegames/ksnake/level.cpp:23)

void Level::up()
{
    if (lev < leV->max())
	lev++;
}


ksnake'Level::create() (./kdegames/ksnake/level.cpp:29)

void Level::create(Img img)
{
    switch(img){
    case Banner:
	createBanner();
	break;
    case Room:
	createRoom();
	break;
    case Intro:
	makeImageFromData(intro_bits);
	break;
    case GameOver:
	makeImageFromData(gameover_bits);
	break;
    }
}


ksnake'Level::createRoom() (./kdegames/ksnake/level.cpp:47)

void Level::createRoom()
{
    QImage image = leV->getImage(lev);
    initBoard(image);
}


ksnake'Level::makeImageFromData() (./kdegames/ksnake/level.cpp:53)

void Level::makeImageFromData(const uchar *buf)
{
    QBitmap bitmap(35, 35, buf, TRUE);
    QImage image = bitmap.convertToImage();
    initBoard (image);
}


ksnake'Level::initBoard() (./kdegames/ksnake/level.cpp:60)

void Level::initBoard(QImage image)
{
    int index = 0;
    uchar *b;

    for ( int y = 0;y < image.height();y++ ) {
	b = image.scanLine(y);
	for ( int x = 0;x < image.width();x++ ) {

	    if ( image.bitOrder() == QImage::BigEndian ) {
		if (((*b >> (7 - (x & 7))) & 1) == 1)
		    board->set(index, brick);
		else board->set(index, empty);
	    } else {
		if (((*b >> (x & 7)) & 1) == 1)
		    board->set(index, brick);
		else board->set(index, empty);
	    }

	    if ( (x & 7) == 7 )
		b++;
	    index++;
	}
    }
}


ksnake'Level::createBanner() (./kdegames/ksnake/level.cpp:86)

void Level::createBanner()
{
    makeImageFromData(level_bits);

    QString num;
    num.setNum(lev);
    if(lev < 10) num.insert(0,'0');

    QString left = num.left(1);
    QString right = num.right(1);

    doNumber ( 606, numbers[left.toInt()] );
    doNumber ( 614, numbers[right.toInt()] );
}


ksnake'Level::doNumber() (./kdegames/ksnake/level.cpp:101)

void Level::doNumber(int beginAt, const uchar *buf)
{
    QBitmap bitmap(7, 9, buf, TRUE);
    QImage image = bitmap.convertToImage();

    int index = beginAt;
    uchar *b;

    for ( int y = 0;y < image.height();y++ ) {
	b = image.scanLine(y);
	for ( int x = 0;x < image.width();x++ ) {

	    if ( image.bitOrder() == QImage::BigEndian ) {
		if (((*b >> (7 - (x & 7))) & 1) == 1)
		    board->set(index, brick);
	    } else {
		if (((*b >> (x & 7)) & 1) == 1)
		    board->set(index, brick);
	    }

	    if ( (x & 7) == 7 )
		b++;
	    index++;
	}

	index += 28;
    }
}