Source: src/bloc.h


Annotated List
Files
Globals
Hierarchy
Index
/***************************************************************************
    vim:tabstop=4
                          bloc.h  -  description
                             -------------------
    begin                : Sun Jul 1 2001
    copyright            : (C) 2001 by Francois Biot
    email                : fbiot@free.fr
 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   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.                                   *
 *                                                                         *
 ***************************************************************************/
#ifndef _bloc_
#define _bloc_

#include "glsolid.h"
#include "rectangle.h"
#include "couleur.h"

extern bool ModeLight;  
/** A bloc is defined with one rectangle : the road (top) one
 * (the road has a direction)
 * Notice that the resource file format does not define bocs
 * with their top rectangle, but by many front (mrf) ones !
 * See bloc.h in ascii/fixed fond width */
/*
 * c/b'_________d/a'   _
 * |\           \     |\         ^
 * | \          :\      \        | ->
 * |  \   r     : \      \       | n
 * |   \        :  \      \      |
 * |    \       :   \      \     
 * |     \    M      \      \     
 * |      \    R      \      \     
 * |    m r\f   T      \      \     
 * |        \           \      \     
 * |         \  :        \      \     
 * |   M      b_:_________\ a    \ -->   
 * |    R     | :    m    |        dir   
 * |c'_ _S_ _ |_:d'   r   |           
 *  \     1   |  \     s  |
 *   \        |         2 | 
 *    \       |           |
 *     \      |    \      |
 *      \     |    MRR    |
 *       \    |      \    |
 *        \   | mru       |
 *         \  |        \  |
 *          \ |           |
 *           \|__________\|	
 *
 *            
 *   Rectangles:
 *   	mrs1,mrs2	Side 1 & side2
 *   	mrt			top	( same as r used for constructor
 *   	mru			under
 *   	mrf			front
 *   	mrr			rear
 */
class bloc : public glsolid
{
public:

	// Constructor for a 0z bloc:
	// bloc that begins on the floor.
	
	bloc(	const CString	&sName,
			const rectangle	&r,
			const couleur	&cside,
			const rectangle	&rbot,
			bool bShowFront=false,
			bool bShowRear=false,
			bool bShowUnder=false,
			bool bVisible=true);

	// from glsurface
	virtual	void		Translate	(const vect &v);
	virtual void		Render		() const;
	virtual glsurface*	Duplicate	() const;

	/** Plan side returns
	  * >0 upside the plan
	  * = 0 cut or in the plan
	  * <0 downside the plan */
	virtual float		PlanSide	(const planesurf *face) const;
	virtual	planesurf*	Collision	(	const point	&ptStart,
										const vect	&vPath,
										point*		pptInter,
										glsolid*	&pSolid);
	virtual	void		SetColor	(const couleur& col)
									{
										mrs1.SetColor(col);
										mrt.SetColor(col);
										mrs2.SetColor(col);
									};	
	virtual	const vect&	Normal		() const;	

	/**
	 * This method return the point that
	 * is the mass center of the bloc
	 */
	virtual point		GPoint		() const;
	virtual bool		IsInside	(const point &) const;

	// New methods
	const vect	Direction()	const;

	bool	IsVisible()	 const 	{	return	!mbVisible;	 };
	
private:
	bloc(const bloc &cpy)	
		:
		glsolid		(cpy.GetName()),
		mrs1		(cpy.mrs1),
		mrt		(cpy.mrt),
		mrs2		(cpy.mrs2),
		mru		(cpy.mru),
		mrr		(cpy.mrr),
		mrf		(cpy.mrf),
		mbShowFront	(cpy.mbShowFront),
		mbShowRear	(cpy.mbShowRear),
		mbShowUnder	(cpy.mbShowUnder),
		mbVisible	(cpy.mbVisible)	{};

	rectangle mrs1;
	rectangle mrt;
	rectangle mrs2;

	rectangle mru;		// rectangle under
	rectangle mrr;		// rear
	rectangle mrf;		// front

	bool	mbShowFront;
	bool	mbShowRear;
	bool	mbShowUnder;
	bool	mbVisible;

};

#endif


Generated by: saturn on FrancoisLinux on Sun Feb 3 20:01:44 2002, using kdoc 2.0a53.