summaryrefslogtreecommitdiff
path: root/noncore/games/wordgame/wordgame.cpp
Side-by-side diff
Diffstat (limited to 'noncore/games/wordgame/wordgame.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/games/wordgame/wordgame.cpp71
1 files changed, 57 insertions, 14 deletions
diff --git a/noncore/games/wordgame/wordgame.cpp b/noncore/games/wordgame/wordgame.cpp
index ca4352d..16d37b3 100644
--- a/noncore/games/wordgame/wordgame.cpp
+++ b/noncore/games/wordgame/wordgame.cpp
@@ -60,4 +60,11 @@ enum RuleEffects {
};
+static int tile_smallw = 16;
+static int tile_smallh = 16;
+static int tile_bigw = 22;
+static int tile_bigh = 22;
+static int tile_stweak = -2;
+static int tile_btweak = -1;
+
static const int rack_tiles=7;
@@ -112,4 +119,13 @@ WordGame::WordGame( QWidget* parent, const char* name, WFlags fl ) :
QMainWindow(parent, name, fl)
{
+ if ( qApp->desktop()->width() < 240 ) {
+ tile_smallw = 10;
+ tile_smallh = 10;
+ tile_bigw = 16;
+ tile_bigh = 16;
+ tile_stweak = 0;
+ tile_btweak = 0;
+ }
+
setIcon( Resource::loadPixmap( "wordgame" ) );
setCaption( tr("Word Game") );
@@ -248,4 +264,5 @@ void WordGame::startGame(const QStringList& playerlist)
toolbar->show();
racks = new QWidgetStack(vbox);
+ racks->setFixedHeight(TileItem::bigHeight()+2);
namelist.clear();
nplayers=0;
@@ -284,5 +301,4 @@ bool WordGame::loadRules(const QString &name)
return FALSE;
- QPixmap bgshapes = Resource::loadPixmap(shapepixmap);
QString rule_shapes;
for (int i=0; i<vtiles; i++) {
@@ -298,4 +314,10 @@ bool WordGame::loadRules(const QString &name)
if ( re++ < 10 ) ts >> e;
}
+
+ QImage shim = Resource::loadImage(shapepixmap);
+ shim = shim.smoothScale((re-1)*TileItem::smallWidth(),TileItem::smallHeight());
+ QPixmap bgshapes;
+ bgshapes.convertFromImage(shim);
+
rule_effects[re++] = 100; // default bonus
board = new Board(bgshapes, htiles, vtiles, vbox);
@@ -682,20 +704,20 @@ qDebug("%d,%d: %s (%d) for %d",current.x(),current.y(),st.latin1(),n,s);
int TileItem::smallWidth()
{
- return 16;
+ return tile_smallw;
}
int TileItem::smallHeight()
{
- return 16;
+ return tile_smallh;
}
int TileItem::bigWidth()
{
- return 22;
+ return tile_bigw;
}
int TileItem::bigHeight()
{
- return 22;
+ return tile_bigh;
}
@@ -721,7 +743,17 @@ void TileItem::setBig(bool b)
void TileItem::drawShape(QPainter& p)
{
- static QFont value_font("heletica",8);
- static QFont big_font("smoothtimes",17);
- static QFont small_font("smoothtimes",10);
+ static QFont *value_font=0;
+ static QFont *big_font=0;
+ static QFont *small_font=0;
+ if ( !value_font ) {
+ value_font = new QFont("helvetica",8);
+ if ( TileItem::bigWidth() < 20 ) {
+ big_font = new QFont("helvetica",12);
+ small_font = new QFont("helvetica",8);
+ } else {
+ big_font = new QFont("smoothtimes",17);
+ small_font = new QFont("smoothtimes",10);
+ }
+ }
QRect area(x(),y(),width(),height());
@@ -729,16 +761,16 @@ void TileItem::drawShape(QPainter& p)
p.drawRect(area);
if ( big ) {
- p.setFont(value_font);
+ p.setFont(*value_font);
QString n = QString::number(t.value());
int w = p.fontMetrics().width('1');
int h = p.fontMetrics().height();
w *= n.length();
- QRect valuearea(x()+width()-w-2,y()+height()-h+1,w,h);
+ QRect valuearea(x()+width()-w-1,y()+height()-h,w,h);
p.drawText(valuearea,AlignCenter,n);
- p.setFont(big_font);
- area = QRect(x(),y(),width()-2,height()-1);
+ p.setFont(*big_font);
+ area = QRect(x(),y()+tile_btweak,width()-4,height()-1);
} else {
- p.setFont(small_font);
- area = QRect(x(),y()+2,width(),height()-2);
+ p.setFont(*small_font);
+ area = QRect(x()+1+tile_stweak,y()+1,width(),height()-3);
}
if ( t.value() == 0 )
@@ -751,4 +783,5 @@ Board::Board(QPixmap bgshapes, int w, int h, QWidget* parent) :
parent)
{
+ setFixedSize(w*TileItem::smallWidth(),h*TileItem::smallHeight());
grid = new TileItem*[w*h];
memset(grid,0,w*h*sizeof(TileItem*));
@@ -765,4 +798,9 @@ Board::~Board()
}
+QSize Board::sizeHint() const
+{
+ return QSize(canvas()->width(),canvas()->height());
+}
+
void Board::writeConfig(Config& cfg)
{
@@ -1182,4 +1220,9 @@ Rack::~Rack()
}
+QSize Rack::sizeHint() const
+{
+ return QSize(-1,TileItem::bigHeight()+2);
+}
+
void Rack::clear()
{