// Z3D_CONSTANTS.h: constants & enums
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_Z3D_CONSTANTS_H__3ADE1A0A_F343_43A2_B978_BEB6807C664A__INCLUDED_)
#define AFX_Z3D_CONSTANTS_H__3ADE1A0A_F343_43A2_B978_BEB6807C664A__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000



enum Z3D_CHR_ACTION
{
	// 전신동작
	Z3D_CA_WAIT = 0,	// 대기
	Z3D_CA_WALK,		// 걷기
	Z3D_CA_WALK_BACK,	// 뒤로걷기
	Z3D_CA_RUN,			// 달리기
	Z3D_CA_CASTING_BEGIN,	// 캐스팅시작
	Z3D_CA_CASTING_END,		// 캐스팅 끝
	Z3D_CA_DRINK_BEGIN,		// 마시기 시작
	Z3D_CA_DRINKING,		// 마시기
	Z3D_CA_DRINK_END,		// 마시기 끝
	Z3D_CA_EAT,				// 먹기
	Z3D_CA_USE,				// 아이템사용
	Z3D_CA_SLEEP_BEGIN,		// 잠들기(자기 시작)
	Z3D_CA_SLEEPING,		// 잠자기
	Z3D_CA_SLEEP_END,		// 잠에서 깨기(자기 끝)
	Z3D_CA_ATTACK_BEGIN,	// 공격 시작
	Z3D_CA_ATTACK_END,		// 공격 끝
	Z3D_CA_ATTACK2_BEGIN,	// 공격2 시작
	Z3D_CA_ATTACK2_END,		// 공격2 끝
	Z3D_CA_ATTACK3_BEGIN,	// 공격3 시작
	Z3D_CA_ATTACK3_END,		// 공격3 끝
	Z3D_CA_PARRIED,			// 패링당함
	Z3D_CA_WEAPON_PARRYING,	// 무기로 패링
	Z3D_CA_SHIELD_PARRYING,	// 방패로 패링
	Z3D_CA_ATTACKED_BEGIN,	// 공격당함 시작
	Z3D_CA_ATTACKED_END,	// 공격당함 끝
	Z3D_CA_CRITICAL_ATTACKED_BEGIN,	// 크리티컬 공격 시작
	Z3D_CA_CRITICAL_ATTACKED_END,	// 크리티컬 공격 끝
	Z3D_CA_STUN,			// 스턴
	Z3D_CA_DIE_BACK,		// 뒤로 자빠져 죽음
	Z3D_CA_DIE_FRONT,		// 앞으로 넘어져 죽음
	Z3D_CA_RESURRECT_BACK,	// 자빠진 상태에서 부활
	Z3D_CA_RESURRECT_FRONT,	// 엎어진 상태에서 부활
	Z3D_CA_PUT_IN_WEAPON,	// 무기를 집어넣는 동작
	Z3D_CA_RESTORE_HAND,	// 무기를 집어넣은 손을 대기동작으로 이동
	Z3D_CA_GRIP_WEAPON,		//	무기 꺼내기 중 손을 무기위치로 옮겨 쥐는동작까지
	Z3D_CA_TAKE_OUT_WEAPON,	// 무기가 손에 붙은(-_-;)후 대기동작으로 옮기기까지
	Z3D_CA_SIT_DOWN,		// 앉기
	Z3D_CA_GET_UP,			// 일어서기

	// 하체만 동작
	Z3D_CA_WAIT_LOWER,		// 대기
	Z3D_CA_WALK_LOWER,		// 걷기
	Z3D_CA_WALK_BACK_LOWER,	// 뒤로걷기
	Z3D_CA_RUN_LOWER,		// 달리기

	// 상체만 동작
	Z3D_CA_ATTACK_BEGIN_UPPER,
	Z3D_CA_ATTACK_END_UPPER,
	Z3D_CA_ATTACK2_BEGIN_UPPER,
	Z3D_CA_ATTACK2_END_UPPER,
	Z3D_CA_ATTACK3_BEGIN_UPPER,
	Z3D_CA_ATTACK3_END_UPPER,


