예제 #1
0
파일: globject.cpp 프로젝트: Krutoy242/Game
void GLObject::serializeMap(FileStream &f){
    if( f.isIn() ){
      float x,y,z, a, sx, sy, sz;
      int pl;

      f >> x >> y  >> z >>
           a >> pl >>
           sx >> sy >> sz;
      setPosition(x, y, z);
      object.setRotateZ(a);
      object.setSize(sx, sy, sz);

      setPlayler( pl );

      if( getBehavior("unit") )
        ((UnitBehavior*)getBehavior("unit"))->setRAngle(a);
      } else {
예제 #2
0
bool HTMLMarqueeElement::shouldContinue() {
    int loopCount = loop();

    // By default, slide loops only once.
    if (loopCount <= 0 && getBehavior() == kSlide)
        loopCount = 1;

    if (loopCount <= 0)
        return true;
    return m_loopCount < loopCount;
}
예제 #3
0
void TDirectiveHandler::handleExtension(const pp::SourceLocation &loc,
                                        const std::string &name,
                                        const std::string &behavior)
{
    const char kExtAll[] = "all";

    TBehavior behaviorVal = getBehavior(behavior);
    if (behaviorVal == EBhUndefined)
    {
        mDiagnostics.error(loc, "behavior invalid", name.c_str());
        return;
    }

    if (name == kExtAll)
    {
        if (behaviorVal == EBhRequire)
        {
            mDiagnostics.error(loc, "extension cannot have 'require' behavior", name.c_str());
        }
        else if (behaviorVal == EBhEnable)
        {
            mDiagnostics.error(loc, "extension cannot have 'enable' behavior", name.c_str());
        }
        else
        {
            for (TExtensionBehavior::iterator iter = mExtensionBehavior.begin();
                 iter != mExtensionBehavior.end(); ++iter)
                iter->second = behaviorVal;
        }
        return;
    }

    TExtensionBehavior::iterator iter = mExtensionBehavior.find(name);
    if (iter != mExtensionBehavior.end())
    {
        iter->second = behaviorVal;
        return;
    }

    switch (behaviorVal)
    {
        case EBhRequire:
            mDiagnostics.error(loc, "extension is not supported", name.c_str());
            break;
        case EBhEnable:
        case EBhWarn:
        case EBhDisable:
            mDiagnostics.warning(loc, "extension is not supported", name.c_str());
            break;
        default:
            UNREACHABLE();
            break;
    }
}
예제 #4
0
void ActionBehavior::execute()
{
  // execute subsequent option or basic behavior
  if (parameters->set())
    getBehavior()->parametersChanged();
  if (!getBehavior()->wasActive) getBehavior()->timeWhenActivated = time;
  getBehavior()->timeOfExecution = time - getBehavior()->timeWhenActivated;
  getBehavior()->execute();
  getBehavior()->isActive = true;
}
예제 #5
0
// new person for group follower
void TurnaroundPassenger::newGroupFollower( void )
{
	MobLogEntry _followerEntry = m_logEntry;
	TerminalMobElementBehavior* spTerminalBehavior = (TerminalMobElementBehavior *)getBehavior(MobElementBehavior::TerminalBehavior);
	for( int i=1; i< GetAdminGroupSize(); i++ )
	{
		_followerEntry.incPax();
		Person* _pFollower = new TurnaroundPassenger( _followerEntry, getEngine()  );
		
		getEngine()->m_simBobileelemList.Register( _pFollower );
		((CGroupLeaderInfo*)m_pGroupInfo)->AddFollower( _pFollower, this );		
	}
}
예제 #6
0
//CSinglePaxTypeFlow* TurnaroundPassenger::TryToGetPathInProcess( CSubFlow* _pProcess, const ElapsedTime& _curTime)
//{
//	bool bHaveGate				= true;
//	const ProcessorID* pGate	= NULL;
//	bool bHaveBag				= false;
//	const ProcessorID* pDestID = NULL;
//	// gate
//	if( m_nGate < 0)
//	{
//		bHaveGate = false;
//		pGate = NULL;
//	}	
//	else
//	{
//		pGate = GetTerminal()->procList->getProcessor( m_nGate )->getID();
//		bHaveGate = pGate ? true : false;
//	}
//
//	// bag device
//	bHaveBag = false;
//	if( m_type.GetTypeIndex() == 0	)	// pax
//	{
//		if( this->GetBagsCount() >0 && m_type.isArrival())
//		 bHaveBag = true;
//	}
//	else if( m_type.GetTypeIndex() == 2)	// check bag
//	{
//			bHaveBag = true;
//	}
//	
//	if( bHaveBag )
//	{
//		int nIndex = m_logMobEntry.getArrFlight();
//		Flight* pFlight = getEngine()->m_simFlightSchedule.getItem(nIndex);
//		const ProcessorID* pDestID = &(pFlight->getBaggageDevice());
//		if( pDestID == NULL )
//		{
//			CString szMobType = getPersonErrorMsg();
//			kill(_curTime);
//			throw new ARCNoBaggageDeviceAssignError(szMobType, "", _curTime.printTime());
//		}
//	}
//
//	CSinglePaxTypeFlow* pFlow = NULL;
//	if( m_nGate == arrivingGate )
//	{
//		// get single flow from PROCESS 
//		try
//		{
//			pFlow = _pProcess->GetPathInProcess(m_type,bHaveGate,*pGate,bHaveBag,*pDestID, arrivingType );
//		}
//		catch(ARCError* e)
//		{
//			delete e;	
//		}
//		catch( ARCSimEngineException* sim_exception )
//		{
//			getEngine()->SendSimFormatMessage( sim_exception->getFormatErrorMsg() );
//			delete sim_exception;
//		}
//	}	
//	else
//	{
//		try
//		{
//			pFlow = _pProcess->GetPathInProcess(m_type,bHaveGate,*pGate,bHaveBag,*pDestID, departingType );
//		}
//		catch(ARCError* e)
//		{
//			delete e;	
//		}
//		catch( ARCSimEngineException* sim_exception )
//		{
//			getEngine()->SendSimFormatMessage( sim_exception->getFormatErrorMsg() );
//			delete sim_exception;
//		}
//	}
//	return pFlow;
//}
//
//
// Used to determine if the gate is used as arrival purpose.
bool TurnaroundPassenger::CheckAndTurnArrState()
{
	if( direction == ARRIVING )
	{
		m_nGate = departingGate;
		direction = DEPARTING;
		TerminalMobElementBehavior* spTerminalBehavior = (TerminalMobElementBehavior *)getBehavior(MobElementBehavior::TerminalBehavior);
		++spTerminalBehavior->m_iNumberOfPassedGateProc;
		return true;
	}
	else
		return false;
}
예제 #7
0
// |point| is in screen coords (pixel) with the origin at the top left corner.
bool Node::handleTouch(const BehaviorType& type, const Vector2& point) {
    LOGD("[Node handleTouch] triggered. Scene node = %s.\n", mName.c_str());
    Behavior* behavior = getBehavior(type);
    if (behavior) {
        LOGD("[Node handleTouch] Behavior = %lu acts.\n", behavior->getID());
        behavior->act();

        // Get the coords of the point in a coords with the origin at bottom left.
//        Vector2 newPoint = point;
//        int screenH = mSceneMgr->getRenderer()->getScreenHeight();
//        newPoint.y = screenH - newPoint.y;
        return true;
    }
    return false;
}
예제 #8
0
HTMLMarqueeElement::AnimationParameters
HTMLMarqueeElement::getAnimationParameters() {
    AnimationParameters parameters;
    Metrics metrics = getMetrics();

    double totalWidth = metrics.marqueeWidth + metrics.contentWidth;
    double totalHeight = metrics.marqueeHeight + metrics.contentHeight;

    double innerWidth = metrics.marqueeWidth - metrics.contentWidth;
    double innerHeight = metrics.marqueeHeight - metrics.contentHeight;

    switch (getBehavior()) {
    case kAlternate:
        switch (getDirection()) {
        case kRight:
            parameters.transformBegin =
                createTransform(innerWidth >= 0 ? 0 : innerWidth);
            parameters.transformEnd =
                createTransform(innerWidth >= 0 ? innerWidth : 0);
            parameters.distance = std::abs(innerWidth);
            break;
        case kUp:
            parameters.transformBegin =
                createTransform(innerHeight >= 0 ? innerHeight : 0);
            parameters.transformEnd =
                createTransform(innerHeight >= 0 ? 0 : innerHeight);
            parameters.distance = std::abs(innerHeight);
            break;
        case kDown:
            parameters.transformBegin =
                createTransform(innerHeight >= 0 ? 0 : innerHeight);
            parameters.transformEnd =
                createTransform(innerHeight >= 0 ? innerHeight : 0);
            parameters.distance = std::abs(innerHeight);
            break;
        case kLeft:
        default:
            parameters.transformBegin =
                createTransform(innerWidth >= 0 ? innerWidth : 0);
            parameters.transformEnd =
                createTransform(innerWidth >= 0 ? 0 : innerWidth);
            parameters.distance = std::abs(innerWidth);
        }

        if (m_loopCount % 2)
            std::swap(parameters.transformBegin, parameters.transformEnd);
        break;
    case kSlide:
        switch (getDirection()) {
        case kRight:
            parameters.transformBegin = createTransform(-metrics.contentWidth);
            parameters.transformEnd = createTransform(innerWidth);
            parameters.distance = metrics.marqueeWidth;
            break;
        case kUp:
            parameters.transformBegin = createTransform(metrics.marqueeHeight);
            parameters.transformEnd = "translateY(0)";
            parameters.distance = metrics.marqueeHeight;
            break;
        case kDown:
            parameters.transformBegin = createTransform(-metrics.contentHeight);
            parameters.transformEnd = createTransform(innerHeight);
            parameters.distance = metrics.marqueeHeight;
            break;
        case kLeft:
        default:
            parameters.transformBegin = createTransform(metrics.marqueeWidth);
            parameters.transformEnd = "translateX(0)";
            parameters.distance = metrics.marqueeWidth;
        }
        break;
    case kScroll:
    default:
        switch (getDirection()) {
        case kRight:
            parameters.transformBegin = createTransform(-metrics.contentWidth);
            parameters.transformEnd = createTransform(metrics.marqueeWidth);
            parameters.distance = totalWidth;
            break;
        case kUp:
            parameters.transformBegin = createTransform(metrics.marqueeHeight);
            parameters.transformEnd = createTransform(-metrics.contentHeight);
            parameters.distance = totalHeight;
            break;
        case kDown:
            parameters.transformBegin = createTransform(-metrics.contentHeight);
            parameters.transformEnd = createTransform(metrics.marqueeHeight);
            parameters.distance = totalHeight;
            break;
        case kLeft:
        default:
            parameters.transformBegin = createTransform(metrics.marqueeWidth);
            parameters.transformEnd = createTransform(-metrics.contentWidth);
            parameters.distance = totalWidth;
        }
        break;
    }

    return parameters;
}
예제 #9
0
파일: globject.cpp 프로젝트: Krutoy242/Game
void GLObject::deathEvent(){
		if( getBehavior("unit") )
			new DeathAnimation( scene, this, getClass()->name );
		}
예제 #10
0
void TDirectiveHandler::handleExtension(const pp::SourceLocation& loc,
                                        const std::string& name,
                                        const std::string& behavior)
{
    const char kExtAll[] = "all";

    TBehavior behaviorVal = getBehavior(behavior);
    if (behaviorVal == EBhUndefined)
    {
        mDiagnostics.writeInfo(pp::Diagnostics::PP_ERROR, loc,
                               "behavior", name, "invalid");
        return;
    }

    if (name == kExtAll)
    {
        if (behaviorVal == EBhRequire)
        {
            mDiagnostics.writeInfo(pp::Diagnostics::PP_ERROR, loc,
                                   "extension", name,
                                   "cannot have 'require' behavior");
        }
        else if (behaviorVal == EBhEnable)
        {
            mDiagnostics.writeInfo(pp::Diagnostics::PP_ERROR, loc,
                                   "extension", name,
                                   "cannot have 'enable' behavior");
        }
        else
        {
            for (TExtensionBehavior::iterator iter = mExtensionBehavior.begin();
                 iter != mExtensionBehavior.end(); ++iter)
                iter->second = behaviorVal;
        }
        return;
    }

    TExtensionBehavior::iterator iter = mExtensionBehavior.find(name);
    if (iter != mExtensionBehavior.end())
    {
        iter->second = behaviorVal;
        return;
    }

    pp::Diagnostics::Severity severity = pp::Diagnostics::PP_ERROR;
    switch (behaviorVal) {
      case EBhRequire:
        severity = pp::Diagnostics::PP_ERROR;
        break;
      case EBhEnable:
      case EBhWarn:
      case EBhDisable:
        severity = pp::Diagnostics::PP_WARNING;
        break;
      default:
        UNREACHABLE();
        break;
    }
    mDiagnostics.writeInfo(severity, loc,
                           "extension", name, "is not supported");
}