QTfrontend/itemNum.cpp
author koda
Sat, 06 Aug 2011 07:09:30 +0200
changeset 5505 a55aab592950
parent 4976 088d40d8aba2
permissions -rw-r--r--
Ditch the renderer system in sdl1.3 and use the 'old fashioned' sdl/opengl context. This gives us more flexibility and less problem in receiving video events (expecially on mobile platform) as well as not having to care to reset the gl context every time sdl interferes. This is a major sdl1.3 update so it should be tested with care (working great on ios)
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
612
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents:
diff changeset
     1
/*
1066
1f1b3686a2b0 Update copyright headers a bit
unc0rr
parents: 883
diff changeset
     2
 * Hedgewars, a free turn based strategy game
4976
088d40d8aba2 Happy 2011 :)
koda
parents: 4560
diff changeset
     3
 * Copyright (c) 2006-2011 Igor Ulyanov <iulyanov@gmail.com>
612
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents:
diff changeset
     4
 *
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents:
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents:
diff changeset
     6
 * it under the terms of the GNU General Public License as published by
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents:
diff changeset
     7
 * the Free Software Foundation; version 2 of the License
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents:
diff changeset
     8
 *
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents:
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents:
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents:
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents:
diff changeset
    12
 * GNU General Public License for more details.
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents:
diff changeset
    13
 *
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents:
diff changeset
    14
 * You should have received a copy of the GNU General Public License
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents:
diff changeset
    15
 * along with this program; if not, write to the Free Software
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents:
diff changeset
    16
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents:
diff changeset
    17
 */
2377
f3fab2b09e0c And in frontend
nemo
parents: 2098
diff changeset
    18
612
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents:
diff changeset
    19
#include "itemNum.h"
2098
c977d7f2aa09 Toggle for stars ("frontend effects") - also turns off optimisations for stars that were causing problems onone machine
nemo
parents: 2072
diff changeset
    20
#include "hwform.h"
612
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents:
diff changeset
    21
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents:
diff changeset
    22
#include <QMouseEvent>
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents:
diff changeset
    23
#include <QPainter>
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents:
diff changeset
    24
4412
c9a78ba03679 added disabling option to itemNum and grey images for that. also made default weapon sets uneditable and not deleteable.
Henek
parents: 2377
diff changeset
    25
ItemNum::ItemNum(const QImage& im, const QImage& img, QWidget * parent, unsigned char min, unsigned char max) :
c9a78ba03679 added disabling option to itemNum and grey images for that. also made default weapon sets uneditable and not deleteable.
Henek
parents: 2377
diff changeset
    26
  QFrame(parent), m_im(im), m_img(img), infinityState(false), nonInteractive(false), minItems(min), maxItems(max),
1904
20348675b015 - Fix warnings in frontend
unc0rr
parents: 1886
diff changeset
    27
  numItems(min+2 >= max ? min : min+2)
612
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents:
diff changeset
    28
{
4412
c9a78ba03679 added disabling option to itemNum and grey images for that. also made default weapon sets uneditable and not deleteable.
Henek
parents: 2377
diff changeset
    29
    enabled = true;
2098
c977d7f2aa09 Toggle for stars ("frontend effects") - also turns off optimisations for stars that were causing problems onone machine
nemo
parents: 2072
diff changeset
    30
    if(frontendEffects) setAttribute(Qt::WA_PaintOnScreen, true);
612
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents:
diff changeset
    31
}
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents:
diff changeset
    32
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents:
diff changeset
    33
ItemNum::~ItemNum()
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents:
diff changeset
    34
{
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents:
diff changeset
    35
}
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents:
diff changeset
    36
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents:
diff changeset
    37