	// 추가되거나 begin/end가 사라진 동작. 남자캐릭터 동작까지 수정 후 정리할것임
	Z3D_CA_ATTACKED,
	Z3D_CA_FALLDOWN,
	Z3D_CA_CAST_BEGIN,
	Z3D_CA_CASTING,
	Z3D_CA_CAST_END,
	Z3D_CA_CAST_RETURN,
	Z3D_CA_ATTACK,
	Z3D_CA_ATTACK_SIDE_LEFT,
	Z3D_CA_ATTACK_SIDE_RIGHT,
	Z3D_CA_ATTACK_ADVANCE,
	Z3D_CA_ATTACK_RETREAT,

	// 추가되었으나 아직 구현안된 동작들
	Z3D_CA_WALK_SIDE_LEFT,
	Z3D_CA_WALK_SIDE_RIGHT,
	Z3D_CA_RUN_SIDE_LEFT,
	Z3D_CA_RUN_SIDE_RIGHT,

	// skill motion
	Z3D_CA_BASH,
	

	Z3D_CA_MOTION_COUNT,	// 동작형 action류의 갯수 상한체크용(실제 사용 안함)

	// 비 동작형 action들(상태변경, 테스트용 등..)
	Z3D_CA_NOTIFY_HIT_BY_FIREBALL, // 파이어볼에 맞다.

	Z3D_CA_MOTION_FINISHED,	// 동작종료 notification(현재 사용안함)

	Z3D_CA_BEGIN_SET_PART,
	Z3D_CA_END_SET_PART,
	
	Z3D_CA_SET_HEAD_PART,	// 머리부분(투구) 파츠 세팅
	Z3D_CA_SET_BODY_PART,	// 몸체 파츠 세팅
	Z3D_CA_SET_HAND_PART,	// 손(장갑) 파츠 세팅
	Z3D_CA_SET_LEG_PART,	// 다리(바지) 파츠 세팅
	Z3D_CA_SET_FOOT_PART,	// 발(신발) 파츠 세팅

	Z3D_CA_SET_BATTLE_MODE,	// 전투모드로 전환
	Z3D_CA_SET_NORMAL_MODE,	// 일반모드(비전투모드)로 전환
	Z3D_CA_SET_SITDOWN_MODE,// 앉아있는 모드로 전환
	
	Z3D_CA_SET_LOD_LEVEL,	// LOD 레벨 설정
	
	Z3D_CA_WEAPON_TRAIL_ON,	// 검기 on
	Z3D_CA_WEAPON_TRAIL_OFF,// 검기 off

	Z3D_CA_WEAPON_FIRE_ON,	// 불칼 on
	Z3D_CA_WEAPON_FIRE_OFF,	// 불칼 off

	Z3D_CA_BODY_FLAME_ON,	// 전신에서 불꽃 on
	Z3D_CA_BODY_FLAME_OFF,	// 전신에서 불꽃 off

	Z3D_CA_EFFECT_HEALING,	// Healing effect
	Z3D_CA_EFFECT_CASTING,	// Casting effect
	Z3D_CA_EFFECT_BLEEDING,	// 피흘리기 effect
	Z3D_CA_EFFECT_FIREBALL,	// Fireball effect
	Z3D_CA_EFFECT_RESPAWN,	// Respawn
	Z3D_CA_EFFECT_LEVELUP,	// Level up

	Z3D_CA_SET_FACE_TYPE,	// 얼굴(면상) 종류 세팅
	Z3D_CA_SET_HAIR_STYLE,	// 헤어스타일 종류 세팅
	Z3D_CA_SET_DEFAULT_TYPE,// 기본형(옷 하나도 안 입혔을때 밑바탕 종류) 세팅
	
	Z3D_CA_TEST1,			// 테스트용 1,2,3 (사용안함)
	Z3D_CA_TEST2,
	Z3D_CA_TEST3,


