source: GTP/trunk/App/Games/Jungle_Rumble/src/Goodie.cpp @ 1378

Revision 1378, 5.1 KB checked in by giegl, 18 years ago (diff)

GTPD - Jungle Rumble - integrate into GTP SVN structure

Line 
1#include "dxstdafx.h"
2#include ".\goodie.h"
3#include "GameScene.h"
4#include "Terrain.h"
5#include "SoundNode.h"
6#include "UserContactReport.h"
7#include <string>
8
9Goodie::Goodie(void) : Object3d(){
10        this->lifeTime = 0;
11        this->filename = "";
12        this->nodeType |= GameScene::NODE_GOODIE;
13}
14
15Goodie::~Goodie(void) {
16}
17
18void Goodie::setGoodieType(int _type) {
19        this->goodieType = _type;
20        this->firstTime = true;
21        /*this->scheibe = this->sMgr->createFlaeche(*this);
22        this->scheibe->setPosition(0, -15, 0);
23        this->scheibe->setDimension(50, 50);
24        this->scheibe->setRotation(-90, 0, 0);
25        this->scheibe->setTextureName("./media/textures/goodieScheibe.bmp");*/
26}
27
28int Goodie::getGoodieType() {
29        return this->goodieType;
30}
31
32void Goodie::loadGoodieMesh()
33{
34        std::string s;
35        if(this->filename.compare("")==0) {
36                switch(this->goodieType) {
37                        case(Goodie::GOODIE_HEALTH):
38                                this->loadMeshFromFile("./media/models/medipack.x");
39                                break;
40                        case(Goodie::GOODIE_WEAPON):
41                                s="./media/models/waffe";
42                                switch(this->weaponType) {
43                                        case 0: s+= "1.x"; break;
44                                        case 1: s+= "2.x"; break;
45                                        case 2: s+= "3.x"; break;
46                                        case 3: this->myScene->manager->printToConsole("Kein Modell für Flammenwerfer spezifiziert...verwende waff1!");
47                                                s="./media/models/waffe1.x";
48                                                break;
49                                        default: this->myScene->manager->printToConsole("If you use a weapontype > 3 you must specify a xfile!"); break;
50                                }
51                                this->loadMeshFromFile(s);
52                                break;
53                        case(Goodie::GOODIE_AMO):
54                                s="./media/models/munpack";
55                                switch(this->weaponType) {
56                                        case 0: s+= "1.x"; break;
57                                        case 1: s+= "2.x"; break;
58                                        case 2: s+= "3.x"; break;
59                                        case 3: this->myScene->manager->printToConsole("Kein Modell für Flammenwerfermunition spezifiziert...verwende munpack1!");
60                                                s="./media/models/munpack1.x";
61                                                break;
62                                        default: this->myScene->manager->printToConsole("If you use a amotype > 3 you must specify a xfile!"); break;
63                                }
64                                this->loadMeshFromFile(s);
65                                break;
66                }
67        } else {
68                this->loadMeshFromFile(this->filename);
69        }
70}
71
72void Goodie::init()
73{
74        if(this->pActor==NULL) {
75                NxSphereShapeDesc sphereDesc;
76                Vector dist = this->maxAABBox - this->minAABBox;
77                sphereDesc.radius = max(dist.x, max(dist.y, dist.z));
78               
79                this->pActorDesc.shapes.pushBack(&sphereDesc);
80                this->setBehaveAs(Node::KINEMATIC);
81                this->setColDetGroup(UserContactReport::COLGROUP_GOODIE);
82        } else {
83                this->setColDetGroup(UserContactReport::COLGROUP_GOODIE);
84        }
85        this->pActor->getShapes()[0]->setFlag(NX_SF_DISABLE_RAYCASTING, true);
86}
87
88void Goodie::setHealthAmount(float _healthAmount) {
89        this->healthAmount = _healthAmount;
90        /*if(this->filename.compare("")==0) {
91                this->loadMeshFromFile("./media/models/medipack.x");
92        } else {
93                this->loadMeshFromFile(this->filename);
94        }*/
95}
96
97void Goodie::setWeaponType(int _type) {
98        this->weaponType = _type;
99        /*if(this->envType == this->GOODIE_WEAPON) {
100                if(this->filename.compare("")==0) {
101                        std::string s="./media/models/waffe";
102                        switch(this->weaponType) {
103                                case 0: s+= "1.x"; break;
104                                case 1: s+= "2.x"; break;
105                                case 2: s+= "3.x"; break;
106                        }
107                        //MessageBox(NULL,s.c_str(), "Wuermer DEBUG",MB_OK|MB_ICONQUESTION);
108                        this->loadMeshFromFile(s);
109                } else {
110                        this->loadMeshFromFile(this->filename);
111                }
112        }*/
113}
114
115void Goodie::setArmorAmount(int _armorAmount) {
116        this->armorAmount = _armorAmount;
117        /*if(this->envType == this->GOODIE_AMO) {
118                if(this->filename.compare("")==0) {
119                        std::string s="./media/models/munpack";
120                        switch(this->weaponType) {
121                                case 0: s+= "1.x"; break;
122                                case 1: s+= "2.x"; break;
123                                case 2: s+= "3.x"; break;
124                        }
125                        //MessageBox(NULL,s.c_str(), "Wuermer DEBUG",MB_OK|MB_ICONQUESTION);
126                        this->loadMeshFromFile(s);
127                } else {
128                        this->loadMeshFromFile(this->filename);
129                }
130        }*/
131}
132
133void Goodie::update(float dt) {
134        this->yPos = ((GameScene *) this->myScene)->getTerrainHeight(this->myPosition)+1;//getTerrain()->getHeight(this->myPosition.x, this->myPosition.z)+1;
135        if(this->firstTime) {
136                SoundNode *boom;
137                boom = (SoundNode *) this->myScene->createNode(this->myScene->NODE_SOUND);//this->sMgr->createSoundNode();
138                boom->setPosition(this->getPosition());
139                if(!boom->loadFile("./media/sound/goodieArrival.mp3", false)) {
140                        //MessageBox(NULL,"Loading file failed!", "Wuermer DEBUG",MB_OK|MB_ICONQUESTION);
141                } else {
142                        boom->play();
143                }
144                this->firstTime = false;
145        }
146        this->myPosition.y = (FLOAT)(this->yPos + sin(this->lifeTime*4)*0.5);
147        this->setPosition(this->myPosition);
148        this->myRotation.y += D3DX_PI/2*dt;
149        this->setRotation(this->myRotation);
150        this->lifeTime+=dt;
151}
152
153void Goodie::hitByWeapon(Weapon &weapon) {
154}
155
156void Goodie::hitByPlayer(Player &player) {
157}
158
159float Goodie::getHealthAmount() {
160        return this->healthAmount;
161}
162
163int Goodie::getWeaponType() {
164        return this->weaponType;
165}
166
167int Goodie::getArmorAmount() {
168        return this->armorAmount;
169}
170
171void Goodie::setXFile(std::string _filename)
172{
173        this->filename = _filename;
174}
175
176Node* Goodie::clone()
177{
178        this->myScene->manager->printToConsole("Goodie.clone not implemented!");
179        return NULL;
180}
Note: See TracBrowser for help on using the repository browser.