QTfrontend/hedgehogerWidget.cpp
author unc0rr
Sun, 24 Sep 2006 21:32:18 +0000
changeset 165 9b9144948668
parent 153 dc10da2a73f9
child 183 57c2ef19f719
permissions -rw-r--r--
Many small fixes
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
153
dc10da2a73f9 license and copyright info added
displacer
parents: 150
diff changeset
     1
/*
dc10da2a73f9 license and copyright info added
displacer
parents: 150
diff changeset
     2
 * Hedgewars, a worms-like game
dc10da2a73f9 license and copyright info added
displacer
parents: 150
diff changeset
     3
 * Copyright (c) 2006 Ulyanov Igor <iulyanov@gmail.com>
dc10da2a73f9 license and copyright info added
displacer
parents: 150
diff changeset
     4
 *
dc10da2a73f9 license and copyright info added
displacer
parents: 150
diff changeset
     5
 * Distributed under the terms of the BSD-modified licence:
dc10da2a73f9 license and copyright info added
displacer
parents: 150
diff changeset
     6
 *
dc10da2a73f9 license and copyright info added
displacer
parents: 150
diff changeset
     7
 * Permission is hereby granted, free of charge, to any person obtaining a copy
dc10da2a73f9 license and copyright info added
displacer
parents: 150
diff changeset
     8
 * of this software and associated documentation files (the "Software"), to deal
dc10da2a73f9 license and copyright info added
displacer
parents: 150
diff changeset
     9
 * with the Software without restriction, including without limitation the
dc10da2a73f9 license and copyright info added
displacer
parents: 150
diff changeset
    10
 * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
dc10da2a73f9 license and copyright info added
displacer
parents: 150
diff changeset
    11
 * sell copies of the Software, and to permit persons to whom the Software is
dc10da2a73f9 license and copyright info added
displacer
parents: 150
diff changeset
    12
 * furnished to do so, subject to the following conditions:
dc10da2a73f9 license and copyright info added
displacer
parents: 150
diff changeset
    13
 *
dc10da2a73f9 license and copyright info added
displacer
parents: 150
diff changeset
    14
 * 1. Redistributions of source code must retain the above copyright notice,
dc10da2a73f9 license and copyright info added
displacer
parents: 150
diff changeset
    15
 *    this list of conditions and the following disclaimer.
dc10da2a73f9 license and copyright info added
displacer
parents: 150
diff changeset
    16
 * 2. Redistributions in binary form must reproduce the above copyright notice,
dc10da2a73f9 license and copyright info added
displacer
parents: 150
diff changeset
    17
 *    this list of conditions and the following disclaimer in the documentation
dc10da2a73f9 license and copyright info added
displacer
parents: 150
diff changeset
    18
 *    and/or other materials provided with the distribution.
dc10da2a73f9 license and copyright info added
displacer
parents: 150
diff changeset
    19
 * 3. The name of the author may not be used to endorse or promote products
dc10da2a73f9 license and copyright info added
displacer
parents: 150
diff changeset
    20
 *    derived from this software without specific prior written permission.
dc10da2a73f9 license and copyright info added
displacer
parents: 150
diff changeset
    21
 *
dc10da2a73f9 license and copyright info added
displacer
parents: 150
diff changeset
    22
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
dc10da2a73f9 license and copyright info added
displacer
parents: 150
diff changeset
    23
 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
dc10da2a73f9 license and copyright info added
displacer
parents: 150
diff changeset
    24
 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
dc10da2a73f9 license and copyright info added
displacer
parents: 150
diff changeset
    25
 * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
dc10da2a73f9 license and copyright info added
displacer
parents: 150
diff changeset
    26
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
dc10da2a73f9 license and copyright info added
displacer
parents: 150
diff changeset
    27
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
dc10da2a73f9 license and copyright info added
displacer
parents: 150
diff changeset
    28
 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
dc10da2a73f9 license and copyright info added
displacer
parents: 150
diff changeset
    29
 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
dc10da2a73f9 license and copyright info added
displacer
parents: 150
diff changeset
    30
 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
dc10da2a73f9 license and copyright info added
displacer
parents: 150
diff changeset
    31
 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
dc10da2a73f9 license and copyright info added
displacer
parents: 150
diff changeset
    32
 */