	// 새로운 캐릭터 클래스용 actions
	Z3D_CA_SET_MOTION_SHEET,	// motion sheet
	Z3D_CA_ACT_MOTION,			// 새로운 동작
	Z3D_CA_SET_STATIC_SLOT,		// static slot(얼굴, 헤어스타일)세팅
	Z3D_CA_BEGIN_OUTFIT_SET,	// slot 세팅 시작(복장 설정)
	Z3D_CA_SET_OUTFIT_SLOT,		// slot 세팅
	Z3D_CA_END_OUTFIT_SET,		// slot 세팅 종료
	Z3D_CA_SET_WEAPON,			// 무기 세팅
	Z3D_CA_SET_SHIELD,			// 방패 세팅

	
	Z3D_CA_FORCE_DWORD = 0x7FFFFFFF
};

// 하체나 상체만 동작시키기 위한 파라미터(lParam1 에 적용)
#define Z3D_CA_BOTH 0
#define Z3D_CA_UPPER 1
#define Z3D_CA_LOWER 2


enum Z3D_CHR_NOTIFICATION
{
	Z3D_CN_NOTHING = 0,

	Z3D_CN_HIT_BY_FIREBALL,

	Z3D_CN_FORCE_DWORD = 0x7FFFFFFF
};


enum Z3D_CHR_TYPE
{
	// 남자 여자..
	Z3D_CT_MAN = 0, Z3D_CT_WOMAN,
		
	// unique NPC, monster 는 아래에 추가아~
	
	// monster~ (수정+추가분)
	Z3D_CT_MON_ELOYEE,
	Z3D_CT_MON_GOBLIN,
	Z3D_CT_MON_HIDDENEYE,
	Z3D_CT_MON_ORC,
	Z3D_CT_MON_GORGON,
	Z3D_CT_MON_FIELD,
	Z3D_CT_MON_BEAR,
	Z3D_CT_MON_DEADSUCKER,
	Z3D_CT_MON_YANG,
	Z3D_CT_MON_LIZARDMAN,
	Z3D_CT_MON_SKELETON,
	Z3D_CT_MON_ZOMBIE,
	Z3D_CT_MON_FRINCLE,
	Z3D_CT_MON_GOLEM,
	Z3D_CT_MON_CARRION,
	Z3D_CT_MON_PAWNPAWN,
	Z3D_CT_MON_AMPHIBIAN,
	Z3D_CT_MON_GOBLIN_WARRIOR,
	Z3D_CT_MON_DARK_WARRIOR,
	Z3D_CT_MON_LIZARDMAN_LEADER,
	Z3D_CT_MON_SKELETON_WARRIOR,
	Z3D_CT_MON_SLUG,
	Z3D_CT_MON_CHULPAWN,
	
	Z3D_CT_MON_GIANT_SPIDER,
	Z3D_CT_MON_NIGHT_WOLF,
	Z3D_CT_MON_WOLF,
	Z3D_CT_MON_ZOMBIE_DOG,
	Z3D_CT_MON_KILLER_BEETLE,
	Z3D_CT_MON_GRUB,
	Z3D_CT_MON_FLOATING_RAY,
	Z3D_CT_MON_BRUTAL_TRIBE,
	Z3D_CT_MON_THAITIG,
	Z3D_CT_MON_TROLL,
	Z3D_CT_MON_SEA_MAN,
	Z3D_CT_MON_GIANT_SQUIRREL,
	Z3D_CT_MON_DIRE_SQUIRREL,


	// NPC
	Z3D_CT_NPC_M_01,
	Z3D_CT_NPC_M_02,
	Z3D_CT_NPC_M_03,
	Z3D_CT_NPC_M_04,
	Z3D_CT_NPC_M_05,
	Z3D_CT_NPC_M_06,
	Z3D_CT_NPC_M_07,
	Z3D_CT_NPC_M_08,
	Z3D_CT_NPC_M_09,
	Z3D_CT_NPC_M_10,
	Z3D_CT_NPC_M_11,
	Z3D_CT_NPC_M_12,
	Z3D_CT_NPC_M_13,

	Z3D_CT_NPC_M_14,
	Z3D_CT_NPC_M_15,
	Z3D_CT_NPC_M_16,


