virtual void visit(FunctionSpaceMesh& f)
  {
    if (alreadyResolved(f))
      return;

    DofMapBuilder<dimension> mapBuilder(scenario.getMesh());
    mapBuilder.addFiniteElement(scenario.getElement(f.getElement()));
    setDofMap(f, mapBuilder.getDofMap());
  }
Exemplo n.º 2
0
// ---
QGAMES::WorldBuilder* PacmanGame::createWorldBuilder ()
{
	return (new WorldsBuilder (std::string (__WORLDSFILE__), mapBuilder ()));
}
Exemplo n.º 3
0
void cBuilder::parseInput() {
	sObjectPart		*part	= 0;
	sPlayerInput	*input	= mInput->inputGet(0);
	bool			 update = false;
	
	// Get the current selected 'part' of the object
	if(mCurrentObject)
		part = mCurrentObject->partGet();

	// Left
	if(input->mLeft) {
		if( part && mDragMode ) {

			switch( part->mDragDirection ) {
				case eDirectionLeft:
					part->mLength++;
					break;
				case eDirectionRight:
					part->mLength--;
					break;
				default:
					break;
			}
		} else
			mCursorX -= 4;
		update = true;
	}

	// Right
	if(input->mRight) {

		if( part && mDragMode ) {

			switch( part->mDragDirection ) {
				case eDirectionLeft:
					part->mLength--;
					break;
				case eDirectionRight:
					part->mLength++;
					break;
				default:
					break;
			}
		} else
			mCursorX += 4;
		update = true;
	}

	// Down
	if(input->mDown) {
		if( part && mDragMode ) {

			switch( part->mDragDirection ) {
				case eDirectionDown:
					part->mLength++;
					break;
				case eDirectionUp:
					part->mLength--;
					break;
				default:
					break;
			}
		} else
			mCursorY += 8;
		update = true;
	}

	// Up
	if(input->mUp) {
		if( part && mDragMode ) {

			switch( part->mDragDirection ) {
				case eDirectionDown:
					part->mLength--;
					break;
				case eDirectionUp:
					part->mLength++;
					break;
				default:
					break;
			}
		} else
			mCursorY -= 8;
		update = true;
	}

	//
	if(part && ((int) part->mLength) < 1)
		part->mLength = 1;

	// Button
	if(input->mButton) {
		eventProcess( true );

		if( part && part->mDrags == true ) {
			if( mDragMode == false ) 
				mDragMode = true;
			else {
				mDragMode = false;
				if(mLinkMode) {
					if(mOriginalObject) {
						mOriginalObject->mLinkedSet( findItemIndex( mCurrentObject ) );
						mOriginalObject->mLinked2Set( mCurrentRoom->mNumber );
					}
					mSearchObject = eObjectNone;
					mLinkMode = false;
					mCurrentObject = 0;

				} else if(mCurrentObject) {
					mCurrentObject->partPlace();
				}
			}

		} else {
			mDragMode = false;
			if(mLinkMode) {
				if(mOriginalObject) {
					mOriginalObject->mLinkedSet( findItemIndex( mCurrentObject ) );
					mOriginalObject->mLinked2Set( mCurrentRoom->mNumber );
				}
				mSearchObject = eObjectNone;
				mLinkMode = false;
				mCurrentObject = 0;

			} else if(mCurrentObject) {
				mCurrentObject->partPlace();
			}
		}

		
		update = true;
	}

	// ESC: Quit builder
	if( mInput->restoreGet() ) {
		mTest = false;
		mQuit = true;
		return;
	}

	// F1: Save Castle To Disk
	if( mInput->runStopGet() )
		castleSaveToDisk();
	
	if( mInput->f3Get() ) {
		mapBuilder();
		update = true;
	}

	// F4: Quit builder in test castle mode
	if( mInput->f4Get() ) {
		mTest = true;
		mQuit = true;
	}

	// Check cursor position to see if its outside screen range
	int downWidth = 1;
	int downHeight = 1;

	if(mCurrentObject) {
		downHeight= mCurrentObject->partGet()->mCursorHeight;
		downWidth = mCurrentObject->partGet()->mCursorWidth;
	}

	downHeight *= 8;
	downWidth *= 4;

		// Cursor minimum and maximums
		if( (mCursorX + downWidth) > 0xB0)
			mCursorX = 0xB0 - downWidth;

		if( mCursorX < 0x10 )
			mCursorX = 0x10;

		if( mCursorY > 0xF0 )
			mCursorY = 0;

		if( (mCursorY + downHeight) > 0xC8 )
			mCursorY = 0xC8 - downHeight;

	// Does the cursor actually need updating
	if(update) 
		cursorObjectUpdate();
}