#ifndef __LEVELS_H__
#define __LEVELS_H__

#include "level.h"

// Level Type One (Levels 1,3,5,7)

class Level_TypeOne : public Level
{
    public:
	Level_TypeOne(int speed);
	virtual ~Level_TypeOne();

	virtual void Move();
	void Generate();
	virtual void ResetPos();
	virtual void Reset(int stage);

	const Level_TypeOne &operator=(const Level_TypeOne &src);

    private:
	float dir;
	int disty;
	int y_speed;
	int distx;
};

// Level Type Two (Levels 2,4)

class Level_TypeTwo : public Level
{
    public:
	Level_TypeTwo();
	virtual ~Level_TypeTwo();

	virtual void XWrap();
	virtual void Move();
	void Generate();
	virtual void ResetPos();
	virtual void Reset(int stage);

	const Level_TypeTwo &operator=(const Level_TypeTwo &src);

    private:
	float dir;
	int disty;
	int distx;
};

#endif __LEVELS_H__