Exemple #1
0
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));

        }
    
    }
    
};
Exemple #2
0
AsyncRunnable::erunstate
ThreadRunnable::wait()
{
    MutexGuard g(d_->lock_);
    erunstate  s=getRunState();
    if( s==failed || s == suceeded )
    {
        return s;
    }
    d_->done_.wait( g );
    return getRunState();
}
Exemple #3
0
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();
}
Exemple #4
0
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);
}
Exemple #5
0
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_) );
}
Exemple #6
0
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;
	};
}
Exemple #7
0
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);    
  }
  
}