dc10da2a73f9 license and copyright info added
displacer
parents: 150
diff changeset
    33
133
c79cb5e5b24a - Multiplayer game start button
unc0rr
parents: 132
diff changeset
    34
#include "hedgehogerWidget.h"
c79cb5e5b24a - Multiplayer game start button
unc0rr
parents: 132
diff changeset
    35
c79cb5e5b24a - Multiplayer game start button
unc0rr
parents: 132
diff changeset
    36
#include <QMouseEvent>
c79cb5e5b24a - Multiplayer game start button
unc0rr
parents: 132
diff changeset
    37
#include <QPainter>
c79cb5e5b24a - Multiplayer game start button
unc0rr
parents: 132
diff changeset
    38
150
d9e8a336195c team hedgehogs number improved
displacer
parents: 147
diff changeset
    39
#include "frameTeam.h"
147
52a3c431db8a maximum number of teams and hedgehogs
displacer
parents: 140
diff changeset
    40
133
c79cb5e5b24a - Multiplayer game start button
unc0rr
parents: 132
diff changeset
    41
CHedgehogerWidget::CHedgehogerWidget(QWidget * parent) :
150
d9e8a336195c team hedgehogs number improved
displacer
parents: 147
diff changeset
    42
  QWidget(parent)
133
c79cb5e5b24a - Multiplayer game start button
unc0rr
parents: 132
diff changeset
    43
{
150
d9e8a336195c team hedgehogs number improved
displacer
parents: 147
diff changeset
    44
  if(parent) {
d9e8a336195c team hedgehogs number improved
displacer
parents: 147
diff changeset
    45
    pOurFrameTeams=dynamic_cast<FrameTeams*>(parent->parentWidget());
d9e8a336195c team hedgehogs number improved
displacer
parents: 147
diff changeset
    46
  }
d9e8a336195c team hedgehogs number improved
displacer
parents: 147
diff changeset
    47
  if(pOurFrameTeams->overallHedgehogs+4>pOurFrameTeams->maxHedgehogsPerGame) {
d9e8a336195c team hedgehogs number improved
displacer
parents: 147
diff changeset
    48
    numHedgehogs=pOurFrameTeams->maxHedgehogsPerGame-pOurFrameTeams->overallHedgehogs;
d9e8a336195c team hedgehogs number improved
displacer
parents: 147
diff changeset
    49
  } else numHedgehogs=4;
d9e8a336195c team hedgehogs number improved
displacer
parents: 147
diff changeset
    50
  pOurFrameTeams->overallHedgehogs+=numHedgehogs;
147
52a3c431db8a maximum number of teams and hedgehogs
displacer
parents: 140
diff changeset
    51
}
52a3c431db8a maximum number of teams and hedgehogs
displacer
parents: 140
diff changeset
    52
52a3c431db8a maximum number of teams and hedgehogs
displacer
parents: 140
diff changeset
    53
CHedgehogerWidget::~CHedgehogerWidget()
52a3c431db8a maximum number of teams and hedgehogs
displacer
parents: 140
diff changeset
    54
{
150
d9e8a336195c team hedgehogs number improved
displacer
parents: 147
diff changeset
    55
  pOurFrameTeams->overallHedgehogs-=numHedgehogs;
133
c79cb5e5b24a - Multiplayer game start button
unc0rr
parents: 132
diff changeset
    56
}
c79cb5e5b24a - Multiplayer game start button
unc0rr
parents: 132
diff changeset
    57
c79cb5e5b24a - Multiplayer game start button
unc0rr
parents: 132
diff changeset
    58