	Z3D_CT_NPC_W_01,
	Z3D_CT_NPC_W_02,
	Z3D_CT_NPC_W_03,
	Z3D_CT_NPC_W_04,
	Z3D_CT_NPC_W_05,

	Z3D_CT_NPC_W_06,

	Z3D_CT_NPC_DONKEY,

	Z3D_CT_PC_AKHAN_A,
	
	Z3D_CT_FORCE_DWORD = 0x7FFFFFFF
};


enum Z3D_CHR_HAIR_STYLE
{
	Z3D_CHS_NONE = 0,	// 대머리 있냐-_-? .... 있구나-_-;;
	Z3D_CHS_LONG1,
	Z3D_CHS_LONG2,
	Z3D_CHS_LONG3,
	Z3D_CHS_LONG4,
	Z3D_CHS_LONG5,
	
	Z3D_CHS_SHORT1,
	Z3D_CHS_SHORT2,
	Z3D_CHS_SHORT3,
	Z3D_CHS_SHORT4,
	
	Z3D_CHS_TYPE1,
	Z3D_CHS_TYPE2,
	Z3D_CHS_TYPE3,
	Z3D_CHS_TYPE4,
	Z3D_CHS_TYPE5,
	Z3D_CHS_TYPE6,
	Z3D_CHS_TYPE7,
	Z3D_CHS_TYPE8,
	Z3D_CHS_TYPE9,
	
	Z3D_CHS_FORCE_DWORD = 0x7FFFFFFF
};


enum Z3D_CHR_FACE_TYPE
{
	Z3D_CFT_TYPE1 = 0,
	Z3D_CFT_TYPE2,
	Z3D_CFT_TYPE3,
	Z3D_CFT_TYPE4,
	Z3D_CFT_TYPE5,
	Z3D_CFT_TYPE6,
	Z3D_CFT_TYPE7,
	Z3D_CFT_TYPE8,
	Z3D_CFT_TYPE9,
	Z3D_CFT_TYPE10,
	
	Z3D_CFT_FORCE_DWORD = 0x7FFFFFFF
};

enum Z3D_CHR_DEFAULT_TYPE
{
	Z3D_CDT_TYPE1 = 0,
	Z3D_CDT_TYPE2,
	Z3D_CDT_TYPE3,
	/*Z3D_CDT_TYPE4,
	Z3D_CDT_TYPE5,
	Z3D_CDT_TYPE6,*/

	Z3D_CDT_FORCE_DWORD = 0x7FFFFFFF
};


enum Z3D_CHR_SKELETONPART
{
	Z3D_SP_NONE = 0,

	Z3D_SP_HEAD,

	Z3D_SP_NECK,
	Z3D_SP_CHEST,
	Z3D_SP_WAIST,
	Z3D_SP_PELVIS,
		
	Z3D_SP_R_HAND,
	Z3D_SP_R_FOREARM,
	Z3D_SP_R_UPPERARM,
	Z3D_SP_R_THIGH,
	Z3D_SP_R_CALF,
	Z3D_SP_R_FOOT,
	
	Z3D_SP_L_HAND,
	Z3D_SP_L_FOREARM,
	Z3D_SP_L_UPPERARM,
	Z3D_SP_L_THIGH,
	Z3D_SP_L_CALF,
	Z3D_SP_L_FOOT
};


