diff options
| author | Vegard Storheil Eriksen <zyp@jvnv.net> | 2010-12-11 05:38:25 +0100 | 
|---|---|---|
| committer | Vegard Storheil Eriksen <zyp@jvnv.net> | 2010-12-11 05:39:05 +0100 | 
| commit | 29581932f76b8d880109cbcfdda451046456560e (patch) | |
| tree | cd63aa3ec53271d7ac69dd175c660d863d0cc37a /server/player.h | |
| parent | d18fa08d188c136e3ca4af778c835ecee990978f (diff) | |
Moved Player out of Game.
Diffstat (limited to 'server/player.h')
| -rw-r--r-- | server/player.h | 105 | 
1 files changed, 105 insertions, 0 deletions
diff --git a/server/player.h b/server/player.h new file mode 100644 index 0000000..cf98231 --- /dev/null +++ b/server/player.h @@ -0,0 +1,105 @@ +#ifndef PLAYER_H +#define PLAYER_H + +#include "client.h" + +#include "../common/set.h" +#include "../common/cyclicint.h" +#include "../common/state.h" +#include "../common/action.h" + +typedef CyclicInt<4> PlayerNum; + +class Player { +	public: +		ClientBase::p client; +		 +		Tiles hand; +		Sets open; +		Tiles pond; +		bool riichi; +		int score; +		int wind; +		 +		//! Indexes of tiles that will give tenpai (used after riichi declaration). +		List<int> tenpai_indexes; +		 +		//! Prepare for a new round. +		void round_start(int w); +		 +		//! Get a state snapshot. +		PlayerState get_state(); +		 +		//! Get a state snapshot, with concealed tiles filtered. +		PlayerState get_state_filtered(); +		 +		//! Get possible actions after a draw. +		Actions get_actions_draw(); +		 +		//! Get possible actions on discarded tile. +		Actions get_actions_discard(Tile tile, PlayerNum discarder); +		 +		typedef std::vector<int> Targets; +		 +		//! Check if player can declare riichi. +		bool can_riichi(); +		 +		//! Check if tile can be called for a chi. +		Targets can_chi(Tile tile); +		 +		//! Check if tile can be called for a pon. +		int can_pon(Tile tile); +		 +		//! Check if it's possible to make a concealed kan. +		Targets can_kan(); +		 +		//! Check if it's possible to extend a pon to a kan. +		Targets can_kan_extend(); +		 +		//! Check if tile can be called to kan target. +		bool can_kan(Tile tile, int target); +		 +		//! Check if hand is complete. +		bool can_tsumo(); +		 +		//! Check if tile can be called to complete hand. +		bool can_ron(Tile tile); +		 +		//! Draw tile. +		void draw(Tile tile); +		 +		//! Discard tile. +		void discard(int target); +		 +		//! Look at last discard in pond. +		Tile last_discard(); +		 +		//! Claim last discard from pond. +		Tile claim(); +		 +		//! Declare riichi. +		void declare_riichi(); +		 +		//! Make chi from tile. +		void make_chi(Tile tile, int target); +		 +		//! Make pon from tile. +		void make_pon(Tile tile, int target, PlayerNum discarder); +		 +		//! Make open kan from tile. +		void make_kan(Tile tile, int target, PlayerNum discarder); +		 +		//! Make concealed kan. +		void make_kan(int target); +		 +		//! Make extended kan. +		void make_kan_extend(int target); +		 +		//! Declare win on discarded tile. +		void declare_ron(Tile tile); +		 +		//! Declare win on self-drawn tile. +		void declare_tsumo(); +}; + +#endif  | 
