#ifndef __MY_BUTTON__
#define __MY_BUTTON__

#module \
MyButton

#const SIZE_X	240
#const SIZE_Y	120

#const ZOOM	0.8

#defcfunc local \
New \
		int	p_posX,\
		int	p_posY,\
		int	p_bufferId,\
		label	p_onClicked
	posX.insNum = p_posX
	posY.insNum = p_posY
	bufferId.insNum = p_bufferId
	onClicked.insNum = p_onClicked
	touching.insNum = False

	exists.insNum = True

	insNum++

	Return insNum - 1

#deffunc local \
Destroy \
		int	p_insId
	exists.p_insId = False

	Return

#deffunc local \
Interval \
		int	p_insId,\
		local	l_id,\
		local	l_touchInfo
	MTList l_id

	If stat = 0 {
		touching.p_insId = False

		Return
	}

	If touching.p_insId {
		Return
	}

	MTInfo l_touchInfo, l_id.0

	touching.p_insId = True

	If l_touchInfo.1 < posX.p_insId - ZOOM * SIZE_X / 2 {
		Return
	}

	If l_touchInfo.1 >= posX.p_insId + ZOOM * SIZE_X / 2 {
		Return
	}

	If l_touchInfo.2 < posY.p_insId - ZOOM * SIZE_Y / 2 {
		Return
	}

	If l_touchInfo.2 >= posY.p_insId + ZOOM * SIZE_Y / 2 {
		Return
	}

	GoSub onClicked.p_insId

	Return

#deffunc local \
Draw
	Repeat insNum
		If exists.cnt = False {
			Continue
		}

		Pos posX.cnt, posY.cnt
		CelPut bufferId.cnt, 0, ZOOM, ZOOM
	Loop

	Interval

	Return

#global

#endif	; not __MY_BUTTON__