void CHedgehogerWidget::mousePressEvent ( QMouseEvent * event )
c79cb5e5b24a - Multiplayer game start button
unc0rr
parents: 132
diff changeset
    59
{
c79cb5e5b24a - Multiplayer game start button
unc0rr
parents: 132
diff changeset
    60
  if(event->button()==Qt::LeftButton) {
c79cb5e5b24a - Multiplayer game start button
unc0rr
parents: 132
diff changeset
    61
    event->accept();
150
d9e8a336195c team hedgehogs number improved
displacer
parents: 147
diff changeset
    62
    if(numHedgehogs < 8 && pOurFrameTeams->overallHedgehogs<18) {
147
52a3c431db8a maximum number of teams and hedgehogs
displacer
parents: 140
diff changeset
    63
      numHedgehogs++;
150
d9e8a336195c team hedgehogs number improved
displacer
parents: 147
diff changeset
    64
      pOurFrameTeams->overallHedgehogs++;
147
52a3c431db8a maximum number of teams and hedgehogs
displacer
parents: 140
diff changeset
    65
    }
133
c79cb5e5b24a - Multiplayer game start button
unc0rr
parents: 132
diff changeset
    66
  } else if (event->button()==Qt::RightButton) {
c79cb5e5b24a - Multiplayer game start button
unc0rr
parents: 132
diff changeset
    67
    event->accept();
147
52a3c431db8a maximum number of teams and hedgehogs
displacer
parents: 140
diff changeset
    68
    if(numHedgehogs > 3) {
52a3c431db8a maximum number of teams and hedgehogs
displacer
parents: 140
diff changeset
    69
      numHedgehogs--;
150
d9e8a336195c team hedgehogs number improved
displacer
parents: 147
diff changeset
    70
      pOurFrameTeams->overallHedgehogs--;
147
52a3c431db8a maximum number of teams and hedgehogs
displacer
parents: 140
diff changeset
    71
    }
133
c79cb5e5b24a - Multiplayer game start button
unc0rr
parents: 132
diff changeset
    72
  } else {
c79cb5e5b24a - Multiplayer game start button
unc0rr
parents: 132
diff changeset
    73
    event->ignore();
c79cb5e5b24a - Multiplayer game start button
unc0rr
parents: 132
diff changeset
    74
    return;
c79cb5e5b24a - Multiplayer game start button
unc0rr
parents: 132
diff changeset
    75
  }
c79cb5e5b24a - Multiplayer game start button
unc0rr
parents: 132
diff changeset
    76
  repaint();
c79cb5e5b24a - Multiplayer game start button
unc0rr
parents: 132
diff changeset
    77
}
c79cb5e5b24a - Multiplayer game start button
unc0rr
parents: 132
diff changeset
    78
c79cb5e5b24a - Multiplayer game start button
unc0rr
parents: 132
diff changeset
    79
void CHedgehogerWidget::paintEvent(QPaintEvent* event)
c79cb5e5b24a - Multiplayer game start button
unc0rr
parents: 132
diff changeset
    80
{
c79cb5e5b24a - Multiplayer game start button
unc0rr
parents: 132
diff changeset
    81
  QImage image(":/res/hh25x25.png");
c79cb5e5b24a - Multiplayer game start button
unc0rr
parents: 132
diff changeset
    82
c79cb5e5b24a - Multiplayer game start button
unc0rr
parents: 132
diff changeset
    83
  QPainter painter(this);
c79cb5e5b24a - Multiplayer game start button
unc0rr
parents: 132
diff changeset
    84
140
50ccde437ea1 teams and hedgedogs num selection added to HWgame
displacer
parents: 134
diff changeset
    85
  for(int i=0; i<numHedgehogs; i++) {
133
c79cb5e5b24a - Multiplayer game start button
unc0rr
parents: 132
diff changeset
    86
    QRect target(11 * i, i % 2, 25, 25);
c79cb5e5b24a - Multiplayer game start button
unc0rr
parents: 132
diff changeset
    87
    painter.drawImage(target, image);
c79cb5e5b24a - Multiplayer game start button
unc0rr
parents: 132
diff changeset
    88
  }
c79cb5e5b24a - Multiplayer game start button
unc0rr
parents: 132
diff changeset
    89
}
140
50ccde437ea1 teams and hedgedogs num selection added to HWgame
displacer
parents: 134
diff changeset
    90
50ccde437ea1 teams and hedgedogs num selection added to HWgame
displacer
parents: 134
diff changeset
    91
unsigned char CHedgehogerWidget::getHedgehogsNum()
50ccde437ea1 teams and hedgedogs num selection added to HWgame
displacer
parents: 134
diff changeset
    92
{
50ccde437ea1 teams and hedgedogs num selection added to HWgame
displacer
parents: 134
diff changeset
    93
  return numHedgehogs;
50ccde437ea1 teams and hedgedogs num selection added to HWgame
displacer
parents: 134
diff changeset
    94
}