/*
 * $Id: legoblocks.h,v 1.14 2002/07/19 20:33:28 msell Exp $
 *
 *
 * $Log: legoblocks.h,v $
 * Revision 1.14  2002/07/19 20:33:28  msell
 * #pragma once -> #ifndef
 *
 * Revision 1.13  2002/07/18 23:05:31  msell
 * Partikkelit ja kakkospelaajan liike
 *
 * Revision 1.12  2002/07/17 20:32:47  msell
 * Detail-optio toimii
 *
 * Revision 1.11  2002/07/16 17:16:34  msell
 * Fontit ja valikot
 *
 * Revision 1.10  2002/07/16 00:42:43  msell
 * Uusia skyboxeja ja areenan säätöä
 *
 * Revision 1.9  2002/07/15 20:32:35  msell
 * Uudet valot ja ulkoasun parantelua
 *
 * Revision 1.8  2002/07/15 15:22:08  msell
 * Parantelua
 *
 * Revision 1.7  2002/06/24 14:12:15  msell
 * Nyt toimii sphere -> mesh -törmäykset, ihan tosi
 *
 * Revision 1.6  2002/06/20 00:21:01  jkaarlas
 * materiaali- ja tekstuurihommia edistetty
 *
 * Revision 1.5  2002/06/17 20:49:04  msell
 * free -> SDL_FreeSurface
 *
 * Revision 1.4  2002/06/05 18:39:05  msell
 * Jotain pientä
 *
 * Revision 1.3  2002/06/05 15:00:41  msell
 * Palikoihin lisää detailia, facet jaetaan halutun kokosiin osiin
 *
 * Revision 1.2  2002/06/04 16:28:32  msell
 * #pragma once
 *
 * Revision 1.1  2002/06/03 23:06:38  msell
 * no message
 *
 *
 *
 *
 * $Date: 2002/07/19 20:33:28 $
 *
 */

#ifndef __LEGOBLOCKS_H_INCLUDED__
#define __LEGOBLOCKS_H_INCLUDED__

//#include "mesh.h"
#include "object.h"
#include "material.h"
#include "mesh.h"

#define BLOCKHEIGHT 0.4

class BasicBlock : public MeshObject{
private:
	int width, height, depth;

public:
	BasicBlock(int width, int height, int depth);

	void setColor(float red, float green, float blue);
};


class BasicBlockAppearance : public Appearance{
private:
	int width, height, depth;
	int gllist;

protected:
	bool usematerial;

public:
	float displacement[3];

	BasicBlockAppearance(int width, int height, int depth);
	
	virtual void prepare(void);
	virtual void draw(void);
};

void drawDetailRectangle(float width, float height);

extern int knobgllist;
extern int knobdetail;
void initKnob(void);
void createKnob(int knobsegments = -1);



class HeadAppearance : public Appearance{
private:
	int gllist;

public:
	HeadAppearance(void);

	void prepare(void);
	void draw(void);
};



#define FLOWER_RED 1
#define FLOWER_YELLOW 2
#define FLOWER_WHITE 3

class FlowerAppearance : public Appearance{
private:
	int gllist;
	int color1, color2, color3;

public:
	FlowerAppearance(int color1, int color2, int color3);

	void prepare(void);
	void draw(void);
};



class LampAppearance : public Appearance{
private:
	int gllist;

public:
	LampAppearance(void);

	void prepare(void);
	void draw(void);
};


#endif
