Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/branches/playability/src/world_entities/projectiles/acid_splash.cc @ 10328

Last change on this file since 10328 was 10328, checked in by marcscha, 17 years ago

acid splash fix

File size: 3.4 KB
Line 
1/*
2   orxonox - the future of 3D-vertical-scrollers
3
4   Copyright (C) 2004-2006 orx
5
6   This program is free software; you can redistribute it and/or modify
7   it under the terms of the GNU General Public License as published by
8   the Free Software Foundation; either version 2, or (at your option)
9   any later version.
10
11   ### File Specific
12   main-programmer: Marc Schaerrer
13   co-programmer: Benjamin Grauer
14
15*/
16
17
18#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_WEAPON
19
20#include "acid_splash.h"
21
22#include "state.h"
23
24//#include "space_ships/space_ship.h"
25
26#include <cassert>
27#include "debug.h"
28
29//#include "static_model.h"
30
31#include "effects/wobblegrid.h"
32
33
34#include "class_id_DEPRECATED.h"
35ObjectListDefinition(AcidSplash);
36CREATE_FAST_FACTORY_STATIC(AcidSplash);
37
38/**
39 *  standard constructor
40*/
41AcidSplash::AcidSplash () : Projectile()
42{
43  this->registerObject(this, AcidSplash::_objectList);
44
45  srand(time(0));   //initialize Random Nomber Generator
46
47  //this->loadModel("models/projectiles/laser.obj");
48
49  this->setMinEnergy(1);
50  this->setHealthMax(0);
51  this->lifeSpan = 3.0;
52  this->angle     = 0;
53
54  this->grid = new Wobblegrid( 5);
55  this->grid->setParent( this);
56
57//  if (rand()/2 == 0) //!<Randomized Textrures
58    this->grid->setTexture( "maps/acid3.png");
59//   else
60//     this->grid->setTexture( "maps/blub.png");
61
62  this->grid->toList(OM_ENVIRON); //this->getOMListNumber());
63  //this->toList(OM_ENVIRON);
64}
65
66
67/**
68 *  standard deconstructor
69 *
70 */
71AcidSplash::~AcidSplash ()
72{
73  // delete this->emitter;
74  //delete this->grid;
75 
76  this->grid->toList(OM_DEAD);
77 
78}
79
80
81void AcidSplash::activate()
82{
83  this->unhide();
84  this->grid->setVisibiliy(true);
85
86  this->setPhysDamage(10);
87  this->setElecDamage(0);
88  this->setHealth(0);
89}
90
91
92void AcidSplash::deactivate()
93{
94  this->lifeCycle = 0.0;
95
96  this->hide();
97  this->grid->setVisibiliy(false);
98  this->toList(OM_DEAD);
99  this->removeNode();
100 
101  AcidSplash::fastFactory->kill(this);
102}
103
104/*
105void AcidSplash::collidesWith(WorldEntity* entity, const Vector& location)
106{
107
108  if (this->hitEntity != entity)
109    this->destroy( entity );
110  this->hitEntity = entity;
111  //dynamic_cast<SpaceShip*>(entity)->damage(this->getPhysDamage(),this->getElecDamage());
112  //this->destroy(this);
113  this->deactivate();
114 
115  return;
116
117  //dynamic_cast<SpaceShip*>(entity)->damage( this->getPhysDamage(), this->getElecDamage());
118  //entity->destroy(this);
119  //this->deactivate();
120}
121*/
122/**
123 *  signal tick, time dependent things will be handled here
124 * @param dt time since last tick
125*/
126void AcidSplash::tick (float dt)
127{
128  //Vector v = *this->flightDirection * ( this->speed * time * 1000 + 0.1);
129  Vector v = this->velocity * dt;
130  this->shiftCoor(v);
131
132  if (this->tickLifeCycle(dt))
133    this->deactivate();
134
135  this->angle += this->rotationSpeed * dt;
136
137  this->grid->tick(dt);
138
139  for( ObjectList<Playable>::const_iterator eIterator = Playable::objectList().begin(); eIterator !=Playable::objectList().end(); eIterator++)
140  {
141    if( ((*eIterator)->getOMListNumber() == (this->getOMListNumber() -1))  && ((*eIterator)->getAbsCoor() - this->getAbsCoor()).len() <= 8)
142    {
143      (*eIterator)->hit (this->getDamage(),this);
144      this->deactivate();
145    }
146  }
147
148}
149
150/**
151 *  the function gets called, when the projectile is destroyed
152*/
153void AcidSplash::destroy (WorldEntity* killer)
154{
155  this->deactivate();
156  Projectile::destroy( killer );
157  PRINTF(5)("DESTROY AcidSplash\n");
158  this->lifeCycle = .95; //!< @todo calculate this usefully.
159}
160
161
162void AcidSplash::draw () const
163{
164  this->grid->draw();
165}
Note: See TracBrowser for help on using the repository browser.