void ItemNum::mousePressEvent ( QMouseEvent * event )
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents:
diff changeset
    38
{
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents:
diff changeset
    39
  if(nonInteractive) return;
4412
c9a78ba03679 added disabling option to itemNum and grey images for that. also made default weapon sets uneditable and not deleteable.
Henek
parents: 2377
diff changeset
    40
  if(event->button()==Qt::LeftButton && enabled) {
612
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents:
diff changeset
    41
    event->accept();
1886
0bb8f61e5630 patch by nemo: quick change from 0 to infinite and vice versa
unc0rr
parents: 1455
diff changeset
    42
    if((infinityState && numItems <= maxItems) || (!infinityState && numItems < maxItems)) {
640
e69b651bb336 first buggy infinity state for weapons
displacer
parents: 624
diff changeset
    43
      incItems();
1886
0bb8f61e5630 patch by nemo: quick change from 0 to infinite and vice versa
unc0rr
parents: 1455
diff changeset
    44
    } else {
0bb8f61e5630 patch by nemo: quick change from 0 to infinite and vice versa
unc0rr
parents: 1455
diff changeset
    45
      numItems = minItems+1;
0bb8f61e5630 patch by nemo: quick change from 0 to infinite and vice versa
unc0rr
parents: 1455
diff changeset
    46
      // appears there's an emit in there
0bb8f61e5630 patch by nemo: quick change from 0 to infinite and vice versa
unc0rr
parents: 1455
diff changeset
    47
      decItems();
624
e7673b036db5 weaponItem added
displacer
parents: 612
diff changeset
    48
    }
4412
c9a78ba03679 added disabling option to itemNum and grey images for that. also made default weapon sets uneditable and not deleteable.
Henek
parents: 2377
diff changeset
    49
  } else if (event->button()==Qt::RightButton && enabled) {
612
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents:
diff changeset
    50
    event->accept();
624
e7673b036db5 weaponItem added
displacer
parents: 612
diff changeset
    51
    if(numItems > minItems) {
e7673b036db5 weaponItem added
displacer
parents: 612
diff changeset
    52
      decItems();
1886
0bb8f61e5630 patch by nemo: quick change from 0 to infinite and vice versa
unc0rr
parents: 1455
diff changeset
    53
    } else {
0bb8f61e5630 patch by nemo: quick change from 0 to infinite and vice versa
unc0rr
parents: 1455
diff changeset
    54
      numItems = maxItems+(infinityState?0:-1);
0bb8f61e5630 patch by nemo: quick change from 0 to infinite and vice versa
unc0rr
parents: 1455
diff changeset
    55
      incItems();
624
e7673b036db5 weaponItem added
displacer
parents: 612
diff changeset
    56
    }
612
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents:
diff changeset
    57
  } else {
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents:
diff changeset
    58
    event->ignore();
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents:
diff changeset
    59
    return;
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents:
diff changeset
    60
  }
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents:
diff changeset
    61
  repaint();
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents:
diff changeset
    62
}
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents:
diff changeset
    63
643
281af1f040fb sizeHint for items Widget
displacer
parents: 642
diff changeset
    64
QSize ItemNum::sizeHint () const
281af1f040fb sizeHint for items Widget
displacer
parents: 642
diff changeset
    65
{
281af1f040fb sizeHint for items Widget
displacer
parents: 642
diff changeset
    66
  return QSize((maxItems+1)*12, 32);
281af1f040fb sizeHint for items Widget
displacer
parents: 642
diff changeset
    67
}
281af1f040fb sizeHint for items Widget
displacer
parents: 642
diff changeset
    68
612
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents:
diff changeset
    69
void ItemNum::paintEvent(QPaintEvent* event)
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents:
diff changeset
    70
{
4560
5d6c7f88db73 - Some work on drawMap widget and scene to allow undo, clear, save and load operations
unc0rr
parents: 4416
diff changeset
    71
  Q_UNUSED(event);
5d6c7f88db73 - Some work on drawMap widget and scene to allow undo, clear, save and load operations
unc0rr
parents: 4416
diff changeset
    72
612
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents:
diff changeset
    73
  QPainter painter(this);
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents:
diff changeset
    74
640
e69b651bb336 first buggy infinity state for weapons
displacer
parents: 624
diff changeset
    75
  if (numItems==maxItems+1) {
642
3178a83c7043 zero weapons count is allowed
displacer
parents: 640
diff changeset
    76
    QRect target(0, 0, 100, 32);
4412
c9a78ba03679 added disabling option to itemNum and grey images for that. also made default weapon sets uneditable and not deleteable.
Henek
parents: 2377
diff changeset
    77
    if (enabled) {
c9a78ba03679 added disabling option to itemNum and grey images for that. also made default weapon sets uneditable and not deleteable.
Henek
parents: 2377
diff changeset
    78
        painter.drawImage(target, QImage(":/res/infinity.png"));
c9a78ba03679 added disabling option to itemNum and grey images for that. also made default weapon sets uneditable and not deleteable.
Henek
parents: 2377
diff changeset
    79
    } else {
c9a78ba03679 added disabling option to itemNum and grey images for that. also made default weapon sets uneditable and not deleteable.
Henek
parents: 2377
diff changeset
    80
        painter.drawImage(target, QImage(":/res/infinitygrey.png"));
c9a78ba03679 added disabling option to itemNum and grey images for that. also made default weapon sets uneditable and not deleteable.
Henek
parents: 2377
diff changeset
    81
    }
640
e69b651bb336 first buggy infinity state for weapons
displacer
parents: 624
diff changeset
    82
  } else {
e69b651bb336 first buggy infinity state for weapons
displacer
parents: 624
diff changeset
    83
    for(int i=0; i<numItems; i++) {
1455
7d0a4ecd8210 Better look for weapon sets page
unc0rr
parents: 1066
diff changeset
    84
      QRect target(11 * i, i % 2, 25, 35);
4412
c9a78ba03679 added disabling option to itemNum and grey images for that. also made default weapon sets uneditable and not deleteable.
Henek
parents: 2377
diff changeset
    85
      if (enabled) {
c9a78ba03679 added disabling option to itemNum and grey images for that. also made default weapon sets uneditable and not deleteable.
Henek
parents: 2377
diff changeset
    86
        painter.drawImage(target, m_im);
c9a78ba03679 added disabling option to itemNum and grey images for that. also made default weapon sets uneditable and not deleteable.
Henek
parents: 2377
diff changeset
    87
      } else {
c9a78ba03679 added disabling option to itemNum and grey images for that. also made default weapon sets uneditable and not deleteable.
Henek
parents: 2377
diff changeset
    88
        painter.drawImage(target, m_img);
c9a78ba03679 added disabling option to itemNum and grey images for that. also made default weapon sets uneditable and not deleteable.
Henek
parents: 2377
diff changeset
    89
      }
640
e69b651bb336 first buggy infinity state for weapons
displacer
parents: 624
diff changeset
    90
    }
612
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents:
diff changeset
    91
  }
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents:
diff changeset
    92
}
624
e7673b036db5 weaponItem added
displacer
parents: 612
diff changeset
    93
