#ifndef DROPZONE_INCLUDED
#define DROPZONE_INCLUDED

//
//	define a drop-zone, which can be used to over-ride
//	drop-behaviour for any card stacks which fall under it
//

class CardStack;

class DropZone
{
	friend class CardWindow;

	DropZone(int Id, RECT *rect, pDropZoneProc proc) :
	  id(Id), DropZoneCallback(proc) { CopyRect(&zone, rect); }

public:

	void SetZone(RECT *rect) { CopyRect(&zone, rect); }
	void GetZone(RECT *rect) { CopyRect(rect, &zone); }
	void SetCallback(pDropZoneProc callback) { DropZoneCallback = callback; }

	int  DropCards(CardStack &cardstack)
	{
		if(DropZoneCallback)
			return DropZoneCallback(id, cardstack);
		else
			return -1;
	}

private:

	int  id;
	RECT zone;
	pDropZoneProc DropZoneCallback;
};

#endif /* DROPZONE_INCLUDED */