enum Z3D_CHR_EQUIPMENT
{
	Z3D_CE_NONE = 0,
	Z3D_CE_ARBALEST,
	Z3D_CE_BATTLE_AXE,
	Z3D_CE_BROAD_SWORD,
	Z3D_CE_BUCKLER,
	Z3D_CE_CLAYMORE,
	Z3D_CE_COMPOSITE_BOW,
	Z3D_CE_CROSSBOW,
	Z3D_CE_CUTLAS,
	Z3D_CE_DART,
	Z3D_CE_DOUBLE_BLADED_AXE,
	Z3D_CE_FALCHION,
	Z3D_CE_GREAT_AXE,
	Z3D_CE_GREAT_SWORD,
	Z3D_CE_HAND_AXE,
	Z3D_CE_HEAVY_CROSSBOW,
	Z3D_CE_KITE_SHIELD,
	Z3D_CE_KNIFE,
	Z3D_CE_LONG_SPEAR,
	Z3D_CE_LONG_SWORD,
	Z3D_CE_LONGBOW,
	Z3D_CE_MACE,
	Z3D_CE_MILITARY_FORK,
	Z3D_CE_MORNING_STAR,
	Z3D_CE_PUNCHING_DAGGER,
	Z3D_CE_QUARTER_STAFF,
	Z3D_CE_RAPIER,
	Z3D_CE_SABER,
	Z3D_CE_SHARPEN_AXE,
	Z3D_CE_SHORT_SPEAR,
	Z3D_CE_SHORT_SWORD,
	Z3D_CE_SLING,
	Z3D_CE_STAFF,
	Z3D_CE_THROWING_DAGGER,
	Z3D_CE_TOWER_SHIELD,
	Z3D_CE_TRIDENT,
	Z3D_CE_TWO_HANDED_SWORD,
	Z3D_CE_VIKING_SWORD,
	Z3D_CE_WAR_HAMMER,
	
	Z3D_CE_COUNT,		// enumerator to count the number
	
	Z3D_CE_FORCE_DWORD = 0x7FFFFFFF
};


enum Z3D_CHR_OUTFIT // head, body, hand, leg, foot 다섯가지로 나눠짐
{
	// 기본형... 다중겹침부위(body나 leg)의 경우 '없음'을 나타내기도 한다.
	Z3D_CO_DEFAULT = 0,  // head, body, hand, leg, foot 모두에 사용가능
		
	Z3D_CO_DEFAULT_BODY, // 캐릭터모델 내부 기재에는 사용되지 않으나, 저장용 인덱스로 사용(?)
	Z3D_CO_DEFAULT_HAND,
	Z3D_CO_DEFAULT_LEG,
	Z3D_CO_DEFAULT_FOOT,
	
	// head - 헬멧 타입(없을 경우 머리카락드러냄..맞겠지-_-? )
	Z3D_CO_LEATHER_HELMET,
	Z3D_CO_CHAIN_HELMET,
	Z3D_CO_KNIGHT_HELM,
	Z3D_CO_FULL_HELM,
	Z3D_CO_OPEN_HELM,
	Z3D_CO_CLOSED_HELM,
	
	// body
	Z3D_CO_LEATHER_SHIRTS,
	Z3D_CO_CHAIN_SHIRTS,
	Z3D_CO_SCALE_MAIL,
	Z3D_CO_LEATHER_TUNIC,
	Z3D_CO_CHAIN_TUNIC,
	Z3D_CO_PLATE_MAIL,
	Z3D_CO_SCALE_BREAST,
	Z3D_CO_PLATE_BREAST,

	Z3D_CO_SHIRTS_A, // 날림추가 제멋대로 작명 셔츠->기본형에서 옮겨옴
	Z3D_CO_SHIRTS_B,
	Z3D_CO_SHIRTS_C,

	
	// hand	
	Z3D_CO_LEATHER_GLOVE,
	Z3D_CO_CHAIN_GLOVE,
	Z3D_CO_GAUNTLET,
	
	// leg
	Z3D_CO_TROUSERS,
	Z3D_CO_CHAIN_TROUSERS,
	Z3D_CO_PLATE_TROUSERS,
	Z3D_CO_PLATE_TROUSERS2,
	
	// foot	
	Z3D_CO_CHAIN_BOOTS,
	Z3D_CO_LEATHER_BOOTS,
	Z3D_CO_PLATE_BOOTS,
	
	//enumerator to count total available enum.s
	Z3D_CO_COUNT,
	
	Z3D_CO_FORCE_DWORD = 0x7FFFFFFF
};





#endif // !defined(AFX_Z3D_CONSTANTS_H__3ADE1A0A_F343_43A2_B978_BEB6807C664A__INCLUDED_)
