QTfrontend/hedgehogerWidget.cpp
author nemo
Thu, 01 Jul 2010 23:41:10 -0400
changeset 3608 c509bbc779e7
parent 1784 dfe9bafb4590
child 3871 c91aefe1dca2
permissions -rw-r--r--
Revert prior attempted optimisation. Gridding the land pays in some situations, but not all. Restricting to an upper bound might help, but overall, seems too fuzzy to be worth it. On one side is increased cost of Add/Delete + extra test on collision check, on the other is skipping the list iteration. Perhaps for large lists.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
     1
/*
1066
1f1b3686a2b0 Update copyright headers a bit
unc0rr
parents: 951
diff changeset
     2
 * Hedgewars, a free turn based strategy game
883
07a568ba44e0 Update copyright info in source files headers
unc0rr
parents: 624
diff changeset
     3
 * Copyright (c) 2006-2008 Ulyanov Igor <iulyanov@gmail.com>
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
     4
 *
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
     6
 * it under the terms of the GNU General Public License as published by
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
     7
 * the Free Software Foundation; version 2 of the License
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
     8
 *
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    12
 * GNU General Public License for more details.
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    13
 *
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    14
 * You should have received a copy of the GNU General Public License
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    15
 * along with this program; if not, write to the Free Software
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    16
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    17
 */
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    18
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    19
#include "hedgehogerWidget.h"
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    20
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    21
#include "frameTeam.h"
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    22
612
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents: 579
diff changeset
    23
CHedgehogerWidget::CHedgehogerWidget(const QImage& im, QWidget * parent) :
951
c021955435b2 Minimum number of hedgehogs in team is 1 now
unc0rr
parents: 883
diff changeset
    24
    ItemNum(im, parent, 1)
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    25
{
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    26
  if(parent) {
1300
22c03f69e142 Fix arithmetic bug in CHedgehogerWidget
unc0rr
parents: 1066
diff changeset
    27
    pOurFrameTeams = dynamic_cast<FrameTeams*>(parent->parentWidget());
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    28
  }
1300
22c03f69e142 Fix arithmetic bug in CHedgehogerWidget
unc0rr
parents: 1066
diff changeset
    29
  if(pOurFrameTeams->overallHedgehogs + 4 > pOurFrameTeams->maxHedgehogsPerGame) {
22c03f69e142 Fix arithmetic bug in CHedgehogerWidget
unc0rr
parents: 1066
diff changeset
    30
    numItems = pOurFrameTeams->maxHedgehogsPerGame - pOurFrameTeams->overallHedgehogs;
22c03f69e142 Fix arithmetic bug in CHedgehogerWidget
unc0rr
parents: 1066
diff changeset
    31
  } else numItems = 4;
22c03f69e142 Fix arithmetic bug in CHedgehogerWidget
unc0rr
parents: 1066
diff changeset
    32
  pOurFrameTeams->overallHedgehogs += numItems;
612
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents: 579
diff changeset
    33
}
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents: 579
diff changeset
    34
1300
22c03f69e142 Fix arithmetic bug in CHedgehogerWidget
unc0rr
parents: 1066
diff changeset
    35
void CHedgehogerWidget::incItems()
612
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents: 579
diff changeset
    36
{
1784
dfe9bafb4590 Apply nemo's patch polished by me:
unc0rr
parents: 1300
diff changeset
    37
  if (pOurFrameTeams->overallHedgehogs < pOurFrameTeams->maxHedgehogsPerGame) {
624
e7673b036db5 weaponItem added
displacer
parents: 612
diff changeset
    38
    numItems++;
e7673b036db5 weaponItem added
displacer
parents: 612
diff changeset
    39
    pOurFrameTeams->overallHedgehogs++;
e7673b036db5 weaponItem added
displacer
parents: 612
diff changeset
    40
    emit hedgehogsNumChanged();
e7673b036db5 weaponItem added
displacer
parents: 612
diff changeset
    41
  }
612
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents: 579
diff changeset
    42
}
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents: 579
diff changeset
    43
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents: 579
diff changeset
    44
void CHedgehogerWidget::decItems()
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents: 579
diff changeset
    45
{
624
e7673b036db5 weaponItem added
displacer
parents: 612
diff changeset
    46
  numItems--;
e7673b036db5 weaponItem added
displacer
parents: 612
diff changeset
    47
  pOurFrameTeams->overallHedgehogs--;
e7673b036db5 weaponItem added
displacer
parents: 612
diff changeset
    48
  emit hedgehogsNumChanged();
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    49
}
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    50
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    51
CHedgehogerWidget::~CHedgehogerWidget()
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    52
{
612
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents: 579
diff changeset
    53
  pOurFrameTeams->overallHedgehogs-=numItems;
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    54
}
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    55
362
b28e0dd48269 hedgehogs num modification now allowed to chief client only
displacer
parents: 352
diff changeset
    56
void CHedgehogerWidget::setNonInteractive()
b28e0dd48269 hedgehogs num modification now allowed to chief client only
displacer
parents: 352
diff changeset
    57
{
b28e0dd48269 hedgehogs num modification now allowed to chief client only
displacer
parents: 352
diff changeset
    58
  nonInteractive=true;
b28e0dd48269 hedgehogs num modification now allowed to chief client only
displacer
parents: 352
diff changeset
    59
}
b28e0dd48269 hedgehogs num modification now allowed to chief client only
displacer
parents: 352
diff changeset
    60
352
4665bfe25470 first buggy hedgehogs num net change
displacer
parents: 207
diff changeset
    61
void CHedgehogerWidget::setHHNum(unsigned int num)
4665bfe25470 first buggy hedgehogs num net change
displacer
parents: 207
diff changeset
    62
{
1300
22c03f69e142 Fix arithmetic bug in CHedgehogerWidget
unc0rr
parents: 1066
diff changeset
    63
  unsigned int diff = num - numItems;
22c03f69e142 Fix arithmetic bug in CHedgehogerWidget
unc0rr
parents: 1066
diff changeset
    64
  numItems += diff;
22c03f69e142 Fix arithmetic bug in CHedgehogerWidget
unc0rr
parents: 1066
diff changeset
    65
  pOurFrameTeams->overallHedgehogs += diff;
352
4665bfe25470 first buggy hedgehogs num net change
displacer
parents: 207
diff changeset
    66
  repaint();
4665bfe25470 first buggy hedgehogs num net change
displacer
parents: 207
diff changeset
    67
}
4665bfe25470 first buggy hedgehogs num net change
displacer
parents: 207
diff changeset
    68
207
287077789132 coosing colors added
displacer
parents: 184
diff changeset
    69
unsigned char CHedgehogerWidget::getHedgehogsNum() const
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    70
{
612
333d095319de abstract class for items container (hedgehogs num, bullets, etc.)
displacer
parents: 579
diff changeset
    71
  return numItems;
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    72
}