Ejemplo n.º 1
0
void Troll::gameOver() {
    // We do a check to see if the game should quit. Without this, the game show the picture, plays the
    // music, and then quits. So if the game is quitting, we shouldn't run the "game over" part.
    if (_vm->shouldQuit())
        return;

    char szMoves[40];

    _vm->clearTextArea();
    drawPic(42, true, true);

    playTune(4, 25);

    printUserMessage(16);

    printUserMessage(33);

    _vm->clearTextArea();

    drawPic(46, true, true);

    sprintf(szMoves, IDS_TRO_GAMEOVER_0, _moves);
    _vm->drawStr(21, 1, kColorDefault, szMoves);
    _vm->drawStr(22, 1, kColorDefault, IDS_TRO_GAMEOVER_1);
    _vm->_gfx->doUpdate();

    pressAnyKey();
}
Ejemplo n.º 2
0
void Troll::credits() {
    _vm->clearScreen(0x07);

    _vm->drawStr(1, 2, kColorDefault, IDS_TRO_CREDITS_0);

    int color = 10;
    char str[2];

    str[1] = 0;

    for (uint i = 0; i < strlen(IDS_TRO_CREDITS_1); i++) {
        str[0] = IDS_TRO_CREDITS_1[i];
        _vm->drawStr(7, 19 + i, color++, str);
        if (color > 15)
            color = 9;
    }

    _vm->drawStr(8, 19, kColorDefault, IDS_TRO_CREDITS_2);

    _vm->drawStr(13, 11, 9, IDS_TRO_CREDITS_3);
    _vm->drawStr(15, 8, 10, IDS_TRO_CREDITS_4);
    _vm->drawStr(17, 7, 12, IDS_TRO_CREDITS_5);
    _vm->drawStr(19, 2, 14, IDS_TRO_CREDITS_6);

    _vm->_gfx->doUpdate();

    pressAnyKey();
}
Ejemplo n.º 3
0
void Troll::printUserMessage(int msgId) {
    int i;

    _vm->clearTextArea();

    for (i = 0; i < _userMessages[msgId - 1].num; i++) {
        _vm->drawStr(21 + i, 1, kColorDefault, _userMessages[msgId - 1].msg[i]);
    }

    if (msgId == 34) {
        for (i = 0; i < 2; i++)
            playTune(5, 11);
    }
    pressAnyKey();
}
Ejemplo n.º 4
0
void Troll::pickupTreasure(int treasureId) {
    char tmp[40];

    _inventory[IDI_TRO_MAX_TREASURE - _treasuresLeft] = treasureId;

    if (_currentRoom != 24) {
        _vm->clearTextArea();
        drawPic(_currentRoom, false, true);
        _vm->_gfx->doUpdate();
    }

    printUserMessage(treasureId + 16);

    _vm->clearTextArea();

    _treasuresLeft--;

    switch (_treasuresLeft) {
    case 1:
        _vm->drawStr(22, 1, kColorDefault, IDS_TRO_TREASURE_7);
        break;
    case 0:
        _vm->drawStr(22, 1, kColorDefault, IDS_TRO_TREASURE_8);
        _vm->drawStr(23, 4, kColorDefault, IDS_TRO_TREASURE_9);

        _roomStates[6] = 1;

        _locMessagesIdx[6] = IDO_TRO_ALLTREASURES;
        break;
    default:
        sprintf(tmp, IDS_TRO_TREASURE_3, _treasuresLeft);
        _vm->drawStr(22, 1, kColorDefault, tmp);
        break;
    }

    pressAnyKey();
}
Ejemplo n.º 5
0
void Troll::inventory() {
    char tmp[40];
    int n;

    _vm->clearScreen(0x07);
    _vm->drawStr(1, 12, kColorDefault, IDS_TRO_TREASURE_0);
    _vm->drawStr(2, 12, kColorDefault, IDS_TRO_TREASURE_1);


    for (int i = 0; i < IDI_TRO_MAX_TREASURE - _treasuresLeft; i++) {
        n = _inventory[i] - 1;

        sprintf(tmp, " %2d ", i + 1);

        _vm->drawStr(2 + i, 10, _items[n].bg << 4 | 0x0f,  tmp);
        _vm->drawStr(2 + i, 14, _items[n].bg << 4 | _items[n].fg,  _items[n].name);
    }


    switch (_treasuresLeft) {
    case 1:
        sprintf(tmp, IDS_TRO_TREASURE_5, _treasuresLeft);
        _vm->drawStr(20, 10, kColorDefault, tmp);
        break;
    case 0:
        _vm->drawStr(20, 1, kColorDefault, IDS_TRO_TREASURE_6);
        break;
    case IDI_TRO_MAX_TREASURE:
        _vm->drawStr(3, 17, kColorDefault, IDS_TRO_TREASURE_2);
    default:
        sprintf(tmp, IDS_TRO_TREASURE_4, _treasuresLeft);
        _vm->drawStr(20, 10, kColorDefault, tmp);
        break;
    }

    pressAnyKey(6);
}
Ejemplo n.º 6
0
main()
{
    int f, g, a, b, c;

    zx_border(0);
    zx_cls(0);
    printPaper(0);
    printInk(6);
    printAt(4, 22);
    printf("BIFROST*");
    printAt(5, 23);
    printf("ENGINE");
    printAt(6, 24);
    printf("DEMO");
    printInk(4);
    printAt(10, 24);
    printf("with");
    printAt(11, 23);
    printf("z88dk!");

    BIFROSTH_resetTileImages(_ctiles);
    
    for (f = 0; f < 81; ++f) {
        BIFROSTH_tilemap[f] = BIFROSTH_STATIC + f;
    }

    BIFROSTH_start();

    while (1) {
        pressAnyKey();

        printInk(5);
        printAt(20, 1);
        printf("Demonstrating static tiles");

        for (f = 0; f < 81; ++f) {
            BIFROSTH_tilemap[f] = BIFROSTH_STATIC + (rand()%26)+8;
        }
        pressAnyKey();

        printInk(5);
        printAt(20, 1);
        printf("Animated tiles (4 frames) ");

        pressSpeedKey();

        printInk(5);
        printAt(20, 17);
        printf("2");

        BIFROSTH_resetAnim2Frames();
        pressSpeedKey();
        BIFROSTH_resetAnim4Frames();

        printInk(5);
        printAt(20, 1);
        printf("Directly modifying areas      ");

        M_BIFROSTH_SETTILE(4, 4, BIFROSTH_DISABLED);
        M_BIFROSTH_SETTILE(4, 5, BIFROSTH_DISABLED);

        printAt(9, 9);
        printf("BIFR");
        printAt(10, 9);
        printf("OST*");

        for (c = 0; c < 8; ++c) {
            a = rand()%8;
            for (b = 0; b < 2; ++b) {
                for (f = 8+72+0; f < 8+72+16; ++f) {
                    for (g = 9; g < 13; ++g) {
                        *BIFROSTH_findAttrH(f, g) = (b == 0 ? a*8 : a);
                        a = (a == 7 ? 3 : a+1);
                    }
                }
            }
        }
    }
}
Ejemplo n.º 7
0
void Troll::tutorial() {
    bool done = false;
    int iSel = 0;
    //char szTreasure[16] = {0};

    while (!_vm->shouldQuit()) {
        _vm->clearScreen(0xFF);

        _vm->printStr(IDS_TRO_TUTORIAL_0);
        _vm->getSelection(kSelSpace);

        _vm->clearScreen(0x55);
        _vm->setDefaultTextColor(0x0F);

        done = false;
        while (!done && !_vm->shouldQuit()) {
            getMenuSel(IDS_TRO_TUTORIAL_1, &iSel, IDI_TRO_MAX_OPTION);

            switch (iSel) {
            case IDI_TRO_SEL_OPTION_1:
                _vm->clearScreen(0x22, false);
                _vm->_gfx->doUpdate();
                break;
            case IDI_TRO_SEL_OPTION_2:
                _vm->clearScreen(0x00, false);
                _vm->_gfx->doUpdate();
                break;
            case IDI_TRO_SEL_OPTION_3:
                done = true;
                break;
            }
        }

        // do you need more practice ?
        _vm->clearScreen(0x4F);
        _vm->drawStr(7, 4, kColorDefault, IDS_TRO_TUTORIAL_5);
        _vm->drawStr(9, 4, kColorDefault, IDS_TRO_TUTORIAL_6);
        _vm->_gfx->doUpdate();

        if (!_vm->getSelection(kSelYesNo))
            break;
    }

    // show info texts
    _vm->clearScreen(0x5F);
    _vm->drawStr(4, 1, kColorDefault, IDS_TRO_TUTORIAL_7);
    _vm->drawStr(5, 1, kColorDefault, IDS_TRO_TUTORIAL_8);
    _vm->_gfx->doUpdate();
    pressAnyKey();

    _vm->clearScreen(0x2F);
    _vm->drawStr(6, 1, kColorDefault, IDS_TRO_TUTORIAL_9);
    _vm->_gfx->doUpdate();
    pressAnyKey();

    _vm->clearScreen(0x19);
    _vm->drawStr(7, 1, kColorDefault, IDS_TRO_TUTORIAL_10);
    _vm->drawStr(8, 1, kColorDefault, IDS_TRO_TUTORIAL_11);
    _vm->_gfx->doUpdate();
    pressAnyKey();

    _vm->clearScreen(0x6E);
    _vm->drawStr(9, 1, kColorDefault, IDS_TRO_TUTORIAL_12);
    _vm->drawStr(10, 1, kColorDefault, IDS_TRO_TUTORIAL_13);
    _vm->_gfx->doUpdate();
    pressAnyKey();

    _vm->clearScreen(0x4C);
    _vm->drawStr(11, 1, kColorDefault, IDS_TRO_TUTORIAL_14);
    _vm->drawStr(12, 1, kColorDefault, IDS_TRO_TUTORIAL_15);
    _vm->_gfx->doUpdate();
    pressAnyKey();

    _vm->clearScreen(0x5D);
    _vm->drawStr(13, 1, kColorDefault, IDS_TRO_TUTORIAL_16);
    _vm->drawStr(14, 1, kColorDefault, IDS_TRO_TUTORIAL_17);
    _vm->drawStr(15, 1, kColorDefault, IDS_TRO_TUTORIAL_18);
    _vm->_gfx->doUpdate();
    pressAnyKey();

    // show treasures
    _vm->clearScreen(0x2A);
    _vm->drawStr(2, 1, kColorDefault, IDS_TRO_TUTORIAL_19);
    for (int i = 0; i < IDI_TRO_MAX_TREASURE; i++)
        _vm->drawStr(19 - i, 11, kColorDefault, _items[i].name);

    _vm->_gfx->doUpdate();

    pressAnyKey();
}