QTfrontend/itemNum.cpp
author nemo
Sat, 04 Dec 2010 11:30:54 -0500
changeset 4455 a0c8779713f2
parent 4416 29d2d1548387
child 4560 5d6c7f88db73
permissions -rw-r--r--
In AI survival mode, have the AI score when it kills humans, instead of its own team, clear poison on an AI kill, and reset AI health using InitialHealth instead of 100.
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
883
07a568ba44e0 Update copyright info in source files headers
unc0rr
parents: 643
diff changeset
     3
 * Copyright (c) 2006-2008 Ulyanov Igor <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
{
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents:
diff changeset
    71
  QPainter painter(this);
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents:
diff changeset
    72
640
e69b651bb336 first buggy infinity state for weapons
displacer
parents: 624
diff changeset
    73
  if (numItems==maxItems+1) {
642
3178a83c7043 zero weapons count is allowed
displacer
parents: 640
diff changeset
    74
    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
    75
    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
    76
        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
    77
    } 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
    78
        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
    79
    }
640
e69b651bb336 first buggy infinity state for weapons
displacer
parents: 624
diff changeset
    80
  } else {
e69b651bb336 first buggy infinity state for weapons
displacer
parents: 624
diff changeset
    81
    for(int i=0; i<numItems; i++) {
1455
7d0a4ecd8210 Better look for weapon sets page
unc0rr
parents: 1066
diff changeset
    82
      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
    83
      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
    84
        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
    85
      } 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
    86
        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
    87
      }
640
e69b651bb336 first buggy infinity state for weapons
displacer
parents: 624
diff changeset
    88
    }
612
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents:
diff changeset
    89
  }
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents:
diff changeset
    90
}
624
e7673b036db5 weaponItem added
displacer
parents: 612
diff changeset
    91
e7673b036db5 weaponItem added
displacer
parents: 612
diff changeset
    92
unsigned char ItemNum::getItemsNum() const
e7673b036db5 weaponItem added
displacer
parents: 612
diff changeset
    93
{
e7673b036db5 weaponItem added
displacer
parents: 612
diff changeset
    94
  return numItems;
e7673b036db5 weaponItem added
displacer
parents: 612
diff changeset
    95
}
e7673b036db5 weaponItem added
displacer
parents: 612
diff changeset
    96
e7673b036db5 weaponItem added
displacer
parents: 612
diff changeset
    97
void ItemNum::setItemsNum(const unsigned char num)
e7673b036db5 weaponItem added
displacer
parents: 612
diff changeset
    98
{
e7673b036db5 weaponItem added
displacer
parents: 612
diff changeset
    99
  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
   100
  repaint();
624
e7673b036db5 weaponItem added
displacer
parents: 612
diff changeset
   101
}
640
e69b651bb336 first buggy infinity state for weapons
displacer
parents: 624
diff changeset
   102
e69b651bb336 first buggy infinity state for weapons
displacer
parents: 624
diff changeset
   103
void ItemNum::setInfinityState(bool value)
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
  infinityState=value;
e69b651bb336 first buggy infinity state for weapons
displacer
parents: 624
diff changeset
   106
}
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
   107
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
   108
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
   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
  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
   111
  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
   112
}