You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdegames/klines/ballpainter.cpp

141 lines
4.1 KiB

/***************************************************************************
begin : Fri May 19 2000
copyright : (C) 2000 by Roman Merzlyakov
email : roman@sbrf.barrt.ru
copyright : (C) 2000 by Roman Razilov
email : Roman.Razilov@gmx.de
***************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#include <kapplication.h>
#include <kmessagebox.h>
//#include "shotcounter.h"
#include <tqpainter.h>
#include "linesboard.h"
//#include <tqcolor.h>
#include <tqjpegio.h>
#include <kstandarddirs.h>
#include <klocale.h>
#include <stdlib.h>
#include "prefs.h"
#define PIXSIZE (CELLSIZE - 2)
int colorLinesArr[NCOLORS] =
{0x0000ff, 0x00ff00, 0xff0000, 0x00ffff, 0xff00ff, 0xffff00, 0x005080};
// 0x00bbggrr
// red , green , blue , yellow , violet , cyan , brown
BallPainter::BallPainter()
: TQObject(), backgroundPix(0)
{
createPix();
}
BallPainter::~BallPainter()
{
deletePix();
}
void BallPainter::deletePix()
{
delete backgroundPix;
for(int c=0; c<NCOLORS; c++)
for(int t=0; t<PIXTIME + FIREBALLS + BOOMBALLS + 1 ; t++)
delete imgCash[c][t];
for(int t=0; t < FIREPIX ; t++)
delete firePix[t];
}
void BallPainter::createPix()
{
backgroundPix = new TQPixmap(
locate( "appdata", "field.jpg" ));
TQPixmap *balls = new TQPixmap(
locate( "appdata", "balls.jpg" ));
TQPixmap *fire = new TQPixmap(
locate( "appdata", "fire.jpg" ));
if (balls->isNull() ||backgroundPix->isNull() || fire->isNull() ) {
KMessageBox::error(0, i18n("Unable to find graphics. Check your installation."), i18n("Error"));
tqApp->exit(1);
return; // Error
}
for(int c=0; c<NCOLORS; c++)
{
for(int t=0; t<PIXTIME + FIREBALLS + BOOMBALLS + 1 ; t++)
{
imgCash[c][t] = new TQPixmap(CELLSIZE, CELLSIZE);
TQPainter p(imgCash[c][t]);
p.drawPixmap(0,0,(*backgroundPix),0,0,CELLSIZE,CELLSIZE);
p.drawPixmap(1,1,(*balls),t*PIXSIZE,c*PIXSIZE,PIXSIZE,PIXSIZE);
if (Prefs::numberedBalls() && (t == NORMALBALL))
{
if ((c == 2) || (c == 3) || (c == 6))
p.setPen(TQt::black);
else
p.setPen(TQt::white);
TQString tmp;
tmp.setNum(c+1);
p.drawText(TQRect(0,0,CELLSIZE,CELLSIZE), TQt::AlignCenter, tmp);
}
}
}
for(int t=0; t < FIREPIX ; t++)
{
firePix[t] = new TQPixmap(CELLSIZE, CELLSIZE);
TQPainter p(firePix[t]);
p.drawPixmap(0,0,(*backgroundPix),0,0,CELLSIZE,CELLSIZE);
p.drawPixmap(1,1,(*fire),t*PIXSIZE,0,PIXSIZE,PIXSIZE);
}
delete balls;
delete fire;
}
TQPixmap BallPainter::GetBall(int color, int animstep, int panim)
{
// return backgroundPix;
if( (color<0) || (color>=NCOLORS) || (animstep<0) || color == NOBALL ){
return *backgroundPix;
}
if ( panim == ANIM_JUMP )
{
if ( ( animstep < 0 ) || ( animstep >= PIXTIME ) )
return *backgroundPix;
else
return *imgCash[color][animstep];
}
else if ( panim == ANIM_BURN )
{
if ( animstep < FIREBALLS )
return *imgCash[color][animstep + PIXTIME + BOOMBALLS + 1];
else if ( animstep < FIREBALLS + FIREPIX )
return *firePix[animstep - FIREBALLS];
}
else if ( panim == ANIM_BORN )
{
if ( animstep < BOOMBALLS )
return *imgCash[color][animstep + PIXTIME];
else
return *imgCash[color][NORMALBALL];
}
// rest is not imlemented yet
return *imgCash[color][NORMALBALL];
}
#include "ballpainter.moc"