diff options
Diffstat (limited to 'engines/avalanche/helper.cpp')
-rw-r--r-- | engines/avalanche/helper.cpp | 354 |
1 files changed, 0 insertions, 354 deletions
diff --git a/engines/avalanche/helper.cpp b/engines/avalanche/helper.cpp deleted file mode 100644 index 622244e133..0000000000 --- a/engines/avalanche/helper.cpp +++ /dev/null @@ -1,354 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -/* - * This code is based on the original source code of Lord Avalot d'Argent version 1.3. - * Copyright (c) 1994-1995 Mike, Mark and Thomas Thurman. - */ - -/* - ÛßÜ ÛßÜ ÜßßÜ ßÛß Ûßß Üß ßÛß ÜßÛßÜ ßÛß ÛÜ Û ÜÛßß ßÛß ÛßÜ Ûßß Û - Ûß ÛÛ Û Û Ü Û Ûßß ßÜ Û Û Û Û Û Û ÛÜÛ ßßßÜ Û ÛÛ Ûßß Û - ß ß ß ßß ßß ßßß ß ß ß ß ß ßßß ß ßß ßßß ß ß ß ßßß ßßß - - HELPER The help system unit. */ - -#define __helper_implementation__ - - -#include "helper.h" - - -/*#include "Crt.h"*/ -/*#include "Lucerna.h"*/ -/*#include "Pingo.h"*/ - -namespace Avalanche { - -struct buttontype { - char trigger; - byte whither; -}; - -const integer buttonsize = 930; - -const integer toolbar = 0; -const integer nim = 1; -const integer kbd = 2; -const integer credits = 3; -const integer joystick = 4; -const integer troubleshooting = 5; -const integer story = 6; -const integer mainscreen = 7; -const integer registering = 8; -const integer sound = 9; -const integer mouse = 10; -const integer filer = 11; -const integer back2game = 12; -const integer helponhelp = 13; -const integer pgdn = 14; -const integer pgup = 15; - -array<1, 10, buttontype> buttons; -byte highlight_was; - -void plot_button(integer y, byte which) { - untyped_file f; - pointer p; - - if (y > 200) { - background(2); /* Silly buttons. */ - delay(10); - background(0); - return; - } - getmem(p, buttonsize); - assign(f, "buttons.avd"); - reset(f, 1); - seek(f, which * buttonsize); - blockread(f, p, buttonsize); - - if (y == -177) - putimage(229, 5, p, 0); - else - putimage(470, y, p, 0); - close(f); - freemem(p, buttonsize); -} - -void getme(byte which); - -static untyped_file f; - - -static void chalk(byte y, string z) { - outtextxy(16, 41 + y * 10, z); -} - - - -static void getline(string &x) { - byte fz; - - blockread(f, x[0], 1); - blockread(f, x[1], (byte)(x[0])); - for (fz = 1; fz <= length(x); fz ++) - x[fz] = chr(ord(x[fz]) ^ 177); -} - -void getme(byte which) { /* Help icons are 80x20 */ - string x; - byte y, fv; - word offset; - - - off; - assign(f, "help.avd"); - y = 0; - highlight_was = 177; /* Forget where the highlight was. */ - reset(f, 1); - seek(f, which * 2); - blockread(f, offset, 2); - seek(f, offset); - - getline(x); - setfillstyle(1, 1); - bar(0, 0, 640, 200); - setfillstyle(1, 15); - bar(8, 40, 450, 200); - settextjustify(2, 2); - blockread(f, fv, 1); - plot_button(-177, fv); - - setcolor(0); - outtextxy(629, 26, x); /* Plot the title. */ - setcolor(3); - outtextxy(630, 25, x); - - settextjustify(0, 2); - settextstyle(0, 0, 2); - setcolor(0); - outtextxy(549, 1, "help!"); - setcolor(3); - outtextxy(550, 0, "help!"); - /***/ settextstyle(0, 0, 1); - - do { - getline(x); - if (x == '!') flush(); /* End of the help text is signalled with a !. */ - if (x[1] == '\\') { - setcolor(4); - chalk(y, copy(x, 2, 255)); - } else { - setcolor(0); - chalk(y, x); - } - y += 1; - } while (!false); - - /* We are now at the end of the text. Next we must read the icons. */ - - y = 0; - settextjustify(1, 1); - settextstyle(0, 0, 2); - while (! eof(f)) { - y += 1; - blockread(f, buttons[y].trigger, 1); - if (buttons[y].trigger == '\261') flush(); - blockread(f, fv, 1); - if (buttons[y].trigger != '\0') plot_button(13 + y * 27, fv); - blockread(f, buttons[y].whither, 1); /* this is the position to jump to */ - - - switch (buttons[y].trigger) { - case 'þ' : - x = "Esc"; - break; - case 'Ö' : - x = '\30'; - break; - case 'Ø' : - x = '\31'; - break; - default: - x = buttons[y].trigger; - } - setcolor(0); - outtextxy(589, 26 + y * 27, x); - setcolor(3); - outtextxy(590, 25 + y * 27, x); - - } - - settextjustify(0, 2); - settextstyle(0, 0, 1); - close(f); - on; -} - - -byte check_mouse(); -/* Returns clicked-on button, or 0 if none. */ -static void light(byte which, byte colour) { - if (which == 177) return; /* Dummy value for "no button at all". */ - setcolor(colour); - which = which & 31; - rectangle(466, 11 + which * 27, 555, 35 + which * 27); -} - -byte check_mouse() { - byte h_is; - - byte check_mouse_result; - check; - - if (mrelease != 0) { - /* Clicked *somewhere*... */ - if ((mx < 470) || (mx > 550) || (((my - 13) % 27) > 20)) - check_mouse_result = 0; - else - /* Clicked on a button. */ - check_mouse_result = ((my - 13) / 27); - } else { - if ((mx > 470) && (mx <= 550) && (((my - 13) % 27) <= 20)) { - /* No click, so highlight. */ - h_is = (my - 13) / 27; - if ((h_is < 1) || (h_is > 6)) h_is = 177; /* In case of silly values. */ - } else h_is = 177; - - if ((h_is != 177) && ((keystatus & 1) > 0)) h_is += 32; - - if (h_is != highlight_was) { - off; - light(highlight_was, 1); - highlight_was = h_is; - if (buttons[h_is & 31].trigger != '\0') { - if (h_is > 31) light(h_is, 11); - else light(h_is, 9); - } - on; - } - - check_mouse_result = 0; - } - return check_mouse_result; -} - -void continue_help() { - char r; - byte fv; - - do { - while (! keypressed()) { - fv = check_mouse(); - - if (fv > 0) - switch (buttons[fv].trigger) { - case '\0':/*null*/ - break; - case '\376': - return; - break; - default: { - dusk; - getme(buttons[fv].whither); - dawn; - continue_; - } - } - - } - r = upcase(readkey()); - switch (r) { - case '\33' : - return; - break; - case '\0' : - switch (readkey()) { - case '\110': - case '\111': - r = 'Ö'; - break; - case '\120': - case '\121': - r = 'Ø'; - break; - case '\73': - r = 'H'; - break; /* Help on help */ - default: - continue_; - } - break; - } - - for (fv = 1; fv <= 10; fv ++) { - buttontype &with = buttons[fv]; - if (with.trigger == r) { - dusk; - getme(with.whither); - dawn; - flush(); - } - } - - } while (!false); -} - -void boot_help() { - byte groi; - - dusk; - off; - oncandopageswap = false; - highlight_was = 177; - copypage(3, 1 - cp); /* Store old screen. */ groi = getpixel(0, 0); - - /* Set up mouse. */ - off_virtual; - newpointer(2); - setactivepage(3); - setvisualpage(3); - - getme(0); - dawn; - - newpointer(9); - on; - mousepage(3); - - continue_help(); - - mousepage(cp); - dusk; - off; - oncandopageswap = true; - copypage(1 - cp, 3); /* Restore old screen. */ groi = getpixel(0, 0); - on_virtual; - dawn; - fix_flashers; - - setvisualpage(cp); - setactivepage(1 - cp); -} - -} // End of namespace Avalanche.
\ No newline at end of file |