#pragma once

#include "Lexer.h"

/// 스킨 토큰 타입
enum
{
	/// 이미지
	eTOKEN_IMAGES = 100,

	/// 스킨 파일
	eTOKEN_SKINFILES,

	/// 속성 파일
	eTOKEN_PROPERTYFILES,

	/// UI 텍스트 적용 
	eTOKEN_TEXT,

	/// UI 사운드
	eTOKEN_OPENSOUND,
	eTOKEN_CLOSESOUND,
	eTOKEN_DOWNSOUND,
	eTOKEN_UPSOUND,
	eTOKEN_ONSOUND,
	eTOKEN_OFFSOUND,

	/// UI 노드
	eTOKEN_WINDOW,
	eTOKEN_BUTTON,
	eTOKEN_CHECKBOX,
	eTOKEN_LABEL,
	eTOKEN_EDITBOX,
	eTOKEN_LISTBOX,
	eTOKEN_SCROLLBAR,
	eTOKEN_BARBUTTON,
	eTOKEN_COMBOBOX,
	eTOKEN_GAUGE,
	eTOKEN_GAUGETB,
	eTOKEN_DOUBLEGAUGE,
	eTOKEN_TEXTBOX,
	eTOKEN_MESSAGEBOX,
	eTOKEN_TABWINDOW,
	eTOKEN_SPINBOX,
	eTOKEN_ICON,
	eTOKEN_PUSHBUTTON,
	eTOKEN_RADIOBUTTON,
	eTOKEN_TABBUTTON,
	eTOKEN_TABSHEET,
	eTOKEN_MULTIEDITBOX,
	eTOKEN_OPTIONGAUGE,
	eTOKEN_LISTFOLDERBOX,


	/// UI Property
	eTOKEN_SKINNAME,
	eTOKEN_PARENT,
	eTOKEN_PROPERTY_WINDOW,
	eTOKEN_PROPERTY_LABEL,
	eTOKEN_PROPERTY_COMBOBOX,
	eTOKEN_PROPERTY_BUTTON,
	eTOKEN_PROPERTY_EDITBOX,
	eTOKEN_PROPERTY_LISTBOX,
	eTOKEN_PROPERTY_SCROLLBAR,
	eTOKEN_PROPERTY_BARBUTTON,
	eTOKEN_PROPERTY_SPINBOX,
	eTOKEN_PROPERTY_GAUGE,
	eTOKEN_PROPERTY_GAUGETB,
	eTOKEN_PROPERTY_DOUBLEGAUGE,
	eTOKEN_PROPERTY_TEXTBOX,
	eTOKEN_PROPERTY_CHECKBOX,
	eTOKEN_PROPERTY_TABWINDOW,
	eTOKEN_PROPERTY_TABBUTTON,
	eTOKEN_PROPERTY_PUSHBUTTON,
	eTOKEN_PROPERTY_NUMBEREDIT,
	eTOKEN_PROPERTY_RADIOBUTTON,
	eTOKEN_PROPERTY_TABSHEET,
	eTOKEN_PROPERTY_MULTIEDITBOX,
	eTOKEN_PROPERTY_OPTIONGAUGE,
	eTOKEN_PROPERTY_FRIENDLISTBOX,
	eTOKEN_PROPERTY_LISTFOLDERBOX,

	/// UI 노드 속성
	eTOKEN_IMAGEINDEX,
	eTOKEN_POS,
	eTOKEN_SIZE,
	eTOKEN_TEXPOS,
	eTOKEN_TEXSIZE,
	eTOKEN_HOVERTIPINDEX,
	eTOKEN_TRUE,
	eTOKEN_FALSE,
		
	/// 
	eTOKEN_MOVABLE,

	/// 체크박스만의 속성
	eTOKEN_CHECKED,
	eTOKEN_CHECKPOS,
	eTOKEN_NOCHECKPOS,

	/// 윈도우만의 속성
	eTOKEN_ALPHA,
	eTOKEN_CAPTIONXY,
	eTOKEN_CAPTIONWH,
	eTOKEN_HOLDVIEW,

	/// 텍스트박스만의 속성
	eTOKEN_SCROLLBAR_RIGHTPOS,
		
