aboutsummaryrefslogtreecommitdiff
path: root/engines/avalanche/particle.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/avalanche/particle.cpp')
-rw-r--r--engines/avalanche/particle.cpp325
1 files changed, 0 insertions, 325 deletions
diff --git a/engines/avalanche/particle.cpp b/engines/avalanche/particle.cpp
deleted file mode 100644
index 74f9dbb65e..0000000000
--- a/engines/avalanche/particle.cpp
+++ /dev/null
@@ -1,325 +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.
- */
-
-#include "graph.h"
-/*#include "Crt.h"*/
-
-/*$R+*/
-
-namespace Avalanche {
-
-typedef matrix < '\0', '\377', 0, 15, byte > fonttype;
-
-struct markertype {
- word length;
- longint offset;
- byte checksum;
-};
-
-string rawname;
-array<0, 1999, char> buffer, was;
-word bufpos, bufsize;
-fonttype font;
-integer cpos;
-char r;
-boolean ok;
-
-const char marker = '\33';
-
-void cursor() {
- byte fv;
- for (fv = 12; fv <= 15; fv ++)
- mem[0xa000 * cpos + fv * 80] = ~(mem[0xa000 * cpos + fv * 80]);
-}
-
-void xy() {
- cpos = (bufpos / 80) * 1280 + (bufpos % 80);
-}
-
-void show() {
- word fv, orig, y;
- for (fv = 0; fv <= 1999; fv ++)
- if (buffer[fv] != was[fv]) {
- orig = (fv / 80) * 1280 + (fv % 80);
- for (y = 0; y <= 15; y ++)
- mem[0xa000 * orig + y * 80] = (byte)(font[buffer[fv]][y]);
- }
- xy();
- move(buffer, was, sizeof(buffer));
-}
-
-void sizeup() {
- do {
- switch (buffer[bufsize]) {
- case marker:
- return;
- break; /* we've found it OK! */
- case '\0':
- bufsize -= 1;
- break;
- default:
- bufsize += 1;
- }
- } while (!false);
-}
-
-void graphics() {
- integer gd, gm;
- file<fonttype> fontfile;
- gd = 3;
- gm = 1;
- initgraph(gd, gm, "c:\\bp\\bgi");
- assign(fontfile, "c:\\thomas\\lanche.fnt");
- reset(fontfile);
- fontfile >> font;
- close(fontfile);
-}
-
-void helpscreen();
-
-static byte l, fv;
-
-static void addon(char b, string st) {
- buffer[3 + 80 * l] = b;
- b -= 64;
- buffer[5 + 80 * l] = b;
- move(st[1], buffer[7 + 80 * l], length(st));
- l += 1;
-}
-
-void helpscreen() {
- array<0, 1999, char> temp;
- char r;
- l = 0;
- move(buffer, temp, 2000);
- fillchar(buffer, sizeof(buffer), '\0');
- addon('B', "Bubble");
- addon('C', "Centre text");
- addon('D', "Don't add \20 (at end)");
- addon('F', "Italic Font");
- addon('G', "Bell");
- addon('H', "Not allocated (=backspace)");
- addon('I', "Not allocated (=tab)");
- addon('L', "Left-justify text");
- addon('K', "Keyboard input");
- addon('M', "Carriage return (same as \r key)");
- addon('P', "Scroll (Paragraph break)");
- addon('Q', "Yes/no scroll (question)");
- addon('R', "Roman font");
- addon('S', "Fix to sprite");
- addon('U', "Money (in œsd format)");
- addon('V', "View icon (number from ^S)");
- show();
- do {
- r = readkey();
- } while (!(! keypressed()));
- cleardevice();
- fillchar(was, sizeof(was), '\0');
- move(temp, buffer, 2000);
- show();
-}
-
-void edit_it();
-
-static void legit(char r) {
- ; /* it's a legit keystroke */
- move(buffer[bufpos], buffer[bufpos + 1], 1999 - bufpos);
- buffer[bufpos] = r;
- bufpos += 1;
- show();
-}
-
-void edit_it() {
- byte fv;
- bufpos = 0;
- fillchar(was, sizeof(was), '\0');
- show();
- do {
- cursor();
- r = readkey();
- cursor();
- switch (r) {
- case '\0':
- switch (readkey()) { /* extd keystrokes */
- case 'K':
- if (bufpos > 0) {
- bufpos -= 1;
- xy();
- }
- break; /* Left */
- case 'M':
- if (bufpos < bufsize) {
- bufpos += 1;
- xy();
- }
- break; /* Right */
- case 'H':
- if (bufpos > 80) {
- bufpos -= 80;
- xy();
- }
- break; /* Up */
- case 'P':
- if (bufpos < (cardinal)bufsize - 79) {
- bufpos += 80;
- xy();
- }
- break; /* Down */
- case 's':
- if (bufpos > 10) {
- bufpos -= 10;
- xy();
- }
- break;
- case 't':
- if (bufpos < (cardinal)bufsize - 10) {
- bufpos += 10;
- xy();
- }
- break;
- case 'G': {
- bufpos = 0;
- xy();
- }
- break; /* Home */
- case 'O': {
- bufpos = bufsize;
- xy();
- }
- break; /* End */
- case 'S':
- if (bufpos < bufsize) {
- ; /* Del */
- move(buffer[bufpos + 1], buffer[bufpos], 1999 - bufpos);
- show();
- }
- break;
- case ';':
- helpscreen();
- break;
- case 'A':
- legit('\357');
- break; /* copyright symbol */
- case 'B':
- legit('\221');
- break; /* uppercase AE */
- case 'C':
- legit('\222');
- break; /* lowercase AE */
- }
- break;
- case '\10':
- if (bufpos > 0) {
- ; /* backspace */
- bufpos -= 1;
- move(buffer[bufpos + 1], buffer[bufpos], 1999 - bufpos);
- show();
- }
- break;
- case '\33': {
- restorecrtmode();
- return;
- }
- break; /* end of editing */
- default:
- legit(r);
- }
- sizeup();
- } while (!false);
-}
-
-void loadit() {
- untyped_file f;
- if (pos(".", rawname) == 0) rawname = rawname + ".raw";
- fillchar(buffer, sizeof(buffer), '\0');
- /*$I-*/
- assign(f, rawname);
- reset(f, 1);
- if (ioresult != 0) {
- output << string('\7') + "New file!" + '\7' << NL;
- buffer[0] = marker;
- return;
- }
- bufsize = filesize(f);
- blockread(f, buffer, bufsize);
- close(f);
- while (buffer[bufsize] == '\0') bufsize -= 1;
- if (buffer[bufsize] != marker) {
- ; /* add on a marker */
- bufsize += 1;
- buffer[bufsize] = marker;
- }
-}
-
-void saveit() {
- untyped_file f;
- output << "Saving " << rawname << ", " << bufsize << " bytes..." << NL;
- assign(f, rawname);
- rewrite(f, 1);
- blockwrite(f, buffer, bufsize);
- close(f);
-}
-
-int main(int argc, const char *argv[]) {
- pio_initialize(argc, argv);
- output << "Filename of .RAW file?";
- input >> rawname >> NL;
- loadit();
- ok = false;
- do {
- graphics();
- edit_it();
- output << "Now what?" << NL;
- output << NL;
- output << " Filename: " << rawname << NL;
- output << " Size of text: " << bufsize << NL;
- output << " Cursor position: " << bufpos << NL;
- output << NL;
- output << " C) Cancel this & continue edit" << NL;
- output << " S) Save under current name" << NL;
- output << " A) Save under a different name" << NL;
- output << " X) Exit & lose all changes." << NL;
- output << NL;
- output << "Pick one!" << NL;
- do {
- r = upcase(readkey());
- } while (!(set::of('C', 'S', 'A', 'X', eos).has(r)));
- switch (r) {
- case 'X':
- ok = true;
- break;
- case 'S': {
- saveit();
- exit(0);
- }
- break;
- }
- } while (!ok);
- return EXIT_SUCCESS;
-}
-
-} // End of namespace Avalanche. \ No newline at end of file