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 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
|
/****************************************************************
**
** Attal : Lords of Doom
**
** building.cpp
** manages building
**
** Version : $Id: building.cpp,v 1.11 2008/02/24 22:29:48 lusum Exp $
**
** Author(s) : Pascal Audoux
**
** Date : 26/08/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 "building.h"
// generic include files
// include files for QT
#include <QMessageBox>
// application specific include
#include "libCommon/genericPlayer.h"
#include "libClient/displayBase.h"
#include "libClient/map.h"
//
// ----- Base -----
//
Base::Base( Map * map, int race )
: GraphicalBase( map ),
GenericBase( race )
{
// internal comments
_map = map;
GraphicalBase::setRace( race );
}
void Base::setPosition( GenericCell * cell )
{
setPosition( cell->getRow(), cell->getCol() );
}
void Base::setPosition( int row, int col )
{
GenericBase::setPosition( (GenericCell *)_map->at( row, col ) );
// dispositions start from top/left, starting with index 0, cell start from bottom/right
// so getDoorCol() is the orizontal offset, orizontal offset is dispoHeight - doorRow
GraphicalBase::setPosition( (GenericCell *)_map->at( row, col ), ( getDoorRow()-getDispoHeight() + 1 ), ( - getDoorCol() ) );
//_map->at( row, col )->setBase( this );
}
void Base::enter( GenericLord * lord )
{
GenericBase::enter( lord );
TRACE("Base::enter You are in a castle, lord %p", lord );
}
void Base::setRace( int race )
{
GenericBase::setRace( race );
GraphicalBase::setRace( race );
}
void Base::setOwner( GenericPlayer * player )
{
GenericBase::setOwner( player );
GraphicalBase::setOwner( player );
}
//
// ----- Building -----
//
Building::Building( QGraphicsScene * canvas , int type )
: GraphicalBuilding( canvas ),
GenericBuilding( type )
{
//setFrame( 0 );
//setAnimation( GenericBuilding::getNbFrame(), GenericBuilding::getAnimFreq() );
GraphicalBuilding::setType( type );
setAnimation( GenericBuilding::getNbFrame(), GenericBuilding::getAnimFreq() );
}
void Building::setPosition( GenericCell * cell )
{
GenericBuilding::setPosition( cell );
// dispositions start from top/left, starting with index 0, cell start from top/left
// so - getDoorCol() is the orizontal offset, vertical offset is dispoHeight + 1 - doorRow
TRACE("void Building::setPosition( GenericCell * cell ) row %d, cell col %d, getDoorRow %d, getDispoHeight %d, getDispoWidth %d, getDoorCol %d",cell->getRow(), cell->getCol(), getDoorRow(), getDispoHeight(), getDispoWidth(), getDoorCol());
GraphicalBuilding::setPosition( cell , ( getDispoHeight()-1 - getDoorRow() ), - getDoorCol() );
//cell->setBuilding( this );
}
void Building::setType( int type )
{
GenericBuilding::setType( type );
GraphicalBuilding::setType( type );
setAnimation( GenericBuilding::getNbFrame(), GenericBuilding::getAnimFreq() );
}
void Building::setOwner( GenericPlayer * player )
{
GenericBuilding::setOwner( player );
GraphicalBuilding::setOwner( player );
}
|