void RunnerSprite::fixCollision(CollisionFace face,Rect box){ CCLOG("fix face %d,x %f y %f w %f h %f",face,box.origin.x,box.origin.y,box.size.width,box.size.height); //Director::getInstance()->pause(); Rect interRect = mRunner->getBoundingBox(); float maxX = MIN(interRect.getMaxX(), box.getMaxX()); float minX = MAX(interRect.getMinX(), box.getMinX()); float maxY = MIN(interRect.getMaxY(), box.getMaxY()); float minY = MAX(interRect.getMinY(), box.getMinY()); float width = maxX - minX; float height = maxY - minY; if(face == kBOTTON){ setRolePos(Vec2(getRolePos().x,getRolePos().y + height)); return; } if(face == kTOP){ setRolePos(Vec2(getRolePos().x,getRolePos().y - height)); return; } if(face == kLEFT){ setRolePos(Vec2(getRolePos().x + width,getRolePos().y )); return; } if(face == kRIGHT){ if(getRunState() == kROLEJUMP){ setRolePos(Vec2(getRolePos().x - width ,getRolePos().y )); } else{ setRolePos(Vec2(getRolePos().x - width,getRolePos().y )); } return; } if(face == kRTOP){ if(getRunState() == kROLEJUMP || getRunState() == kROLEJUMP2){ setRolePos(Vec2(getRolePos().x - width ,getRolePos().y - height)); } else{ setRolePos(Vec2(getRolePos().x - width ,getRolePos().y )); } } if(face == kRBOTTON){ if(getRunState() == kROLEJUMPDOWN){ setRolePos(Vec2(getRolePos().x - width ,getRolePos().y )); } else{ setRolePos(Vec2(getRolePos().x - width ,getRolePos().y +height)); } } };
AsyncRunnable::erunstate ThreadRunnable::wait() { MutexGuard g(d_->lock_); erunstate s=getRunState(); if( s==failed || s == suceeded ) { return s; } d_->done_.wait( g ); return getRunState(); }
AsyncRunnable::erunstate ForkExecRunnable::wait() { bool dowait=false; { MutexGuard g( d_->lock_ ); if( d_->pid_ < 1 ) { d_->started_.wait(g); } //d_->pid_ is gaurantied to have a value at this point. if( ! d_->waiting_ ) { dowait=true; d_->waiting_=true; } } if( dowait ) { d_->exit_status_ = ExecWrap::wait_for_exit_status(d_->pid_); MutexGuard g( d_->lock_ ); d_->done_.broadcast(); } else { MutexGuard g( d_->lock_ ); d_->done_.wait(g); } return getRunState(); }
void RunnerSprite::runner_logic(){ switch (getRunState()) { case kROLERUN: this->runLogic(); break; case kROLEJUMP: this->jumpUpLogic(); break; case kROLEJUMPDOWN: this->jumpDownLogic(); break; case kROLESTANDBY: break; case kROLEJUMP2: this->jumpTwiceUpLogic(); break; default: break; } char a[10] = {0}; sprintf(a, "%dm",int(getRolePos().x)); GameRunScene* p = static_cast<GameRunScene*>(this->getParent()); p->getMLb()->setString(a); }
void ThreadRunnable::start() { MutexGuard g(d_->lock_); if( d_->t_ || running == getRunState()) { PANICV( "ThreadRunnable::start(), allready started"); } setRunState( running ); d_->t_=new Thread( ThreadRunnablePriv::run, static_cast<void *>(d_) ); }
void CGO_Player::setRunStateSafe (Uint8 state) { if (state == getRunState()) { // no change return; } switch(state) { case XSTAND: setRunState(state); if (getAniState() != SSTAND) { // setAniDirState(SSTAND, direction); // set from move() } break; case XWALK: setRunState(state); if (getAniState() != SWALK) { // setAniDirState(SWALK, direction); // set from move() } break; case XBLOCKED: setRunState(state); // move to full cell setArrayX( getArrayX( getArrayMiddleX())); setArrayY( getArrayY( getArrayMiddleY())); if ( getAniState() != SCORNERHEAD ) { // setAniDirState(SCORNERHEAD, ASOUTH); // set from move() er.report(LOG_INFO, _("%s: setAniDirState(SCORNERHEAD, ASOUTH)\n"), AT); } break; }; }
void getRunStateProcess(char* pname, xmlDoc* doc, char* state) { int idpm; char str1[256]; char str2[256]; char action[256]; getStringFromEpicsName(pname,str1,1); getStringFromEpicsName(pname,str2,2); if(strcmp(str1,"daq")==0 && (strcmp(str2,"dtm")==0 ||strcmp(str2,"dpm")==0)) { idpm = getIntFromEpicsName(pname,3); getStringFromEpicsName(pname,action,4); if(strcmp(action,"state_asub")==0) { getRunState(idpm, doc, state); if(DEBUG>0) printf("[ getRunStateProcess ]: got state %s.\n",state); } else { printf("[ getRunStateProcess ]: [ ERROR ]: wrong action \"%s\"!\n",action); } } else { printf("[ getRunStateProcess ]: [ ERROR ]: wrong record name? \"%s\"!\n",pname); } }