Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/branches/playability/src/world_entities/weapons/medium_blaster.cc @ 10022

Last change on this file since 10022 was 9998, checked in by marcscha, 18 years ago

multiple weapons, crosshair visibility → changelog

File size: 2.8 KB
Line 
1#include "medium_blaster.h"
2#include "world_entities/projectiles/projectile.h"
3
4#include "world_entity.h"
5#include "static_model.h"
6#include "weapon_manager.h"
7#include "util/loading/factory.h"
8
9#include "animation3d.h"
10
11#include "loading/fast_factory.h"
12
13CREATE_FACTORY(MediumBlaster);
14/**
15 * Standard constructor
16 */
17MediumBlaster::MediumBlaster ()
18 : Weapon()
19{
20    this->init();
21}
22
23MediumBlaster::MediumBlaster (const TiXmlElement* root = NULL)
24 : Weapon()
25{
26    this->init();
27    if (root != NULL)
28      this->loadParams(root);
29}
30
31/**
32 * Default destructor
33 */
34MediumBlaster::~MediumBlaster()
35{
36      // model will be deleted from WorldEntity-destructor
37}
38
39void MediumBlaster::loadParams(const TiXmlElement* root)
40{
41  Weapon::loadParams(root);
42}
43
44void MediumBlaster::init()
45{
46  //this->registerObject(this, MediumBlaster::_objectList);
47
48//  this->model = (Model*)ResourceManager::getInstance()->load("models/guns/test_gun.obj", OBJ, RP_CAMPAIGN);
49
50  this->loadModel("models/guns/plasmadriver_#.obj", 1.0);
51 
52
53  this->setStateDuration(WS_SHOOTING, 0.1);   // 10 Schuss pro Sekunde
54
55  this->setStateDuration(WS_RELOADING, 0);
56  this->setStateDuration(WS_ACTIVATING, .5);
57  this->setStateDuration(WS_DEACTIVATING, 1);
58
59  this->setEnergyMax(500);
60  this->increaseEnergy(500);
61  //this->minCharge = 2;
62
63  this->setActionSound(WA_SHOOT, "sound/laser.wav");
64  this->setActionSound(WA_ACTIVATE, "sound/voices/lasers.wav");
65  this->setActionSound(WA_RELOAD, "sound/spawn/alien_generator.wav");
66
67  this->setCapability(WTYPE_ALLDIRS | WTYPE_DIRECTIONAL | WTYPE_LIGHT);
68  this->setProjectileTypeC("MBolt");   // FIXME temp project type until the blaste class exist
69  this->prepareProjectiles(20);
70
71  Animation3D* animation2 = this->getAnimation(WS_ACTIVATING, this);
72  Animation3D* animation3 = this->getAnimation(WS_DEACTIVATING, this);
73
74  animation2->setInfinity(ANIM_INF_CONSTANT);
75  animation3->setInfinity(ANIM_INF_CONSTANT);
76
77  this->setEmissionPoint(3.8, 1.2, 0);
78
79  animation2->addKeyFrame(Vector(0.0, -1.0, 0.0), Quaternion(), 0.3, ANIM_LINEAR, ANIM_NULL);
80  animation2->addKeyFrame(Vector(0.0, 0.0, 0.0), Quaternion(), 0.5, ANIM_LINEAR, ANIM_NULL);
81
82  animation3->addKeyFrame(Vector(0.0, 0.0, 0.0), Quaternion(), 0.5, ANIM_LINEAR, ANIM_NULL);
83  animation3->addKeyFrame(Vector(0.0, -1.0, 0.0), Quaternion(), 0.3, ANIM_LINEAR, ANIM_NULL);
84}
85
86
87void MediumBlaster::fire()
88{
89  Projectile* pj =  this->getProjectile();
90  if (pj == NULL)
91    return;
92
93  // set the owner
94  pj->setOwner(this->getOwner());
95
96  pj->setParent(PNode::getNullParent());
97
98  pj->setVelocity(this->getAbsDir().apply(Vector(1,0,0))*250 + VECTOR_RAND(5));
99
100  pj->setAbsCoor(this->getEmissionPoint());
101  pj->setAbsDir(this->getAbsDir());
102  pj->activate();
103}
104
105/**
106 *  this activates the weapon
107*/
108void MediumBlaster::activate()
109{
110}
111
112/**
113 *  this deactivates the weapon
114*/
115void MediumBlaster::deactivate()
116{
117}
118
119void MediumBlaster::draw() const
120{
121}
Note: See TracBrowser for help on using the repository browser.