	/// 게이지 속성 
	eTOKEN_LOW,
	eTOKEN_MIDDLE,
	eTOKEN_HIGH,
    
	/// 게이지바만의 속성
	eTOKEN_LABELSKIN,
	eTOKEN_GAUGE_SPEED,
	eTOKEN_SHOW_LABEL_PERCENT,
	eTOKEN_SHOW_TEXT,

	eTOKEN_GAUGEIMAGEINDEX,
	eTOKEN_GAUGEPOS,
	eTOKEN_GAUGESIZE,
	eTOKEN_GAUGETEXPOS,
	eTOKEN_GAUGEWIDTH,
	eTOKEN_GAUGEHEIGTH,
	eTOKEN_GAUGESTART,

	eTOKEN_GAUGEIMAGEINDEX_DEST,
	eTOKEN_GAUGEPOS_DEST,
	eTOKEN_GAUGESIZE_DEST,
	eTOKEN_GAUGETEXPOS_DEST,
	eTOKEN_GAUGEWIDTH_DEST,
	eTOKEN_GAUGEHEIGTH_DEST,
	eTOKEN_GAUGESTART_DEST,

	/// 텍스트 류의 정렬 
	eTOKEN_TEXT_ALIGN,
	eTOKEN_LEFT,
	eTOKEN_RIGHT,
	eTOKEN_CENTER,

	/// 아이콘 분할 이미지
	eTOKEN_ICON_SIZE,

	/// 에디트 만의 속성 
	eTOKEN_EDITKIND,
	eTOKEN_EDITMAXLEN,
	eTOKEN_EDITPOS,
	eTOKEN_EDITWIDTH,

	/// 스크롤바만의 속성
	eTOKEN_BARBUTTONSKIN,
	eTOKEN_UPBUTTONSKIN,
	eTOKEN_DOWNBUTTONSKIN,

	/// 텍스트박스만의 속성
	eTOKEN_SCROLLSKIN,

	/// 콤보박스만의 속성
	eTOKEN_EDITSKIN,
	eTOKEN_LISTSKIN,
	eTOKEN_BUTTONSKIN,

	/// 스핀박스만의 속성
	eTOKEN_LEFTBUTTON,
	eTOKEN_RIGHTBUTTON,
	eTOKEN_ROTATION,

	/// 리스트박스만의 속성
	eTOKEN_ROWHEIGHT,
	eTOKEN_MAXITEMNUM,
	eTOKEN_IMGCOLX,
	eTOKEN_COLUMNX,
	eTOKEN_SELECTWIDTH,
	eTOKEN_PRINTPOS,
	eTOKEN_PRINTSIZE,
	
	/// 메시지박스만의 속성
	eTOKEN_OKBUTTONSKIN, 
	eTOKEN_YESBUTTONSKIN,
	eTOKEN_NOBUTTONSKIN,

	/// 버튼의 속성
	eTOKEN_UPPOS,
	eTOKEN_UPOVERPOS,
	eTOKEN_DOWNPOS,
	eTOKEN_DOWNOVERPOS,
	eTOKEN_ENABLEPOS,
	eTOKEN_USEENABLE,
	eTOKEN_UPSIZE,
	eTOKEN_DOWNSIZE,
	eTOKEN_UPCOLOR,
	eTOKEN_DOWNCOLOR,

	/// 라디오 버튼의 속성
	eTOKEN_GROUPNUM,
    
	/// 부모가 자식의 속성을 스크립트에서 같이 가지는경우
	eTOKEN_CHILD_IMAGEINDEX,
	eTOKEN_CHILD_POS,
	eTOKEN_CHILD_TEXPOS,
	eTOKEN_CHILD_SIZE,

	/// buff window 에서 사용할 속성값
	eTOKEN_BUFF_SPACE,
	eTOKEN_BUFF_ROW,
	eTOKEN_BUFF_COLUMN,
	eTOKEN_BUFF_SCALE,
};

/// 스킨 어휘 분석기
class cUISkinLexer : public cLexer
{
public:
	cUISkinLexer( const char* pbuffer, unsigned int size );
};
