stk-code_catmod/src/collectable_manager.hpp
hikerstk 7ed846ca3e 1) Improved rockets and sparks for bullet physics
Parameters for rockets etc. can for now be
   set in data/*.projectile
2) Fixed bugs causing rockets not to explode (and
   potentialy start rotating)
3) Added (somewhat temporarily) some cheats to get
   rockets, homing missiles and sparks as F1/2/3
4) Fixed several memory leaks.
5) Fixed (very rare) occurring crash when deleting
   phsyics.
6) Started to remove non-bullet physics code
7) Bullet physics is now the default, and it
   can not be disabled anymore!!
Important note: 
From this revision on, non-bullet physics is NOT
supported anymore, and will (most likely) not
compile. For now a -DBULLET is still necessary (it
is added as default), but the code will be cleaned
up in the near future.


git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/trunk/supertuxkart@1325 178a84e3-b1eb-0310-8ba1-8eac791a3b58
2007-12-08 13:04:56 +00:00

73 lines
2.8 KiB
C++

// $Id$
//
// SuperTuxKart - a fun racing game with go-kart
// Copyright (C) 2006 Joerg Henrichs
//
// 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#ifndef HEADER_COLLECTABLEMANAGER_H
#define HEADER_COLLECTABLEMANAGER_H
#include "lisp/parser.hpp"
#include "lisp/lisp.hpp"
#ifdef BULLET
#include "btBulletDynamicsCommon.h"
#endif
class Material;
class ssgEntity;
// The anvil and parachute must be at the end of the enum, and the
// zipper just before them (see collectable::hitRedHerring).
enum CollectableType {COLLECT_NOTHING,
COLLECT_MISSILE, COLLECT_HOMING,
COLLECT_SPARK, COLLECT_ZIPPER,
COLLECT_PARACHUTE, COLLECT_ANVIL,
#ifdef USE_MAGNETS
COLLECT_MAGNET,
#endif
COLLECT_MAX};
class CollectableManager
{
protected:
Material* m_all_icons [COLLECT_MAX];
float m_all_max_distance[COLLECT_MAX]; // if a target is closer than this
float m_all_force_to_target[COLLECT_MAX]; // apply this force to move towards
// the target
float m_all_max_turn_angle[COLLECT_MAX]; // maximum turn angle for homing
ssgEntity* m_all_models[COLLECT_MAX];
btVector3 m_all_extends[COLLECT_MAX];
void LoadNode (const lisp::Lisp* lisp, int collectType);
public:
CollectableManager ();
void loadCollectables();
void removeTextures ();
void Load (int collectType, const char* filename);
Material* getIcon (int type) const {return m_all_icons [type]; }
ssgEntity* getModel (int type) const {return m_all_models[type]; }
float getForceToTarget(int type) const {return m_all_force_to_target[type]; }
float getMaxDistance (int type) const {return m_all_max_distance[type];}
float getMaxTurnAngle (int type) const {return m_all_max_turn_angle[type];}
#ifdef BULLET
const btVector3& getExtend (int type) const {return m_all_extends[type]; }
#endif
};
extern CollectableManager* collectable_manager;
#endif