Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Dec 14, 2005, 4:44:13 PM (18 years ago)
Author:
bensch
Message:

trunk: copied new power-ups

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/world_entities/power_ups/power_up.cc

    r5439 r6113  
    1010
    1111   ### File Specific:
    12    main-programmer: Benjamin Grauer
     12   main-programmer: Manuel Leuenberger
    1313   co-programmer: ...
    1414*/
     
    1818
    1919#include "power_up.h"
    20 
     20#include "extendable.h"
     21#include "primitive_model.h"
    2122
    2223using namespace std;
    2324
     25Model* PowerUp::sphereModel = NULL;
    2426
     27PowerUp::PowerUp(float r, float g, float b)
     28{
     29  if(!PowerUp::sphereModel) {
     30    PowerUp::sphereModel = new PrimitiveModel(PRIM_SPHERE, 7, 5);
     31  }
     32  this->sphereMaterial = new Material;
     33  this->sphereMaterial->setTransparency(.1);
     34  this->sphereMaterial->setDiffuse(r, g, b);
     35}
    2536
    26 PowerUp::PowerUp ()
     37PowerUp::~PowerUp ()
    2738{
    28   this->setClassID(CL_POWER_UP, "PowerUp");
    29 
     39  delete this->sphereMaterial;
    3040}
    3141
    3242
    33 
    34 PowerUp::~PowerUp () {}
     43void PowerUp::loadParams(const TiXmlElement* root)
     44{
     45  static_cast<WorldEntity*>(this)->loadParams(root);
     46}
    3547
    3648
    37 void PowerUp::loadParam(const TiXmlElement* root)
     49void PowerUp::collidesWith (WorldEntity* entity, const Vector& location)
    3850{
    39   static_cast<WorldEntity*>(this)->loadParams(root);
    40 
     51 if(entity->isA(CL_EXTENDABLE))
     52  {
     53    if(dynamic_cast<Extendable*>(entity)->pickup(this))
     54    {
     55      this->setVisibiliy(false);
     56    }
     57  }
    4158}
    4259
     60void PowerUp::draw() const
     61{
     62  WorldEntity::draw();
     63
     64  glMatrixMode(GL_MODELVIEW);
     65  glPushMatrix();
     66  float matrix[4][4];
     67
     68  /* translate */
     69  glTranslatef (this->getAbsCoor ().x,
     70                this->getAbsCoor ().y,
     71                this->getAbsCoor ().z);
     72  /* rotate */ // FIXME: devise a new Way to rotate this
     73  this->getAbsDir ().matrix (matrix);
     74  glMultMatrixf((float*)matrix);
     75
     76  this->sphereMaterial->select();
     77  sphereModel->draw();
     78
     79  glPopMatrix();
     80}
     81
     82const char* PowerUp::respawnTypes[] = {
     83  "none",
     84  "time"
     85};
     86
     87void PowerUp::setRespawnType(const char* type)
     88{
     89  for(int i = 0; i < RESPAWN_size; ++i) {
     90    if(strcmp(type, respawnTypes[i]) == 0) {
     91      this->respawnType = (PowerUpRespawn)i;
     92      break;
     93    }
     94  }
     95}
     96
Note: See TracChangeset for help on using the changeset viewer.