diff options
author | Michele Calgaro <michele.calgaro@yahoo.it> | 2020-09-05 01:09:44 +0900 |
---|---|---|
committer | Michele Calgaro <michele.calgaro@yahoo.it> | 2020-09-05 01:22:13 +0900 |
commit | 37aaa67152936f4fefff22d559c03e943a86ae69 (patch) | |
tree | ffffcd595eecef631bc1fc38922c63060aa175ea /kpacman/painter.cpp | |
parent | ac81a3c3e8d1a61fc2ff39da89c7c2ea290d5e34 (diff) | |
download | tdepacman-37aaa67152936f4fefff22d559c03e943a86ae69.tar.gz tdepacman-37aaa67152936f4fefff22d559c03e943a86ae69.zip |
Renamed kpacman -> tdepacman.
Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it>
Diffstat (limited to 'kpacman/painter.cpp')
-rw-r--r-- | kpacman/painter.cpp | 955 |
1 files changed, 0 insertions, 955 deletions
diff --git a/kpacman/painter.cpp b/kpacman/painter.cpp deleted file mode 100644 index 4c897c8..0000000 --- a/kpacman/painter.cpp +++ /dev/null @@ -1,955 +0,0 @@ -#include <kapp.h> -#include <kstddirs.h> - -#include <tdeconfig.h> -#include <tqcolor.h> -#include <tqpainter.h> -#include <tqpixmap.h> -#include <tqbitmap.h> -#include <tqrect.h> -#include <tqstring.h> -#include <tqmessagebox.h> -#include <tqfileinfo.h> - -#include "painter.h" -#include "board.h" - -Painter::Painter( Board *b, TQWidget *parent, int Scheme, int Mode, Bitfont *font) -{ - w = parent; - board = b; - - pointPix = NULL; - wallPix = NULL; - prisonPix = NULL; - energizerPix = NULL; - fruitPix = NULL; - pacmanPix = NULL; - dyingPix = NULL; - eyesPix = NULL; - monsterPix = NULL; - fruitScorePix = NULL; - monsterScorePix = NULL; - - lastPointPixmapName = ""; - lastWallPixmapName = ""; - lastPrisonPixmapName = ""; - lastEnergizerPixmapName = ""; - lastFruitPixmapName = ""; - lastPacmanPixmapName = ""; - lastDyingPixmapName = ""; - lastEyesPixmapName = ""; - lastMonsterPixmapName = ""; - lastFruitScorePixmapName = ""; - lastMonsterScorePixmapName = ""; - - bitfont = font; - - scheme = Scheme; - mode = Mode; - level = 0; - - confScheme(); -} - -TQPtrList<TQPixmap> *Painter::loadPixmap(TQWidget *parent, TQString pixmapName, - TQPtrList<TQPixmap> *pixmaps) -{ - if (pixmaps == NULL) { - pixmaps = new TQPtrList<TQPixmap>; - pixmaps->setAutoDelete(TRUE); - } - - if (!pixmaps->isEmpty()) - pixmaps->clear(); - - TQPixmap PIXMAP(pixmapName); - if (PIXMAP.isNull() || PIXMAP.mask() == NULL) { - TQString msg = i18n("The pixmap could not be contructed.\n\n" - "The file '@PIXMAPNAME@' does not exist,\n" - "or is of an unknown format."); - msg.replace(TQRegExp("@PIXMAPNAME@"), pixmapName); - // TQMessageBox::critical(parent, i18n("Initialization Error"), msg); - printf("%s\n", msg.local8Bit().data()); - return 0; - } - - int height = PIXMAP.height(); - int width = (height == 0) ? 0 : PIXMAP.width()/(PIXMAP.width()/height); - - TQBitmap BITMAP; - TQBitmap MASK; - - BITMAP = *PIXMAP.mask(); - MASK.resize(width, height); - - for (int x = 0; x < PIXMAP.width()/width; x++) { - TQPixmap *pixmap = new TQPixmap(width, height); - pixmaps->append(pixmap); - bitBlt(pixmap, 0, 0, &PIXMAP, x*width, 0, width, height, TQPixmap::CopyROP, TRUE); - bitBlt(&MASK, 0, 0, &BITMAP, x*width, 0, width, height, TQPixmap::CopyROP, TRUE); - pixmap->setMask(MASK); - } - - return pixmaps; -} - -TQPtrList<TQPixmap> *Painter::textPixmap(TQStrList &str, TQPtrList<TQPixmap> *pixmaps, - TQColor fg, TQColor bg) -{ - if (pixmaps == NULL) { - pixmaps = new TQPtrList<TQPixmap>; - pixmaps->setAutoDelete(TRUE); - } - - if (!pixmaps->isEmpty()) - pixmaps->clear(); - - for (uint s = 0; s < str.count(); s++) { - TQPixmap *pixmap = new TQPixmap(bitfont->text(str.at(s), fg, bg)); - pixmaps->append(pixmap); - } - - return pixmaps; -} - -TQPtrList<TQPixmap> *Painter::textPixmap(TQString str, TQPtrList<TQPixmap> *pixmaps, - TQColor fg, TQColor bg) -{ - if (pixmaps == NULL) { - pixmaps = new TQPtrList<TQPixmap>; - pixmaps->setAutoDelete(TRUE); - } - - if (!pixmaps->isEmpty()) - pixmaps->clear(); - - TQPixmap *pixmap = new TQPixmap(bitfont->text(str, fg, bg)); - pixmaps->append(pixmap); - - return pixmaps; -} - -/* Return the point of the upperleft pixel of the block representing that position - * on the board. - */ -TQPoint Painter::point(int pos) -{ - return TQPoint((board->x(pos)-1)*BlockWidth, (board->y(pos)-1)*BlockHeight); -} - - -TQRect Painter::rect(int pos, PixMap pix, uint i) -{ - if (pos == OUT) - return TQRect(); - - TQPixmap *PIXMAP = NULL; - switch (pix) { - case PacmanPix : PIXMAP = pacmanPix-> - at(checkRange(i, pacmanPix->count()-1)); - break; - case DyingPix : PIXMAP = dyingPix-> - at(checkRange(i, dyingPix->count()-1)); - break; - case MonsterPix : PIXMAP = monsterPix-> - at(checkRange(i, monsterPix->count()-1)); - break; - case EyesPix : PIXMAP = eyesPix-> - at(checkRange(i, eyesPix->count()-1)); - break; - case FruitPix : PIXMAP = fruitPix-> - at(checkRange(i, fruitPix->count()-1)); - break; - case PointPix : PIXMAP = pointPix-> - at(checkRange(i, pointPix->count()-1)); - break; - case EnergizerPix : PIXMAP = energizerPix-> - at(checkRange(i, energizerPix->count()-1)); - break; - case FruitScorePix : PIXMAP = fruitScorePix-> - at(checkRange(i, fruitScorePix->count()-1)); - break; - case MonsterScorePix : PIXMAP = monsterScorePix-> - at(checkRange(i,monsterScorePix->count()-1)); - break; - default : PIXMAP = wallPix-> - at(checkRange(i, wallPix->count()-1)); - } - if (PIXMAP == NULL) - return TQRect(); - - TQRect rect = PIXMAP->rect(); - TQPoint point = this->point(pos); - rect.moveCenter(TQPoint(point.x()-1, point.y()-1)); - - return rect; -} - -TQRect Painter::rect(int pos, TQString str, int align) -{ - if (pos == OUT) // return an empty rect if the position - return TQRect(); // is invalid - TQPoint point = this->point(pos); - TQRect rect = bitfont->rect(str); - - rect.moveCenter(TQPoint(point.x()-1, point.y()-1)); - - int dx = 0; - int dy = 0; - - if (align & TQLabel::AlignLeft || align & TQLabel::AlignRight) { - dx = (str.length()-1) * (bitfont->width()/2); - if (align & TQLabel::AlignRight) - dx *= -1; - } - - if (align & TQLabel::AlignTop || align & TQLabel::AlignBottom) { - dy = bitfont->height()/2; - if (align & TQLabel::AlignBottom) - dy *= -1; - } - - if (dx != 0 || dy != 0) - rect.moveBy(dx, dy); - - return rect; -} - -TQRect Painter::rect(TQRect r1, TQRect r2) -{ - TQRect rect; - rect.setLeft(r1.left() < r2.left() ? r1.left() : r2.left()); - rect.setTop(r1.top() < r2.top() ? r1.top() : r2.top()); - rect.setRight(r1.right() > r2.right() ? r1.right() : r2.right()); - rect.setBottom(r1.bottom() > r2.bottom() ? r1.bottom() : r2.bottom()); - - return rect; -} - -void Painter::erase(int pos, PixMap pix, uint i) -{ - if (pos == OUT) - return; - TQRect rect = this->rect(pos, pix, i); - bitBlt(&roomPix, rect.x(), rect.y(), &backPix, - rect.x(), rect.y(), rect.width(), rect.height()); -} - -int Painter::maxPixmaps(PixMap pix) -{ - switch (pix) { - case WallPix : return (int) wallPix->count(); - case PrisonPix : return (int) prisonPix->count(); - case PointPix : return (int) pointPix->count(); - case EnergizerPix : return (int) energizerPix->count(); - case FruitPix : return (int) fruitPix->count(); - case PacmanPix : return (int) pacmanPix->count(); - case DyingPix : return (int) dyingPix->count(); - case EyesPix : return (int) eyesPix->count(); - case MonsterPix : return (int) monsterPix->count(); - case FruitScorePix : return (int) fruitScorePix->count(); - case MonsterScorePix : return (int) monsterScorePix->count(); - default : return 0; - } -} - -void Painter::draw(TQPoint point, DrawWidget where, TQPixmap pix) -{ - switch (where) { - case Widget : bitBlt(w, point.x(), point.y(), &pix); - break; - case RoomPix : bitBlt(&roomPix, point.x(), point.y(), &pix); - break; - case BackPix : bitBlt(&backPix, point.x(), point.y(), &pix); - break; - } -} - -void Painter::draw(TQRect rect, DrawWidget where, TQPixmap pix) -{ - draw(TQPoint(rect.x(), rect.y()), where, pix); -} - -void Painter::draw(int pos, DrawWidget where, PixMap pix, uint i) -{ - TQPixmap *PIXMAP = NULL; - switch (pix) { - case PacmanPix : PIXMAP = pacmanPix-> - at(checkRange(i, pacmanPix->count()-1)); - break; - case DyingPix : PIXMAP = dyingPix-> - at(checkRange(i, dyingPix->count()-1)); - break; - case MonsterPix : PIXMAP = monsterPix-> - at(checkRange(i, monsterPix->count()-1)); - break; - case EyesPix : PIXMAP = eyesPix-> - at(checkRange(i, eyesPix->count()-1)); - break; - case FruitPix : PIXMAP = fruitPix-> - at(checkRange(i, fruitPix->count()-1)); - break; - case EnergizerPix : PIXMAP = energizerPix-> - at(checkRange(i, energizerPix->count()-1)); - break; - case FruitScorePix : PIXMAP = fruitScorePix-> - at(checkRange(i, fruitScorePix->count()-1)); - break; - case MonsterScorePix : PIXMAP = monsterScorePix-> - at(checkRange(i,monsterScorePix->count()-1)); - break; - default : ; - } - - if (PIXMAP == NULL) - return; - - TQRect rect = PIXMAP->rect(); - TQPoint point = this->point(pos); - rect.moveCenter(TQPoint(point.x()-1, point.y()-1)); - - switch (where) { - case Widget : bitBlt(w, rect.x(), rect.y(), PIXMAP); - break; - case RoomPix : bitBlt(&roomPix, rect.x(), rect.y(), PIXMAP); - break; - case BackPix : bitBlt(&backPix, rect.x(), rect.y(), PIXMAP); - break; - } -} - -TQPixmap Painter::draw(int pos, DrawWidget where, - TQString str, TQColor fg, TQColor bg, int align) -{ - TQPixmap TEXT = bitfont->text(str, fg, bg); - - TQRect rect = this->rect(pos, str, align); - TQPixmap SAVE = TQPixmap(rect.width(), rect.height()); - - switch (where) { - case Widget : bitBlt(&SAVE, 0, 0, w, rect.x(), rect.y()); - bitBlt(w, rect.x(), rect.y(), &TEXT); - break; - case RoomPix : bitBlt(&SAVE, 0, 0, &roomPix, rect.x(), rect.y()); - bitBlt(&roomPix, rect.x(), rect.y(), &TEXT); - break; - case BackPix : bitBlt(&SAVE, 0, 0, &backPix, rect.x(), rect.y()); - bitBlt(&backPix, rect.x(), rect.y(), &TEXT); - break; - } - - return SAVE; -} - -TQRect Painter::draw(int col, int row, DrawWidget where, - TQString str, TQColor fg, TQColor bg, int align) -{ - TQPixmap TEXT = bitfont->text(str, fg, bg); - - TQRect rect = this->rect(row*BoardWidth+col, str, align); - draw(rect, where, TEXT); - - return rect; -} - -void Painter::initPixmaps() -{ - if (lastPointPixmapName != pointPixmapName.at(level)) { - pointPix = loadPixmap(w, pointPixmapName.at(level), pointPix); - lastPointPixmapName = pointPixmapName.at(level); - } - if (lastPrisonPixmapName != prisonPixmapName.at(level)) { - prisonPix = loadPixmap(w, prisonPixmapName.at(level), prisonPix); - lastPrisonPixmapName = prisonPixmapName.at(level); - } - if (lastEnergizerPixmapName != energizerPixmapName.at(level)) { - energizerPix = loadPixmap(w, energizerPixmapName.at(level), energizerPix); - lastEnergizerPixmapName = energizerPixmapName.at(level); - } - if (lastFruitPixmapName != fruitPixmapName.at(level)) { - fruitPix = loadPixmap(w, fruitPixmapName.at(level), fruitPix); - lastFruitPixmapName = fruitPixmapName.at(level); - } - if (lastPacmanPixmapName != pacmanPixmapName.at(level)) { - pacmanPix = loadPixmap(w, pacmanPixmapName.at(level), pacmanPix); - lastPacmanPixmapName = pacmanPixmapName.at(level); - } - if (lastDyingPixmapName != dyingPixmapName.at(level)) { - dyingPix = loadPixmap(w, dyingPixmapName.at(level), dyingPix); - lastDyingPixmapName = dyingPixmapName.at(level); - } - if (lastEyesPixmapName != eyesPixmapName.at(level)) { - eyesPix = loadPixmap(w, eyesPixmapName.at(level), eyesPix); - lastEyesPixmapName = eyesPixmapName.at(level); - } - if (lastMonsterPixmapName != monsterPixmapName.at(level)) { - monsterPix = loadPixmap(w, monsterPixmapName.at(level), monsterPix); - lastMonsterPixmapName = monsterPixmapName.at(level); - } - - if (lastFruitScorePixmapName != fruitScorePixmapName.at(level) || - *fruitScorePixmapName.at(level) == '\0') { - if (*fruitScorePixmapName.at(level) == '\0') { - fruitScorePix = textPixmap(fruitScoreString, fruitScorePix, PINK); - } else { - fruitScorePix = loadPixmap(w, fruitScorePixmapName.at(level), - fruitScorePix); - lastFruitScorePixmapName = fruitScorePixmapName.at(level); - } - } - - if (lastMonsterScorePixmapName != monsterScorePixmapName.at(level) || - *monsterScorePixmapName.at(level) == '\0') { - if (*monsterScorePixmapName.at(level) == '\0') { - monsterScorePix = textPixmap(monsterScoreString, monsterScorePix, CYAN); - } else { - monsterScorePix = loadPixmap(w, monsterScorePixmapName.at(level), - monsterScorePix); - lastMonsterScorePixmapName = monsterScorePixmapName.at(level); - } - } - - if (lastWallPixmapName != wallPixmapName.at(level)) { - wallPix = loadPixmap(w, wallPixmapName.at(level), wallPix); - if (wallPix->isEmpty()) { - BlockWidth = 0; - BlockHeight = 0; - } else { - BlockWidth = wallPix->at(0)->width(); - BlockHeight = wallPix->at(0)->height(); - } - lastWallPixmapName = wallPixmapName.at(level); - } -} - -void Painter::initbackPixmaps() -{ - backgroundColor = BLACK; - - backPix.resize((BoardWidth-3)*BlockWidth, (BoardHeight-3)*BlockHeight ); - backPix.fill(backgroundColor); -} - -void Painter::initRoomPixmap() -{ - roomPix.resize((BoardWidth-3)*BlockWidth, (BoardHeight-3)*BlockHeight ); - bitBlt(&roomPix,0,0, &backPix); - - for (unsigned int x = 0; x < board->size(); x++) { - if (board->isBrick(x)) - drawBrick(x); - if (board->isPrison(x) || board->isGate(x)) - drawPrison(x); - if (board->isPoint(x)) - drawPoint(x); - } -} - -void Painter::drawBrick(int pos) -{ - int border = 0; - if (board->isBrick(board->move(pos, N ))) border |= (1 << 0); - if (board->isBrick(board->move(pos, NE))) border |= (1 << 1); - if (board->isBrick(board->move(pos, E ))) border |= (1 << 2); - if (board->isBrick(board->move(pos, SE))) border |= (1 << 3); - if (board->isBrick(board->move(pos, S ))) border |= (1 << 4); - if (board->isBrick(board->move(pos, SW))) border |= (1 << 5); - if (board->isBrick(board->move(pos, W ))) border |= (1 << 6); - if (board->isBrick(board->move(pos, NW))) border |= (1 << 7); - - if (board->isOut(board->move(pos, N ))) border |= (1 << 8); - if (board->isOut(board->move(pos, NE))) border |= (1 << 9); - if (board->isOut(board->move(pos, E ))) border |= (1 << 10); - if (board->isOut(board->move(pos, SE))) border |= (1 << 11); - if (board->isOut(board->move(pos, S ))) border |= (1 << 12); - if (board->isOut(board->move(pos, SW))) border |= (1 << 13); - if (board->isOut(board->move(pos, W ))) border |= (1 << 14); - if (board->isOut(board->move(pos, NW))) border |= (1 << 15); - - switch (border & 0xFF) { - case 31 : border = 0; break; - case 159 : border = 0; break; - case 63 : border = 0; break; - case 191 : border = 0; break; - case 241 : border = 1; break; - case 249 : border = 1; break; - case 243 : border = 1; break; - case 251 : border = 1; break; - case 124 : border = 2; break; - case 252 : border = 2; break; - case 126 : border = 2; break; - case 199 : border = 3; break; - case 231 : border = 3; break; - case 207 : border = 3; break; - case 28 : if ((border >> 8) > 0) - border = 24; - else - border = 4; - break; - case 112 : if ((border >> 8) > 0) - border = 27; - else - border = 5; - break; - case 7 : if ((border >> 8) > 0) - border = 25; - else - border = 6; - break; - case 193 : if ((border >> 8) > 0) - border = 26; - else - border = 7; - break; - case 247 : if ((border & (1 << 11)) > 0) - border = 23; - else - border = 8; - break; - case 119 : if ((border & (1 << 15)) > 0) - border = 8; - if ((border & (1 << 11)) > 0) - border = 11; - break; - case 223 : if ((border & (1 << 13)) > 0) - border = 20; - else - border = 9; - break; - case 221 : if ((border & (1 << 13)) > 0) - border = 10; - if ((border & (1 << 9)) > 0) - border = 9; - break; - case 253 : if ((border & (1 << 9)) > 0) - border = 21; - else - border = 10; - break; - case 127 : if ((border & (1 << 15)) > 0) - border = 22; - else - border = 11; - break; - case 30 : border = 12; break; - case 240 : border = 13; break; - case 15 : border = 14; break; - case 225 : border = 15; break; - case 135 : border = 16; break; - case 195 : border = 17; break; - case 60 : border = 18; break; - case 120 : border = 19; break; - case 255 : border = 28; break; - default : border = -1; - } - if (border != -1 && border < (int) wallPix->count()) { - TQRect rect = this->rect(pos, WallPix); - bitBlt(&roomPix, rect.x(), rect.y(), wallPix->at((uint) border)); - } -} - -void Painter::drawPrison(int pos) -{ - int border = 0; - if (board->isPrison(board->move(pos, N ))) border |= (1 << 0); - if (board->isPrison(board->move(pos, NE))) border |= (1 << 1); - if (board->isPrison(board->move(pos, E ))) border |= (1 << 2); - if (board->isPrison(board->move(pos, SE))) border |= (1 << 3); - if (board->isPrison(board->move(pos, S ))) border |= (1 << 4); - if (board->isPrison(board->move(pos, SW))) border |= (1 << 5); - if (board->isPrison(board->move(pos, W ))) border |= (1 << 6); - if (board->isPrison(board->move(pos, NW))) border |= (1 << 7); - - if (board->isGate(board->move(pos, N ))) border |= (1 << 8); - if (board->isGate(board->move(pos, NE))) border |= (1 << 9); - if (board->isGate(board->move(pos, E ))) border |= (1 << 10); - if (board->isGate(board->move(pos, SE))) border |= (1 << 11); - if (board->isGate(board->move(pos, S ))) border |= (1 << 12); - if (board->isGate(board->move(pos, SW))) border |= (1 << 13); - if (board->isGate(board->move(pos, W ))) border |= (1 << 14); - if (board->isGate(board->move(pos, NW))) border |= (1 << 15); - - switch (border & 0xFF) { - case 31 : border = 0; break; - case 159 : border = 0; break; - case 63 : border = 0; break; - case 241 : border = 1; break; - case 249 : border = 1; break; - case 243 : border = 1; break; - case 124 : border = 2; break; - case 252 : border = 2; break; - case 126 : border = 2; break; - case 199 : border = 3; break; - case 231 : border = 3; break; - case 207 : border = 3; break; - case 28 : if ((border >> 8) != 0) - border = 12; - else - border = 4; - break; - case 112 : if ((border >> 8) != 0) - border = 13; - else - border = 5; - break; - case 7 : if ((border >> 8) != 0) - border = 14; - else - border = 6; - break; - case 193 : if ((border >> 8) != 0) - border = 15; - else - border = 7; - break; - case 247 : border = 8; break; - case 223 : border = 9; break; - case 253 : border = 10; break; - case 127 : border = 11; break; - default : border = -1; - } - if (board->isGate(pos)) { - if (board->isGate(board->move(pos, N))) - border = 17; - else - border = 16; - } - - if (border != -1 && border < (int) prisonPix->count()) { - TQRect rect = this->rect(pos, PrisonPix); - bitBlt(&roomPix, rect.x(), rect.y(), prisonPix->at((uint) border)); - } -} - -void Painter::drawPoint(int pos) -{ - if (!pointPix->isEmpty()) { - TQRect rect = this->rect(pos, PointPix); - bitBlt(&roomPix, rect.x(), rect.y(), pointPix->at(0)); - } -} - -TQString Painter::decodeHexOctString(TQString s) -{ - TQString value; - TQString valids; - int pos, xpos = 0, opos = 0; - int v, len, leadin; - const char *ptr; - uchar c; - - while (((xpos = s.find(TQRegExp("\\\\x[0-9a-fA-F]+"), xpos)) != -1) || - ((opos = s.find(TQRegExp("\\\\[0-7]+"), opos)) != -1)) { - if (xpos != -1) { - valids = "0123456789abcdef"; - leadin = 2; - pos = xpos; - } else { - valids = "01234567"; - leadin = 1; - pos = opos; - } - - c = '\0'; - len = 0; - value = s.mid(pos+leadin, 3); - ptr = value.latin1(); - - while (*ptr != '\0' && (v = valids.find(*ptr++, 0, FALSE)) != -1) { - c = (c * valids.length()) + v; - len++; - } - - value.fill(c, 1); - s.replace(pos, len+leadin, value); - } - - return s; -} - -void Painter::fillScoreString(TQStrList &list, TQMemArray<int> &values) -{ - if( !list.isEmpty()) - list.clear(); - - TQString s; - - for (uint i = 0; i < values.size(); i++) { - - if (values[i] < 10 || values[i] > 10000) - s = "?"; - else if (values[i] == 1600) - s = "\x1a\x1b"; - else if (values[i] < 100) { - s = "\x0e"; - s.insert(0, char (values[i] / 10 + 0x10)); - } else if (values[i] < 1000) { - s = "\x0f"; - s.insert(0, char (values[i] / 100 + 0x10)); - } else { - s = "\x0f\x10"; - s.insert(0, char (values[i] / 1000 + 0x10)); - } - - list.append(s.latin1()); - } -} - -void Painter::fillArray(TQMemArray<int> &array, TQString values, int max) -{ - array.resize(max); - int last = 0; - bool ok; - TQString value; - - for (uint i = 0; i < array.size(); i++) { - if (values.find(',') < 0 && values.length() > 0) { - value = values; - values = ""; - } - if (values.find(',') >= 0) { - value = values.left(values.find(',')); - values.remove(0,values.find(',')+1); - } - array[i] = value.toInt(&ok); - if (ok) - last = array[i]; - else - array[i] = last; - } -} - -void Painter::fillStrList(TQStrList &list, TQString values, int max) -{ - if (!list.isEmpty()) - list.clear(); - - TQString last = ""; - TQString value; - - for (uint i = 0; i < (uint) max; i++) { - if (values.find(',') < 0 && values.length() > 0) { - value = values; - values = ""; - } - if (values.find(',') >= 0) { - value = values.left(values.find(',')); - values.remove(0,values.find(',')+1); - } - if (!value.isEmpty()) - last = decodeHexOctString(value); - list.append(last.latin1()); - } -} - -void Painter::fillPixmapName(TQStrList &pixmapName) -{ - TQStrList list = pixmapName; - - if (!pixmapName.isEmpty()) - pixmapName.clear(); - - TQString pixmap; - - TQFileInfo fileInfo; - - for (uint i = 0; i < list.count(); i++) { - pixmap = list.at(i); - - if (pixmap.left(1) != "/" && pixmap.left(1) != "~") - pixmap = TDEGlobal::dirs()->findResource("appdata", pixmapDirectory+pixmap); - - fileInfo.setFile(pixmap); - if (!fileInfo.isReadable() || !fileInfo.isFile()) - pixmap = ""; - - pixmapName.append(pixmap.utf8()); - } -} - -void Painter::confLevels(bool defGroup) -{ - if (defGroup || kapp->config()->hasKey("Levels")) - maxLevel = kapp->config()->readNumEntry("Levels", 13); -} - -void Painter::confMisc(bool defGroup) -{ - if (defGroup || kapp->config()->hasKey("PixmapDirectory")) { - pixmapDirectory = kapp->config()->readEntry("PixmapDirectory"); - - if (pixmapDirectory.left(1) != "/" && pixmapDirectory.left(1) != "~") - pixmapDirectory.insert(0, "pics/"); - if (pixmapDirectory.right(1) != "/") - pixmapDirectory.append("/"); - } - - if (defGroup || kapp->config()->hasKey("PointPixmapName")) - fillStrList(pointPixmapName, - kapp->config()->readEntry("PointPixmapName", "point.xpm"), maxLevel+1); - if (defGroup || kapp->config()->hasKey("WallPixmapName")) - fillStrList(wallPixmapName, - kapp->config()->readEntry("WallPixmapName", "wall.xpm"), maxLevel+1); - if (defGroup || kapp->config()->hasKey("PrisonPixmapName")) - fillStrList(prisonPixmapName, - kapp->config()->readEntry("PrisonPixmapName", "prison.xpm"), maxLevel+1); - if (defGroup || kapp->config()->hasKey("EnergizerPixmapName")) - fillStrList(energizerPixmapName, - kapp->config()->readEntry("EnergizerPixmapName", "switch.xpm"),maxLevel+1); - if (defGroup || kapp->config()->hasKey("FruitPixmapName")) - fillStrList(fruitPixmapName, - kapp->config()->readEntry("FruitPixmapName", "fruit.xpm"), maxLevel+1); - if (defGroup || kapp->config()->hasKey("PacmanPixmapName")) - fillStrList(pacmanPixmapName, - kapp->config()->readEntry("PacmanPixmapName", "pacman.xpm"), maxLevel+1); - if (defGroup || kapp->config()->hasKey("DyingPixmapName")) - fillStrList(dyingPixmapName, - kapp->config()->readEntry("DyingPixmapName", "dying.xpm"), maxLevel+1); - if (defGroup || kapp->config()->hasKey("EyesPixmapName")) - fillStrList(eyesPixmapName, - kapp->config()->readEntry("EyesPixmapName", "eyes.xpm"), maxLevel+1); - if (defGroup || kapp->config()->hasKey("MonsterPixmapName")) - fillStrList(monsterPixmapName, - kapp->config()->readEntry("MonsterPixmapName", "monster.xpm"), maxLevel+1); - - if (defGroup || kapp->config()->hasKey("FruitScorePixmapName")) - fillStrList(fruitScorePixmapName, - kapp->config()->readEntry("FruitScorePixmapName"), maxLevel+1); - if (defGroup || kapp->config()->hasKey("MonsterScorePixmapName")) - fillStrList(monsterScorePixmapName, - kapp->config()->readEntry("MonsterScorePixmapName"), maxLevel+1); -} - -void Painter::confScoring(bool defGroup) -{ - if (defGroup || kapp->config()->hasKey("FruitScore")) - fillArray(fruitScore, - kapp->config()->readEntry("FruitScore", - "100,300,500,,700,,1000,,2000,,3000,,5000"), - maxLevel+1); - if (defGroup || kapp->config()->hasKey("MonsterScore")) - fillArray(monsterScore, - kapp->config()->readEntry("MonsterScore", "200,400,800,1600"), 4); - - if (defGroup || kapp->config()->hasKey("FruitScoreString")) - fillStrList(fruitScoreString, - kapp->config()->readEntry("FruitScoreString"), maxLevel+1); - if (defGroup || kapp->config()->hasKey("MonsterScoreString")) - fillStrList(monsterScoreString, - kapp->config()->readEntry("MonsterScoreString"), 4); -} - -void Painter::confScheme() -{ - TQString oldgroup = kapp->config()->group(); - TQString newgroup; - - // if not set, read mode and scheme from the configfile - if (mode == -1 && scheme == -1) { - scheme = kapp->config()->readNumEntry("Scheme", -1); - mode = kapp->config()->readNumEntry("Mode", -1); - - // if mode is not set in the defGroup-group, lookup the scheme group - if (scheme != -1 || mode == -1) { - newgroup.sprintf("Scheme %d", scheme); - kapp->config()->setGroup(newgroup); - - mode = kapp->config()->readNumEntry("Mode", -1); - kapp->config()->setGroup(oldgroup); - } - } - - confLevels(); - - if (mode != -1) { - newgroup.sprintf("Mode %d", mode); - kapp->config()->setGroup(newgroup); - - confLevels(FALSE); - } - - if (scheme != -1) { - newgroup.sprintf("Scheme %d", scheme); - kapp->config()->setGroup(newgroup); - - confLevels(FALSE); - } - - kapp->config()->setGroup(oldgroup); - - confMisc(); - confScoring(); - - if (mode != -1) { - newgroup.sprintf("Mode %d", mode); - kapp->config()->setGroup(newgroup); - - confMisc(FALSE); - confScoring(FALSE); - } - - if (scheme != -1) { - newgroup.sprintf("Scheme %d", scheme); - kapp->config()->setGroup(newgroup); - - confMisc(FALSE); - confScoring(FALSE); - } - - if (*fruitScoreString.at(0) == '\0') - fillScoreString(fruitScoreString, fruitScore); - if (*monsterScoreString.at(0) == '\0') - fillScoreString(monsterScoreString, monsterScore); - - fillPixmapName(pointPixmapName); - fillPixmapName(wallPixmapName); - fillPixmapName(prisonPixmapName); - fillPixmapName(energizerPixmapName); - fillPixmapName(fruitPixmapName); - fillPixmapName(pacmanPixmapName); - fillPixmapName(dyingPixmapName); - fillPixmapName(eyesPixmapName); - fillPixmapName(monsterPixmapName); - fillPixmapName(fruitScorePixmapName); - fillPixmapName(monsterScorePixmapName); - - initPixmaps(); - initbackPixmaps(); - initRoomPixmap(); - - kapp->config()->setGroup(oldgroup); -} - -void Painter::setScheme(int Scheme, int Mode, Bitfont *font) -{ - bitfont = font; - - mode = Mode; - scheme = Scheme; - - confScheme(); -} - -void Painter::setLevel(int Level) -{ - level = Level; - - initPixmaps(); - initbackPixmaps(); - initRoomPixmap(); -} - -int Painter::checkRange(int value, int max, int min) -{ - if (value < min) { - printf("Painter::checkRange (value = %d, max = %d, min = %d)\n", - value, max, min); - return min; - } else if (value > max) { - printf("Painter::checkRange (value = %d, max = %d, min = %d)\n", - value, max, min); - return max; - } else - return value; -} |