File: graphicalFightCell.cpp

package info (click to toggle)
attal 1.0~rc2-2
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd, squeeze, wheezy
  • size: 4,348 kB
  • ctags: 7,428
  • sloc: cpp: 55,101; sh: 267; ansic: 100; makefile: 54
file content (108 lines) | stat: -rw-r--r-- 3,063 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
/****************************************************************
**
** Attal : Lords of Doom
**
** graphicalFightCell.cpp
** this class draws a hexagonal fightCell 
**
** Version : $Id: graphicalFightCell.cpp,v 1.11 2006/11/03 18:28:58 fdarling Exp $
**
** Author(s) : Pascal Audoux - Cyrille Verrier
**
** Date : 07/12/2000
**
** Licence :    
**	This program is free software; you can redistribute it and/or modify
**   	it under the terms of the GNU General Public License as published by
**     	the Free Software Foundation; either version 2, or (at your option)
**      any later version.
**
**	This program is distributed in the hope that it will be useful,
** 	but WITHOUT ANY WARRANTY; without even the implied warranty of
**	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
**	GNU General Public License for more details.
**
****************************************************************/

#include "graphicalFightCell.h"

 
// generic include files
#include <stdlib.h>
#include <math.h>
// include files for QT
#include <QPainter>
// application specific include
#include "conf.h"

#include "libCommon/genericFightCell.h"
#include "libCommon/log.h"

const double GraphicalFightCell::_sqrt3 = sqrt(3);
const int GraphicalFightCell::_size = 15;

int VShift = 150;
int HShift = 0;

/** this class draws a hexagonal fightCell */
GraphicalFightCell::GraphicalFightCell( int row, int col, QGraphicsScene * canvas, bool horizontalDraw )
	: QGraphicsPolygonItem( 0,canvas )
{
	_horizontal = horizontalDraw;
	setColor( QColor( "grey" ) );

	_pa =  QPolygonF(7);
	if( _horizontal ) {
 		_pa[0] = QPoint( int(_size * _sqrt3) , 4 * _size);
		_pa[1] = QPoint( 0, 3 * _size );
		_pa[2] = QPoint( 0,  _size );
		_pa[3] = QPoint( int( _size * _sqrt3), 0 );
		_pa[4] = QPoint( int( 2 * _size * _sqrt3), _size );
		_pa[5] = QPoint( int( 2 * _size * _sqrt3), 3 * _size  );
		_pa[6] = _pa[0];

		if( row % 2 == 0 ) {
			setPos( int (HShift + 2*_sqrt3*_size*col ), int ( 3*_size*row) + VShift );
		} else {
			setPos( int (HShift + 2*_sqrt3*_size*(col + 0.5) ), int ( 3*_size*row) + VShift );
		}
	} else {
		_pa[0] = QPoint( 4 * _size, int(_size * _sqrt3) );
		_pa[1] = QPoint( 3 * _size, 0 );
		_pa[2] = QPoint( _size, 0 );
		_pa[3] = QPoint( 0, int(_size * _sqrt3) );
		_pa[4] = QPoint( _size, int(2 * _size * _sqrt3) );
		_pa[5] = QPoint( 3 * _size, int(2 * _size * _sqrt3) );
		_pa[6] = _pa[0];

		if( col % 2 == 0 ) {
			setPos( int ( 3*_size*col), int (VShift + 2*_sqrt3*_size*row ) );
		} else {
			setPos( int ( 3*_size*col), int (VShift + 2*_sqrt3*_size*(row+0.5) ) );
		}
	}
	setPolygon( _pa );

	setEnabled( true );
	setVisible( true );
	//collisions( true );

	setZValue( CAN_F_GROUND );
	show();
}

void GraphicalFightCell::paint( QPainter * p, const QStyleOptionGraphicsItem * /* option */, QWidget * /* widget */)
{
	if(enabled()) {
		p->setPen( _color );
		QPolygonF array = polygon();
		//array.translate( (int)x(), (int)y() );
		p->drawPolygon( array );
	}
}

QPointF GraphicalFightCell::getCenter()
{
	return boundingRect().center();
}