/* ScummVM - Graphic Adventure Engine
 *
 * ScummVM is the legal property of its developers, whose names
 * are too numerous to list here. Please refer to the COPYRIGHT
 * file distributed with this source distribution.
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 *
 */

#ifndef GNAP_GROUP3_H
#define GNAP_GROUP3_H

#include "gnap/debugger.h"

namespace Gnap {

enum {
	kHS30Platypus		= 0,
	kHS30PillMachine	= 1,
	kHS30Device			= 2,
	kHS30ExitCircus		= 3,
	kHS30WalkArea1		= 4
};

enum {
	kHS31Platypus			= 0,
	kHS31MeasuringClown		= 1,
	kHS31BeerBarrel			= 2,
	kHS31Device				= 3,
	kHS31ExitCircus			= 4,
	kHS31ExitOutsideClown	= 5,
	kHS31WalkArea1			= 6
};

enum {
	kHS32Platypus	= 0,
	kHS32ExitTruck	= 1,
	kHS32Device		= 2,
	kHS32WalkArea1	= 3,
	kHS32WalkArea2	= 4,
	kHS32WalkArea3	= 5,
	kHS32WalkArea4	= 6,
	kHS32WalkArea5	= 7,
	kHS32WalkArea6	= 8,
	kHS32WalkArea7	= 9,
	kHS32WalkArea8	= 10
};

enum {
	kHS33Platypus	= 0,
	kHS33Chicken	= 1,
	kHS33Device		= 2,
	kHS33ExitHouse	= 3,
	kHS33ExitBarn	= 4,
	kHS33ExitCreek	= 5,
	kHS33ExitPigpen	= 6,
	kHS33WalkArea1	= 7,
	kHS33WalkArea2	= 8
};

enum {
	kHS38Platypus		= 0,
	kHS38ExitHouse		= 1,
	kHS38ExitCave		= 2,
	kHS38TrapDoorLid1	= 3,
	kHS38TrapDoorLid2	= 4,
	kHS38HuntingTrophy	= 5,
	kHS38WalkArea1		= 6,
	kHS38Device			= 7,
	kHS38WalkArea2		= 8,
	kHS38WalkArea3		= 9,
	kHS38WalkArea4		= 10,
	kHS38WalkArea5		= 11,
	kHS38WalkArea6		= 12
};

enum {
	kHS39Platypus			= 0,
	kHS39ExitInsideHouse	= 1,
	kHS39ExitUfoParty		= 2,
	kHS39Sign				= 3,
	kHS39Device				= 4,
	kHS39WalkArea1			= 5,
	kHS39WalkArea2			= 6
};

enum {
	kAS30LeaveScene			= 0,
	kAS30UsePillMachine		= 1,
	kAS30UsePillMachine2	= 2,
	kAS30LookPillMachine	= 3,
	kAS30UsePillMachine3	= 4,
	kAS30UsePillMachine4	= 5
};

enum {
	kAS31UseBeerBarrel					= 1,
	kAS31FillEmptyBucketWithBeer		= 2,
	kAS31FillEmptyBucketWithBeerDone	= 3,
	kAS31PlatMeasuringClown				= 4,
	kAS31UseMeasuringClown				= 5,
	kAS31LeaveScene						= 6
};

enum {
	kAS32LeaveScene	= 0
};

enum {
	kAS33LeaveScene		= 0,
	kAS33TalkChicken	= 1,
	kAS33UseChicken		= 2,
	kAS33UseChickenDone	= 3
};

enum {
	kAS38LeaveScene					= 0,
	kAS38ExitCave					= 1,
	kAS38UseHuntingTrophy			= 2,
	kAS38HoldingHuntingTrophy		= 3,
	kAS38ReleaseHuntingTrophy		= 4,
	kAS38UsePlatypusWithTrapDoor	= 5,
	kAS38PlatypusHoldingTrapDoor	= 6
};

enum {
	kAS39LeaveScene	= 0
};

/*****************************************************************************/

class GnapEngine;
class CutScene;

class Scene30: public Scene {
public:
	Scene30(GnapEngine *vm);
	virtual ~Scene30() {}

	virtual int init();
	virtual void updateHotspots();
	virtual void run();
	virtual void updateAnimations();
	virtual void updateAnimationsCb() {};

private:
	int _kidSequenceId;
};

class Scene31: public Scene {
public:
	Scene31(GnapEngine *vm);
	virtual ~Scene31() {}

	virtual int init();
	virtual void updateHotspots();
	virtual void run();
	virtual void updateAnimations();
	virtual void updateAnimationsCb() {};

private:
	bool _beerGuyDistracted;
	int _currClerkSequenceId;
	int _nextClerkSequenceId;
	int _clerkMeasureCtr;
	int _clerkMeasureMaxCtr;
};

class Scene32: public Scene {
public:
	Scene32(GnapEngine *vm);
	virtual ~Scene32() {}

	virtual int init();
	virtual void updateHotspots();
	virtual void run();
	virtual void updateAnimations();
	virtual void updateAnimationsCb() {};
};

class Scene33: public Scene {
public:
	Scene33(GnapEngine *vm);
	virtual ~Scene33() {}

	virtual int init();
	virtual void updateHotspots();
	virtual void run();
	virtual void updateAnimations();
	virtual void updateAnimationsCb() {};

private:
	int _currChickenSequenceId;
	int _nextChickenSequenceId;
};

class Scene38: public Scene {
public:
	Scene38(GnapEngine *vm);
	virtual ~Scene38() {}

	virtual int init();
	virtual void updateHotspots();
	virtual void run();
	virtual void updateAnimations();
	virtual void updateAnimationsCb() {};
};

class Scene39: public Scene {
public:
	Scene39(GnapEngine *vm);
	virtual ~Scene39() {}

	virtual int init();
	virtual void updateHotspots();
	virtual void run();
	virtual void updateAnimations();
	virtual void updateAnimationsCb() {};

private:
	int _currGuySequenceId;
	int _nextGuySequenceId;
};

} // End of namespace Gnap

#endif // GNAP_GROUP3_H