MainView::MainView(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainView)
{
    ui->setupUi(this);
    ui->lblName->setVisible(false);
    ui->editName->setVisible(false);
    ui->lblCurrTemp->setVisible(false);
    ui->currTemp->setVisible(false);
    ui->lblPrefTemp->setVisible(false);
    ui->editTemp->setVisible(false);
    ui->btnUpdate->setVisible(false);
    ui->editTemp->setRange(50,99);

    t = new nodeCommunication();
    t->start();

    connect(ui->btnSetup, SIGNAL(clicked()), this, SLOT(generateRooms()));
    connect(ui->roomList, SIGNAL(itemSelectionChanged()), this, SLOT(roomChange()));
    connect(ui->btnUpdate, SIGNAL(clicked()), this, SLOT(updateStruct()));
}
Exemple #2
0
// Main Map Builder Loop
void cBuilder::mapBuilder() {
	bool mapRedraw = true, saveCastle = false;

	while(!mQuit) {
		byte key = tolower( mInput->keyGet() );

		if( mInput->restoreGet() )
			mQuit = true;

		switch(key) {

			case 0x0C:	{// '-' Previous Room
				int newRoom = ((char) mCurrentRoom->mNumber) - 1;
				if(newRoom < 0)
					newRoom = 0;
				roomChange( newRoom );
				mapRedraw = true;
				break;
						}

			case 0x0D:	{// '=' Next Room
				int newRoom = ((char) mCurrentRoom->mNumber) + 1;
				//if( newRoom >= (int) mRooms.size() )
				//	newRoom = mRooms.size() - 1;
				roomChange( newRoom );
				mapRedraw = true;
				break;
						}

			case 0x1A:	// '[' Change object Down
				mSearchObject = eObjectDoor;
				selectPlacedObject( false );
				mSearchObject = eObjectNone;
				break;

			case 0x1B:	// ']' Change object Up
				mSearchObject = eObjectDoor;
				selectPlacedObject( true );
				mSearchObject = eObjectNone;
				break;

			case 0x20:	// 'd' object direction
				if( mCurrentObject ) {
					mCurrentObject->directionChange();
					saveCastle = true;
				}
				break;

			case 0x25:	// 'k'  Increase X of map door 
				if( mCurrentObject && mCurrentObject->objectTypeGet() == eObjectDoor ) {
					cObjectDoor *door = (cObjectDoor*) mCurrentObject;
					if(door->mMapX < 0x1C )
						door->mMapX += 2;
					else
						door->mMapX = 0;

					saveCastle = true;
				}
				break;

			case 0x26:	// 'l'  Increase Y of map door
				if( mCurrentObject && mCurrentObject->objectTypeGet() == eObjectDoor ) {
					cObjectDoor *door = (cObjectDoor*) mCurrentObject;
					if(door->mMapY < 0x38 )
						door->mMapY += 4;
					else
						door->mMapY = 0;

					saveCastle = true;
				}
				break;

			case 0x27:	// ';'  Decrease Width
				if(mCurrentRoom->mMapWidth > 1)
					mCurrentRoom->mMapWidth --;

				saveCastle = true;
				break;

			case 0x28:	// ''' Increase Width
				if(mCurrentRoom->mMapWidth < 7)
					mCurrentRoom->mMapWidth ++;

				saveCastle = true;
				break;

			case 0x2E:	// 'c' Change Room Color
				if(mCurrentRoom->mColor < 0x15)
					mCurrentRoom->mColor++;
				else
					mCurrentRoom->mColor = 0;

				saveCastle = true;
				break;

			case 0x34:	// '.' Decrease Height
				if(mCurrentRoom->mMapHeight > 1)
					mCurrentRoom->mMapHeight --;


				saveCastle = true;
				break;

			case 0x35:	// '/' Increase Height
				if(mCurrentRoom->mMapHeight < 7)
					mCurrentRoom->mMapHeight ++;

				saveCastle = true;
				break;

			default:
				/*if(key) {
					cout << "0x";
					cout << hex << (int) key << endl;
				}*/
				break;
		}

		// Allow a refresh of screen
		if(mInput->f3Get())
			saveCastle = true;

		sPlayerInput *input = mInput->inputGet(0);
		if(input->mLeft) {
			if(mCurrentRoom->mMapX > 3)
				mCurrentRoom->mMapX -= 4;
			saveCastle = true;
		}
		if(input->mRight) {
			if(mCurrentRoom->mMapX < 180)
				mCurrentRoom->mMapX += 4;
			saveCastle = true;
		}
		if(input->mUp) {
			if(mCurrentRoom->mMapY > 7)
				mCurrentRoom->mMapY -= 8;
			saveCastle = true;
		}
		if(input->mDown) {
			if(mCurrentRoom->mMapY < 200)
				mCurrentRoom->mMapY += 8;
			saveCastle = true;
		}

		if( saveCastle ) {
			saveCastle = false;
			
			save(false);
			mapRedraw = true;
		}

		if( mapRedraw ) {
			mapRedraw = false;

			mapRoomsDraw( mCurrentRoom->mNumber );
		}

		hw_IntSleep(1);
		hw_Update();	
	}

	mQuit = false;
}
Exemple #3
0
void cBuilder::mainLoop() {
	mQuit = false;
	mIntro = false;
	mNoInput = true;

	if( mStartCastle != -2 && mStartCastle > -1 ) {
		// Load Castle
		mCastle = mCreepParent->castleGet();
		mCastle->castleLoad( this );	
		
	} else {
	
		if(mStartCastle != -2) {
			// New Castle
			mScreen->levelNameSet("Untitled");
			mCastle = new cCastle( this, 0 );

			save( false );
		}
	}
	
	// Set the screen ptrs
	mScreen->bitmapLoad( &mMemory[ 0xE000 ], &mMemory[ 0xCC00 ], &mMemory[ 0xD800 ], 0 );

	// Prep Cursor
	mScreen->cursorSet( mCursorX, mCursorY );
	mScreen->cursorEnabled(true);

	// Change to first room
	roomChange(mMemory[ 0x7803 ]);

	// 
	while(!mQuit) {
		byte key = tolower( mInput->keyGet() );
		
		// Check keyboard input
		switch(key) {
			
			case 0x02:	// '1' Set player one starting door
				if( mCurrentObject && mCurrentObject->objectTypeGet() == eObjectDoor ) {
					mCastle->mStart_Room_Player1Set(mCurrentRoom->mNumber);
					mCastle->mStart_Door_Player1Set(findItemIndex( mCurrentObject ));
					castlePrepare();
				}
				break;

			case 0x03:	// '2' Set player two starting door
				if( mCurrentObject && mCurrentObject->objectTypeGet() == eObjectDoor ) {
					mCastle->mStart_Room_Player2Set(mCurrentRoom->mNumber);
					mCastle->mStart_Door_Player2Set(findItemIndex( mCurrentObject ));
					castlePrepare();
				}
				break;

			case 0x10:	// 'q' Change Selected Placement Object 'Up'
				selectedObjectChange( true );
				break;

			case 0x1E:	// 'a' Change Selected Placement Object 'Down'
				selectedObjectChange( false );
				break;

			case 0x1F:	// 's' Object State
				if(mCurrentObject) {
					mCurrentObject->stateChange();
					castlePrepare();
				}
				break;

			case 0x1A:	// '[' Select a placed object
				selectPlacedObject( false );
				break;

			case 0x1B:	// ']' Select a placed object
				selectPlacedObject( true );
				break;
			
			case 0x20:	// 'd' object direction
				if( mCurrentObject ) {
					mCurrentObject->directionChange();
					castlePrepare();
				}

				break;

			case 0x26:	// 'l' Link Objects
				selectedObjectLink();
				break;

			case 0x0C:	{// '-' Previous Room
				int newRoom = ((char) mCurrentRoom->mNumber) - 1;
				if(newRoom < 0)
					newRoom = 0;
				roomChange( newRoom );
				break;
						}

			case 0x0D:	{// '=' Next Room
				int newRoom = ((char) mCurrentRoom->mNumber) + 1;
				//if( newRoom >= (int) mRooms.size() )
				//	newRoom = mRooms.size() - 1;
				roomChange( newRoom );
				break;
						}

			case 0x21:	// 'f' edit final room
				if( mCastle->mFinalRoomGet() == mCurrentRoom )
					roomChange(0);
				else
					roomChange(-1);
				
				break;

			case 0x73:	// 'Delete' Delete selected object
				selectedObjectDelete();
				break;

			
			default:
				/*if(key) {
					cout << "0x";
					cout << hex << (int) key << endl;
				}*/
				break;
		}

		// Check 'joystick' input
		parseInput();

		interruptWait( 2 );

		// Draw
		Sprite_Execute();
		object_Execute();

		// Redraw screen
		hw_Update();
	}

	mScreen->cursorEnabled(false);
	if( mTest )
		save( true );
}