#ifndef _Man_h_INCLUDED_
#define _Man_h_INCLUDED_

typedef struct _Man * Man;

#include <stdio.h>

#include "player.h"
#include "dsp.h"
#include "map.h"
#include "monster.h"

/* 拳銃の所持状態 */
#define MAN_NO_GUN    0 /* 拳銃を持っていない状態         */
#define MAN_REVOLVER  1 /* リボルバー所持状態             */
#define MAN_AUTOMATIC 2 /* オートマチックピストル所持状態 */
#define MAN_RIFLE     3 /* ライフル所持状態               */

/* スピード・ローダーの所持状態 */
#define MAN_NO_SPEED_LOADER 0 /* スピード・ローダー非所持状態 */
#define MAN_SPEED_LOADER    1 /* スピード・ローダー所持状態   */

/* 人の向き */
#define MAN_LEFT  0 /* 左向き */
#define MAN_UP    1 /* 上向き */
#define MAN_RIGHT 2 /* 右向き */
#define MAN_DOWN  3 /* 下向き */

/* 人の状態 */
#define MAN_STATUS_STAND 0 /* 普通に立っている状態 */
#define MAN_STATUS_SHOOT 1 /* 射撃状態 */
#define MAN_STATUS_RIFLE 2 /* ライフル射撃状態 */

/*===========================================================================*/
/* オブジェクトの値の取得                                                    */
/*===========================================================================*/

int Man_GetX(Man man);
int Man_GetY(Man man);
int Man_GetDir(Man man);
Player Man_GetPlayer(Man man);

/*===========================================================================*/
/* オブジェクトの生成と削除                                                  */
/*===========================================================================*/

/*---------------------------------------------------------------------------*/
/* 生成                                                                      */
/*---------------------------------------------------------------------------*/

Man Man_Create(Man man, Player player, Disp disp, Map map,
	       int x, int y, int dir);

/*---------------------------------------------------------------------------*/
/* 削除                                                                      */
/*---------------------------------------------------------------------------*/

Man Man_Destroy(Man man);

/*---------------------------------------------------------------------------*/
/* 配置                                                                      */
/*---------------------------------------------------------------------------*/

int Man_Locate(Man man, Map map, int x, int y, int dir, int status);

/*---------------------------------------------------------------------------*/
/* 移動                                                                      */
/*---------------------------------------------------------------------------*/

int Man_Move(Man man, Map map, int dir);

/*---------------------------------------------------------------------------*/
/* 弾込め                                                                    */
/*---------------------------------------------------------------------------*/

int Man_Reload(Man man);
int Man_Load(Man man, Map map);

/*---------------------------------------------------------------------------*/
/* 射撃                                                                      */
/*---------------------------------------------------------------------------*/

int Man_Shoot(Man man, Map map, int monster_number, Monster monsters[]);

#endif

/* End of File. */
