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

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

GTPD - Jungle Rumble - integrate into GTP SVN structure

Line 
1#include "dxstdafx.h"
2#include ".\usercontactreport.h"
3#include "Scene.h"
4#include "GameScene.h"
5#include "GameManager.h"
6#include "Trigger.h"
7#include "Node.h"
8#include "Player.h"
9
10UserContactReport::UserContactReport(void)
11{
12}
13
14UserContactReport::~UserContactReport(void)
15{
16}
17
18void UserContactReport::setScene(Scene* _scene)
19{
20        this->scene = _scene;
21}
22
23void UserContactReport::onContactNotify(NxContactPair& pair, NxU32 events)
24{
25        GameScene* gscene;
26        if(events & NX_NOTIFY_ON_START_TOUCH) { // | NX_NOTIFY_ON_TOUCH)) { Vorsicht...pointer bug!
27                Vector normal;
28                normal = Vector(pair.sumNormalForce);
29                normal.normalize();
30                //Bullte vs Terrain
31                if(pair.actors[0]->getGroup()== COLGROUP_BULLET && pair.actors[1]->getGroup()== COLGROUP_TERRAIN) {
32                        gscene = ((GameScene*) ((Node*) pair.actors[0]->userData)->myScene);
33                        gscene->setTrigger(gscene->TRIGGER_IMPACTTERRAIN, ((Node*) pair.actors[0]->userData), ((Node*) pair.actors[1]->userData), normal, 0);
34                } else if(pair.actors[1]->getGroup()== COLGROUP_BULLET && pair.actors[0]->getGroup()== COLGROUP_TERRAIN) {
35                        gscene = ((GameScene*) ((Node*) pair.actors[1]->userData)->myScene);
36                        gscene->setTrigger(gscene->TRIGGER_IMPACTTERRAIN, ((Node*) pair.actors[1]->userData), ((Node*) pair.actors[0]->userData), normal, 0);
37                } //Bullet vs Goodie
38                else if(pair.actors[0]->getGroup()== COLGROUP_BULLET && pair.actors[1]->getGroup()== COLGROUP_GOODIE) {
39                        gscene = ((GameScene*) ((Node*) pair.actors[0]->userData)->myScene);
40                        gscene->setTrigger(gscene->TRIGGER_IMPACTGOODIE, ((Node*) pair.actors[0]->userData), ((Node*) pair.actors[1]->userData), normal, 0);
41                } else if(pair.actors[1]->getGroup()== COLGROUP_BULLET && pair.actors[0]->getGroup()== COLGROUP_GOODIE) {
42                        gscene = ((GameScene*) ((Node*) pair.actors[1]->userData)->myScene);
43                        gscene->setTrigger(gscene->TRIGGER_IMPACTGOODIE, ((Node*) pair.actors[1]->userData), ((Node*) pair.actors[0]->userData), normal, 0);
44                } //Bullet vs Other
45                else if(pair.actors[0]->getGroup()== COLGROUP_BULLET && pair.actors[1]->getGroup()== COLGROUP_OTHER) {
46                        gscene = ((GameScene*) ((Node*) pair.actors[0]->userData)->myScene);
47                        gscene->setTrigger(gscene->TRIGGER_IMPACTOTHER, ((Node*) pair.actors[0]->userData), ((Node*) pair.actors[1]->userData), normal, 0);
48                } else if(pair.actors[1]->getGroup()== COLGROUP_BULLET && pair.actors[0]->getGroup()== COLGROUP_OTHER) {
49                        gscene = ((GameScene*) ((Node*) pair.actors[1]->userData)->myScene);
50                        gscene->setTrigger(gscene->TRIGGER_IMPACTOTHER, ((Node*) pair.actors[1]->userData), ((Node*) pair.actors[0]->userData), normal, 0);
51                } //Bullet vs Player
52                else if(pair.actors[0]->getGroup()== COLGROUP_BULLET && pair.actors[1]->getGroup()== COLGROUP_PLAYER) {
53                        gscene = ((GameScene*) ((Node*) pair.actors[0]->userData)->myScene);
54                        gscene->setTrigger(gscene->TRIGGER_IMPACTPLAYER, ((Node*) pair.actors[0]->userData), ((Node*) pair.actors[1]->userData), normal, 0);
55                } else if(pair.actors[1]->getGroup()== COLGROUP_BULLET && pair.actors[0]->getGroup()== COLGROUP_PLAYER) {
56                        gscene = ((GameScene*) ((Node*) pair.actors[1]->userData)->myScene);
57                        gscene->setTrigger(gscene->TRIGGER_IMPACTPLAYER, ((Node*) pair.actors[1]->userData), ((Node*) pair.actors[0]->userData), normal, 0);
58                } //Fire vs Player
59                else if(pair.actors[0]->getGroup()== COLGROUP_FIRE && pair.actors[1]->getGroup()== COLGROUP_PLAYER) {
60                        gscene = ((GameScene*) ((Node*) pair.actors[0]->userData)->myScene);
61                        gscene->setTrigger(gscene->TRIGGER_IMPACTFIRE, ((Node*) pair.actors[0]->userData), ((Node*) pair.actors[1]->userData), 0);
62                } else if(pair.actors[1]->getGroup()== COLGROUP_FIRE && pair.actors[0]->getGroup()== COLGROUP_PLAYER) {
63                        gscene = ((GameScene*) ((Node*) pair.actors[1]->userData)->myScene);
64                        gscene->setTrigger(gscene->TRIGGER_IMPACTFIRE, ((Node*) pair.actors[1]->userData), ((Node*) pair.actors[0]->userData), 0);
65                } //Bullet vs Obstacle
66                else if(pair.actors[0]->getGroup()== COLGROUP_BULLET && pair.actors[1]->getGroup()== COLGROUP_OBSTACLE) {
67                        gscene = ((GameScene*) ((Node*) pair.actors[0]->userData)->myScene);
68                        gscene->setTrigger(gscene->TRIGGER_IMPACTOTHER, ((Node*) pair.actors[0]->userData), ((Node*) pair.actors[1]->userData), normal, 0);
69                } else if(pair.actors[1]->getGroup()== COLGROUP_BULLET && pair.actors[0]->getGroup()== COLGROUP_OBSTACLE) {
70                        gscene = ((GameScene*) ((Node*) pair.actors[1]->userData)->myScene);
71                        gscene->setTrigger(gscene->TRIGGER_IMPACTOTHER, ((Node*) pair.actors[1]->userData), ((Node*) pair.actors[0]->userData), normal, 0);
72                }  //Ice vs Player
73                else if(pair.actors[0]->getGroup()== COLGROUP_ICE && pair.actors[1]->getGroup()== COLGROUP_PLAYER) {
74                        gscene = ((GameScene*) ((Node*) pair.actors[0]->userData)->myScene);
75                        gscene->setTrigger(gscene->TRIGGER_IMPACTICE, ((Node*) pair.actors[0]->userData), ((Node*) pair.actors[1]->userData), 0);
76                } else if(pair.actors[1]->getGroup()== COLGROUP_ICE && pair.actors[0]->getGroup()== COLGROUP_PLAYER) {
77                        gscene = ((GameScene*) ((Node*) pair.actors[1]->userData)->myScene);
78                        gscene->setTrigger(gscene->TRIGGER_IMPACTICE, ((Node*) pair.actors[1]->userData), ((Node*) pair.actors[0]->userData), 0);
79                }  //Bullet vs Create OnePlayer
80                else if(pair.actors[0]->getGroup()== COLGROUP_ONEPLAYER && pair.actors[1]->getGroup()== COLGROUP_BULLET) {
81                        gscene = ((GameScene*) ((Node*) pair.actors[0]->userData)->myScene);
82                        gscene->setTrigger(gscene->TRIGGER_CREATEPLAYER, ((Node*) pair.actors[0]->userData), ((Node*) pair.actors[1]->userData), 0);
83                } else if(pair.actors[1]->getGroup()== COLGROUP_ONEPLAYER && pair.actors[0]->getGroup()== COLGROUP_BULLET) {
84                        gscene = ((GameScene*) ((Node*) pair.actors[1]->userData)->myScene);
85                        gscene->setTrigger(gscene->TRIGGER_CREATEPLAYER, ((Node*) pair.actors[1]->userData), ((Node*) pair.actors[0]->userData), 0);
86                }  //Bullet vs Create MorePlayer
87                else if(pair.actors[0]->getGroup()== COLGROUP_MOREPLAYER && pair.actors[1]->getGroup()== COLGROUP_BULLET) {
88                        gscene = ((GameScene*) ((Node*) pair.actors[0]->userData)->myScene);
89                        gscene->setTrigger(gscene->TRIGGER_CREATEMOREPLAYER, ((Node*) pair.actors[0]->userData), ((Node*) pair.actors[1]->userData), 0);
90                } else if(pair.actors[1]->getGroup()== COLGROUP_MOREPLAYER && pair.actors[0]->getGroup()== COLGROUP_BULLET) {
91                        gscene = ((GameScene*) ((Node*) pair.actors[1]->userData)->myScene);
92                        gscene->setTrigger(gscene->TRIGGER_CREATEMOREPLAYER, ((Node*) pair.actors[1]->userData), ((Node*) pair.actors[0]->userData), 0);
93                }
94        }
95}
96
Note: See TracBrowser for help on using the repository browser.