/**
 * \file Types.h
 * \date 02.03.2002
 * \author Daniel Novomesky
 * \author Marek Lehuta
 *
 * Various types used in the world model
 */

#ifndef COMMON_WORLD_TYPES_H
#define COMMON_WORLD_TYPES_H

/// View quality
enum ViewQuality
{
	LOW_QUALITY,
	HIGH_QUALITY
};

/// View width
enum ViewWidth
{
	NARROW_VIEW,
	NORMAL_VIEW,
	WIDE_VIEW
};

/// Player real side
enum RealSide
{
	RIGHT,
	LEFT,
};

/// Player "relative" side
enum Side
{
	OUR,
	THEIR,
	UNKNOWN
};

/// Flag type
enum FlagType
{
	NoLandmark = 0,
//	1       2
	GOAL_L, GOAL_R,
//  3  4   5   6   7   8   9
	C, CT, CB, LT, LB, RT, RB,
//  10   11   12   13   14   15
	PLT, PLC, PLB, PRT, PRC, PRB,
//  16   17   18   19
	GLT, GLB, GRT, GRB,
//  20    21    22    23    24    25  26    27    28    29    30 
	TL50, TL40, TL30, TL20, TL10, T0, TR10, TR20, TR30, TR40, TR50,
//  31    32    33    34    35    36  37    38    39    40    41
	BL50, BL40, BL30, BL20, BL10, B0, BR10, BR20, BR30, BR40, BR50,
//  42    43    44    45  46    47    48
	LT30, LT20, LT10, L0, LB10, LB20, LB30, 
//  49    50    51    52  53    54    55
	RT30, RT20, RT10, R0, RB10, RB20, RB30,
//  56
	FLAG_MAX
};


/// Line type
enum LineType
{
	NoLine = 0,
	Top,
	Bottom,
	Left,
	Right
};

/// Play modes (stolen from the server)
enum PlayMode
{
	PM_Null = 0, PM_BeforeKickOff, PM_TimeOver, PM_PlayOn, 
	PM_KickOff_Our, PM_KickOff_Their, PM_KickIn_Our, PM_KickIn_Their,
	PM_FreeKick_Our, PM_FreeKick_Their, PM_CornerKick_Our, PM_CornerKick_Their, 
	PM_GoalKick_Our, PM_GoalKick_Their, PM_AfterGoal_Our, PM_AfterGoal_Their, 
	PM_DropBall, PM_Offside_Our, PM_Offside_Their,

	// [I.Noda:00/05/13] added for 3D viewer/commentator/small league
	PM_PenaltyKick_Our, PM_PenaltyKick_Their, PM_FirstHalfOver, PM_Pause,
	PM_HumanJudge, PM_Foul_Charge_Our, PM_Foul_Charge_Their, 
	PM_Foul_Push_Our, PM_Foul_Push_Their, 
	PM_Foul_MultipleAttacker_Our, PM_Foul_MultipleAttacker_Their,
	PM_Foul_BallOut_Our, PM_Foul_BallOut_Their,
	
	// Added by (probably) Roztoce
	PM_GoalieCatch_Our, PM_GoalieCatch_Their, PM_Foul_Our, PM_Foul_Their,
	PM_HalfTime, PM_TimeUp, PM_TimeExtended,
	
	// Added by Stjupit Dox
	PM_FreeKickFault_Our, PM_FreeKickFault_Their,
	PM_BackPass_Our, PM_BackPass_Their,
    PM_CatchFault_Our, PM_CatchFault_Their,
    PM_IndFreeKick_Our, PM_IndFreeKick_Their, 

	// Maximum
	PM_MAX
};

#endif // COMMON_WORLD_TYPES_H