e7673b036db5 weaponItem added
displacer
parents: 612
diff changeset
    94
unsigned char ItemNum::getItemsNum() const
e7673b036db5 weaponItem added
displacer
parents: 612
diff changeset
    95
{
e7673b036db5 weaponItem added
displacer
parents: 612
diff changeset
    96
  return numItems;
e7673b036db5 weaponItem added
displacer
parents: 612
diff changeset
    97
}
e7673b036db5 weaponItem added
displacer
parents: 612
diff changeset
    98
e7673b036db5 weaponItem added
displacer
parents: 612
diff changeset
    99
void ItemNum::setItemsNum(const unsigned char num)
e7673b036db5 weaponItem added
displacer
parents: 612
diff changeset
   100
{
e7673b036db5 weaponItem added
displacer
parents: 612
diff changeset
   101
  numItems=num;
4412
c9a78ba03679 added disabling option to itemNum and grey images for that. also made default weapon sets uneditable and not deleteable.
Henek
parents: 2377
diff changeset
   102
  repaint();
624
e7673b036db5 weaponItem added
displacer
parents: 612
diff changeset
   103
}
640
e69b651bb336 first buggy infinity state for weapons
displacer
parents: 624
diff changeset
   104
e69b651bb336 first buggy infinity state for weapons
displacer
parents: 624
diff changeset
   105
void ItemNum::setInfinityState(bool value)
e69b651bb336 first buggy infinity state for weapons
displacer
parents: 624
diff changeset
   106
{
e69b651bb336 first buggy infinity state for weapons
displacer
parents: 624
diff changeset
   107
  infinityState=value;
e69b651bb336 first buggy infinity state for weapons
displacer
parents: 624
diff changeset
   108
}
4412
c9a78ba03679 added disabling option to itemNum and grey images for that. also made default weapon sets uneditable and not deleteable.
Henek
parents: 2377
diff changeset
   109
c9a78ba03679 added disabling option to itemNum and grey images for that. also made default weapon sets uneditable and not deleteable.
Henek
parents: 2377
diff changeset
   110
void ItemNum::setEnabled(bool value)
c9a78ba03679 added disabling option to itemNum and grey images for that. also made default weapon sets uneditable and not deleteable.
Henek
parents: 2377
diff changeset
   111
{
c9a78ba03679 added disabling option to itemNum and grey images for that. also made default weapon sets uneditable and not deleteable.
Henek
parents: 2377
diff changeset
   112
  enabled=value;
4416
29d2d1548387 adding a combobox to weapon editor as scheme editor, added a few notices for deleting and some buttons in this area.
Henek
parents: 4412
diff changeset
   113
  repaint();
4412
c9a78ba03679 added disabling option to itemNum and grey images for that. also made default weapon sets uneditable and not deleteable.
Henek
parents: 2377
diff changeset
   114
}