From de766399e2442fbc438123c1c8763e0ae90e6158 Mon Sep 17 00:00:00 2001 From: Tim Redfern Date: Fri, 20 Apr 2012 03:36:39 +0100 Subject: numerous problems --- gaunt01/src/trapdoor.cpp | 91 ++++++++++++++---------------------------------- 1 file changed, 26 insertions(+), 65 deletions(-) (limited to 'gaunt01/src/trapdoor.cpp') 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 trapdoor::getCorners(){ vector 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& 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& 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); -- cgit v1.2.3