summaryrefslogtreecommitdiff
path: root/gaunt01/src/trapdoor.cpp
diff options
context:
space:
mode:
authorTim Redfern <tim@eclectronics.org>2012-04-20 03:36:39 +0100
committerTim Redfern <tim@eclectronics.org>2012-04-20 03:36:39 +0100
commitde766399e2442fbc438123c1c8763e0ae90e6158 (patch)
tree1456a1882ead58c9ac99a74c99bde3cd11de7813 /gaunt01/src/trapdoor.cpp
parenteaaa8f65e00d6c094206b55c06425715d80aa014 (diff)
numerous problems
Diffstat (limited to 'gaunt01/src/trapdoor.cpp')
-rw-r--r--gaunt01/src/trapdoor.cpp91
1 files changed, 26 insertions, 65 deletions
diff --git a/gaunt01/src/trapdoor.cpp b/gaunt01/src/trapdoor.cpp
index 6757a04..309cda6 100644
--- a/gaunt01/src/trapdoor.cpp
+++ b/gaunt01/src/trapdoor.cpp
@@ -1,18 +1,12 @@
#include "trapdoor.h"
-trapdoor::trapdoor(ofVec2f _boundTR,ofVec2f _boundBR,ofVec2f _doorSize)
+trapdoor::trapdoor(ofVec2f pos,float _doorSize)
{
- surround=morphmesh("trapdoor-surround.xml");
+ surround=morphmesh("trapdoor-top.xml");
lid=morphmesh("trapdoor-lid.xml");
if (!surround.isLoaded()||!lid.isLoaded()) printf("problem loading trap door mesh.\n");
texture.loadImage("TextureTrapdoor.jpg");
-
- sounds=new ofSoundPlayer[4];
- sounds[0].loadSound("creeky door short1.wav");
- sounds[1].loadSound("creeky door short2.wav");
- sounds[2].loadSound("creeky door short3.wav");
- sounds[3].loadSound("voice falling down hole.wav");
splashFrames=new ofImage[3];
splashFrames[0].loadImage("Drops_1.tga");
@@ -23,49 +17,30 @@ trapdoor::trapdoor(ofVec2f _boundTR,ofVec2f _boundBR,ofVec2f _doorSize)
splashFrames[i].setAnchorPercent(0.5,0.5);
}
- boundTR=_boundTR;
- boundBR=_boundBR;
size=_doorSize;
- start();
-}
-
-trapdoor::~trapdoor() {
- }
-
-void trapdoor::start(){
- //place trapdoor within bounds
- float u=ofRandom(-0.9,0.9); //(-1 to 1)
- float v=ofRandom(0.05,0.95);
- float mx=ofGetWidth()/2;
-
- float x=mx+((boundTR.x-mx)*u*(1-v))+((boundBR.x-mx)*u*v);
- float y=boundTR.y+((boundBR.y-boundTR.y)*v);
-
- startPos(ofVec2f(x,y));
-
-}
-
-void trapdoor::startPos(ofVec2f pos){
caught.clear();
caughtTime.clear();
- position=pos;
- setBoundingRect(pos.x, pos.y,size.x,size.y);
- startTime=ofGetElapsedTimef();
doorAngle=0;
doorSpeed=0;
- opening=false;
+ position=pos;
+ setBoundingRect(pos.x, pos.y,size,size);
+ active=false;
triggeredTime=-1;
- //for (int i=0;i<4;i++) sounds[i].stop();
+}
+
+trapdoor::~trapdoor() {
+ for (int i=0;i<3;i++) splashFrames[i].clear();
+ //delete splashFrames;
}
vector<ofVec2f> trapdoor::getCorners(){
vector<ofVec2f> corners;
- corners.push_back(ofVec2f(position.x-(size.x/2),position.y-(size.y/2)));
- corners.push_back(ofVec2f(position.x+(size.x/2),position.y-(size.y/2)));
- corners.push_back(ofVec2f(position.x+(size.x/2),position.y+(size.y/2)));
- corners.push_back(ofVec2f(position.x-(size.x/2),position.y+(size.y/2)));
+ corners.push_back(ofVec2f(position.x-(size/2),position.y-(size/2)));
+ corners.push_back(ofVec2f(position.x+(size/2),position.y-(size/2)));
+ corners.push_back(ofVec2f(position.x+(size/2),position.y+(size/2)));
+ corners.push_back(ofVec2f(position.x-(size/2),position.y+(size/2)));
return corners;
}
@@ -77,21 +52,22 @@ ofRectangle trapdoor::getBoundingRect(){
}
ofRectangle trapdoor::getInnerRect() {
//return ofRectangle(boundingRect.x-(boundingRect.width/4),boundingRect.y-(boundingRect.height/4),boundingRect.width/2,boundingRect.height/2);
- return ofRectangle(position.x-(size.x/3),position.y-(size.y/3),(2*size.x)/3,(2*size.y)/3);
+ return ofRectangle(position.x-(size/3),position.y-(size/3),(2*size)/3,(2*size)/3);
}
void trapdoor::trigger() {
- triggeredTime=ofGetElapsedTimef();
- startTime=ofGetElapsedTimef()-10;
+ triggeredTime=ofGetElapsedTimef();
}
+/*
ofVec2f trapdoor::bounds2UV(ofVec2f point){
//returns the 0-1 UV coords of a point on the ground plane relative to its bounds.
+ //this should not be in the trapdoor class????
float v=(point.y-boundTR.y)/(boundBR.y-boundTR.y);
float mx=ofGetWidth()/2;
float u=((point.x-mx)/(((boundTR.x-mx)*(1-v))+((boundBR.x-mx)*v)))+0.5;
return ofVec2f(u,v);
}
-
+*/
float trapdoor::getFalldist(){
if (triggeredTime>0) return ((ofGetElapsedTimef()-triggeredTime)*.01);
else return 0;
@@ -111,7 +87,6 @@ bool trapdoor::checkUpdate(map<int,player>& players) {
printf("caught!\n");
caught.push_back(&(it->second));
caughtTime.push_back(ofGetElapsedTimef());
- sounds[3].play(); //falling down hole
}
}
}
@@ -121,25 +96,11 @@ bool trapdoor::checkUpdate(map<int,player>& players) {
}
- float segTime=(ofGetElapsedTimef()-startTime);
- if (segTime>10) {
+ float segTime=(ofGetElapsedTimef()-triggeredTime);
+ if (triggeredTime>0) {
doorSpeed=(doorSpeed+((cos(doorAngle*0.0174532925)/ofGetFrameRate())*50))*0.95;
doorAngle-=doorSpeed;
- if (!opening) {
- int whichsound=(int)ofRandom(2.9999999);
- sounds[whichsound].play();
- //sound.play();
- opening=true;
- }
- }
- /*
- if (segTime>13) {
- start();
- return true;
- }
- else return false;
- */
-
+ }
return gotcha;
}
@@ -166,15 +127,15 @@ void trapdoor::draw() {
ofTranslate(ofVec3f(position.x,position.y,0));
ofPushMatrix();
ofRotate(90,-1,0,0);
- ofScale(.175,.175,.175);
+ ofScale(size*.005,size*.005,size*.005);
surround.draw();
ofPushMatrix();
- ofTranslate(90,0,0);
+ ofTranslate(90,0,-5);
ofRotate(doorAngle,0,0,-1);
lid.draw();
ofPopMatrix();
ofPushMatrix();
- ofTranslate(-90,0,0);
+ ofTranslate(-90,0,-5);
ofRotate(180,0,1,0);
ofRotate(doorAngle,0,0,-1);
lid.draw();
@@ -191,7 +152,7 @@ void trapdoor::drawSplash(float angle) {
ofPushMatrix();
ofTranslate(ofVec3f(position.x,position.y,0));
ofRotate(angle,-1,0,0);
- ofScale(0.3,0.3,0.3);
+ ofScale(size*.01,size*.01,size*.01);
if (splashTime<0.5) splashFrames[0].draw(0,0,0);
else if (splashTime<0.7) splashFrames[1].draw(0,0,0);
else if (splashTime<0.9) splashFrames[2].draw(0,0,0);