bool PongHighScores::enterCharacter( unsigned char character )
{
#ifndef USE_VKB
    return true;
#endif
    if (!textInputEnabled) {
        pongApp->getEngine()->sendEvent( GF::VIRTUAL_KEYBOARD, 0);
        return false;
    }
    if (newScorePos<0) return false;        // no new score requires a name.
    int curlength = strlen( scoreTags[ newScorePos ] );
    if (curlength<SCORE_TAG_CHARACTERS-1) {
        if (character == 13 || character == 10) {
            textInputEnabled = false;
            pongApp->getEngine()->sendEvent( GF::VIRTUAL_KEYBOARD, 0);
            return false;
        }
        else if(character==8 || character==127 && curlength>0) // backspace or delete
        {
            scoreTags[newScorePos][ curlength-1 ] = 0;
            buildScreen();
        }
        else            // Enter new character into the string and rebuild the screen.
        {
            scoreTags[newScorePos][ curlength ] = character;
            scoreTags[newScorePos][ curlength+1 ] = 0;
            buildScreen();
        }
    }
}
PongHighScores::PongHighScores( PongApp *app, unsigned int new_score_entry ) {
    // initialize new entry
    pongApp = app;
    createDisplayGrid();
    fade = 0;
    visible = true;
    angle = 0.0f;
    textInputEnabled = false;

    char fileOut[1024];

    // Load the highscore data
    FILE *file = fopen(pongApp->getGameEngine()->adjustPath("configdata:qtepong.dat", fileOut, 1024), "rb");
    //FILE *file = 0;
    if (file) {
        fread( scoreTags, sizeof(char),SCORE_TAG_CHARACTERS*NOF_HIGH_SCORES, file );
        fread( scores, sizeof (unsigned int), NOF_HIGH_SCORES, file );
        fclose(file);
    } else {
        for (int f=0; f<NOF_HIGH_SCORES; f++) {
            sprintf( scoreTags[f], "beatme%d", f+1 );
            scores[f] =  20+f*f*300;
        };
    };

    orderScores(-1);

    // For debug purposes,.. override highscores
     //new_score_entry = scores[0]+100;

    if (new_score_entry>0 && new_score_entry>scores[0]) {
        scores[0] = new_score_entry;
#ifndef USE_VKB
        app->getGameEngine()->queryTextInput("Enter Your Name", scoreTags[0], SCORE_TAG_CHARACTERS );
#else
        app->getEngine()->sendEvent( GF::VIRTUAL_KEYBOARD, 1);
        strcpy( scoreTags[0], "");
        textInputEnabled = true;
#endif
        // PREPROCESS QUERIED TEXT.
        for (int f=0; f<SCORE_TAG_CHARACTERS; f++) {
            // drop to low-case
            if (scoreTags[0][f]>='A' && scoreTags[0][f]<='Z') scoreTags[0][f] = scoreTags[0][f] - 'A'  + 'a';
        };

        newScorePos = 0;
    } else newScorePos = -1;        // DONT TRACK IT.

    newScorePos = orderScores(newScorePos);

    buildScreen();
}
Exemple #3
0
void AmazonRoom::reloadRoom1() {
	if (_vm->_player->_roomNumber == 29 || _vm->_player->_roomNumber == 31
			|| _vm->_player->_roomNumber == 42 || _vm->_player->_roomNumber == 44) {
		Resource *spriteData = _vm->_files->loadFile("MAYA.LZ");
		_game->_inactive._altSpritesPtr = new SpriteResource(_vm, spriteData);
		delete spriteData;
		_vm->_currentCharFlag = false;
	}

	_selectCommand = -1;
	_vm->_events->setNormalCursor(CURSOR_CROSSHAIRS);
	_vm->_mouseMode = 0;
	_vm->_boxSelect = true;
	_vm->_player->_playerOff = false;

	_vm->_screen->fadeOut();
	_vm->_screen->clearScreen();
	roomSet();

	if (_roomFlag != 1 && (_vm->_player->_roomNumber != 61 || !_antOutFlag)) {
		_vm->_player->load();
		_vm->_player->calcManScale();
	}

	if (_vm->_player->_roomNumber != 20 && _vm->_player->_roomNumber != 24
			&& _vm->_player->_roomNumber != 33 && _vm->_player->_roomNumber != 45) {
		roomMenu();
	}

	_vm->_screen->setBufferScan();
	setupRoom();
	setWallCodes();
	buildScreen();

	if (!_vm->_screen->_vesaMode) {
		_vm->copyBF2Vid();
	} else if (_vm->_player->_roomNumber != 20 && _vm->_player->_roomNumber != 24
			&& _vm->_player->_roomNumber != 33) {
		_vm->_screen->setPalette();
		_vm->copyBF2Vid();
	}

	// Stop player moving
	_vm->_player->_playerMove = false;
	_vm->_player->_frame = 0;

	// Clear any dirty rects from the old scene
	_vm->_oldRects.clear();
	_vm->_newRects.clear();
}
/** Runs the dialog.
*/
int
CADialog::run() {
    if( CA_APP->debug ) std::cout << "CADialog::run() begin" << std::endl;

    //CL_Input::chain_button_release.push_back( this );

    //slot = CL_Input::sig_button_release.connect(thCreateSlot(this, &CADialog::on_button_release));
    //slot = CL_Input::sig_button_press.connect(this, &CADialog::on_button_release);
    slot = CL_Keyboard::sig_key_up().connect(this, &CADialog::on_key_released);

    //if( !modal ) CA_APP->fadeScreen( true, this );
    done = false;
    cancel = false;

    // Dialog loop:
    //
    while( !done ) {
        CA_APP->measureFrameTime( true );

        if( modal && screen ) screen->buildScreen();
        buildScreen();

        // Play background sound:
        CASoundEffect::playBackgroundMelody();

        CL_Display::flip();   // Copy framebufer to screen
        CL_System::keep_alive();      // VERY VITAL for the system!

        CA_APP->measureFrameTime( false );
    }

    //if( !modal ) CA_APP->fadeScreen( false, this );
    CA_APP->waitForSilence();

    //CL_Input::chain_button_release.remove( this );

    if( CA_APP->debug ) std::cout << "CADialog::run() end" << std::endl;

    CL_Keyboard::sig_key_up().disconnect(slot);
    return (int)(!cancel);
}
/** Runs the screen.
*/
int
CAChampionshipScreen::run() 
{
    //CL_Input::chain_button_release.push_back( this );
    //slot = CL_Input::sig_button_release.connect(thCreateSlot(this, &CAChampionshipScreen::on_button_release));
    //slot = CL_Input::sig_button_press.connect(this, &CAChampionshipScreen::on_button_release);
    slot = CA_APP->keyboard.sig_key_up().connect(this, &CAChampionshipScreen::on_key_released);

    CA_APP->fadeScreen( true, this );
    done = false;
    cancel = false;

    // Screen loop:
    //
    while( !done ) 
    {
        CA_APP->measureFrameTime( true );

        buildScreen();

        // Play background sound:
        CASoundEffect::playBackgroundMelody();

        CA_APP->display_window->flip();   // Copy framebufer to screen
        CL_KeepAlive::process();      // VERY VITAL for the system!

        CA_APP->measureFrameTime( false );
    }

    CA_APP->fadeScreen( false, this );
    CA_APP->waitForSilence();

    //CL_Input::chain_button_release.remove( this );

    if (m_player[0] == m_humanPlayer)
        return 0;
    else
        return 1;
}
/** Runs the screen.
*/
int
CASignUpScreen::run() 
{
    slot = CA_APP->keyboard.sig_key_up().connect(this, &CASignUpScreen::on_key_released);

    CA_APP->fadeScreen( true, this );
    done = false;
    cancel = false;

    // Screen loop:
    //
    while( !done ) 
    {
        CA_APP->measureFrameTime( true );

        buildScreen();

        // Play background sound:
        CASoundEffect::playBackgroundMelody();

        CA_APP->display_window->flip();   // Copy framebuffer to screen
        CL_KeepAlive::process();      // VERY VITAL for the system!

        CA_APP->measureFrameTime( false );
    }

    CA_APP->fadeScreen( false, this );
    CA_APP->waitForSilence();

    //CL_Input::chain_button_release.remove( this );

    std::vector<std::string>::const_iterator it = std::find(CA_APP->trackList.begin(), CA_APP->trackList.end(), m_trackList[cursor]);
    
    //return (cancel ? -1 : cursor+offset);
    return (cancel ? -1 : it-CA_APP->trackList.begin());
}