File: estate.h

package info (click to toggle)
monopd 0.9.3-4.1
  • links: PTS
  • area: main
  • in suites: squeeze
  • size: 788 kB
  • ctags: 575
  • sloc: cpp: 5,666; sh: 712; makefile: 27
file content (81 lines) | stat: -rw-r--r-- 2,286 bytes parent folder | download | duplicates (5)
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
// Copyright (c) 2001-2003 Rob Kaper <cap@capsi.com>,
//               2001 Erik Bourget <ebourg@cs.mcgill.ca>
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// version 2 as published by the Free Software Foundation.
//
// 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.
//
// You should have received a copy of the GNU General Public License
// along with this program; see the file COPYING.  If not, write to
// the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
// Boston, MA 02111-1307, USA.

#ifndef MONOP_ESTATE_H
#define MONOP_ESTATE_H

#include <string>
#include <vector>

#include "gameobject.h"

class CardGroup;
class Estate;
class EstateGroup;
class Game;
class Player;

class Estate : public GameObject
{
public:
	Estate(int id, std::vector<Estate *> *);

	void setEstateGroup(EstateGroup *group) { m_group = group; }
	void setOwner(Player *_p) { m_owner = _p; }
	void setIcon(const std::string &icon);
	std::string icon() const;
	void setRent(int _houses, int _m) { m_rent[_houses] = _m; }
	void addMoney(int money);
	void setPayAmount(int amount);
	int payAmount();
	void setPayTarget(Estate *estate) { m_payTarget = estate; }

	void setTakeCardGroup(CardGroup *cardGroup);
	CardGroup *takeCardGroup();

	EstateGroup *group() { return m_group; }
	Player *owner() { return m_owner; }
	const std::string color();
	const std::string bgColor();
	int price();
	int housePrice();
	int rentByHouses(int _h) { return m_rent[_h]; }
	int rent(Player *player, const std::string &rentMath);
	Estate *payTarget() { return m_payTarget; }

	bool canBeOwned();
	bool canToggleMortgage(Player *owner);
	bool canBuyHouses(Player *);
	bool canSellHouses(Player *);
		
	int groupSize(Player *);
	int minHouses();
	int maxHouses();
	bool groupHasBuildings();
	bool groupHasMortgages();
	bool estateGroupIsMonopoly();

private:
	Estate *m_payTarget;
	EstateGroup *m_group;
	Player *m_owner;
	CardGroup *m_takeCardGroup;
	std::vector<Estate *> *m_estates;
	int m_rent[6];
};

#endif // MONOP_ESTATE_H