aboutsummaryrefslogtreecommitdiff
path: root/engines/mortevielle/outtext.cpp
diff options
context:
space:
mode:
authorStrangerke2012-03-10 09:46:51 +0100
committerStrangerke2012-04-06 08:23:06 +0200
commit79dd91803338380c62a6a1aa2ba3dd0690e565be (patch)
tree97648336583b8a111f6fc95d97a66aec5832b902 /engines/mortevielle/outtext.cpp
parent60730190832def71a6f36eec5f86ade96a705709 (diff)
downloadscummvm-rg350-79dd91803338380c62a6a1aa2ba3dd0690e565be.tar.gz
scummvm-rg350-79dd91803338380c62a6a1aa2ba3dd0690e565be.tar.bz2
scummvm-rg350-79dd91803338380c62a6a1aa2ba3dd0690e565be.zip
MORTEVIELLE: regroup several files
Diffstat (limited to 'engines/mortevielle/outtext.cpp')
-rw-r--r--engines/mortevielle/outtext.cpp226
1 files changed, 224 insertions, 2 deletions
diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp
index d8e2309a4c..9d7c38d864 100644
--- a/engines/mortevielle/outtext.cpp
+++ b/engines/mortevielle/outtext.cpp
@@ -25,12 +25,14 @@
* Copyright (c) 1988-1989 Lankhor
*/
+#include "common/file.h"
+#include "common/str.h"
+#include "mortevielle/mor.h"
+#include "mortevielle/mouse.h"
#include "mortevielle/outtext.h"
#include "mortevielle/graphics.h"
-#include "mortevielle/level15.h"
#include "mortevielle/mortevielle.h"
#include "mortevielle/var_mor.h"
-#include "common/str.h"
namespace Mortevielle {
@@ -239,4 +241,224 @@ void displayStr(Common::String inputStr, int x, int y, int dx, int dy, int typ)
}
}
+void chardes(Common::String filename, int32 skipSize, int length) {
+ Common::File f;
+ if (!f.open(filename))
+ error("Missing file %s", filename.c_str());
+
+ int skipBlock = 0;
+ while (skipSize > 127) {
+ ++skipBlock;
+ skipSize -= 128;
+ }
+ if (skipBlock != 0)
+ f.seek(skipBlock * 0x80);
+
+ int remainingSkipSize = abs(skipSize);
+ int totalLength = length + remainingSkipSize;
+ int memIndx = 0x6000 * 16;
+ while (totalLength > 0) {
+ f.read(&g_mem[memIndx], 128);
+ totalLength -= 128;
+ memIndx += 128;
+ }
+ f.close();
+
+ for (int i = remainingSkipSize; i <= length + remainingSkipSize; ++i)
+ g_mem[0x7000 * 16 + i - remainingSkipSize] = g_mem[0x6000 * 16 + i];
+}
+
+void charani(Common::String filename, int32 skipSize, int length) {
+ Common::File f;
+ if (!f.open(filename))
+ error("Missing file - %s", filename.c_str());
+
+ int skipBlock = 0;
+ while (skipSize > 127) {
+ skipSize = skipSize - 128;
+ ++skipBlock;
+ }
+ if (skipBlock != 0)
+ f.seek(skipBlock * 0x80);
+
+ int remainingSkipSize = abs(skipSize);
+ int fullLength = length + remainingSkipSize;
+ int memIndx = 0x6000 * 16;
+ while (fullLength > 0) {
+ f.read(&g_mem[memIndx], 128);
+ fullLength -= 128;
+ memIndx += 128;
+ }
+ f.close();
+
+ for (int i = remainingSkipSize; i <= length + remainingSkipSize; ++i)
+ g_mem[0x7314 * 16 + i - remainingSkipSize] = g_mem[0x6000 * 16 + i];
+}
+
+void taffich() {
+ byte tran1[] = { 121, 121, 138, 139, 120 };
+ byte tran2[] = { 150, 150, 152, 152, 100, 110, 159, 100, 100 };
+
+ int cx, handle, npal;
+ int32 lgt;
+ int alllum[16];
+
+
+ int a = g_caff;
+ if ((a >= 153) && (a <= 161))
+ a = tran2[a - 153];
+ else if ((a >= 136) && (a <= 140))
+ a = tran1[a - 136];
+ int b = a;
+ if (g_maff == a)
+ return;
+
+ switch (a) {
+ case 16:
+ g_s._pourc[9] = '*';
+ g_s._teauto[42] = '*';
+ break;
+ case 20:
+ g_s._teauto[39] = '*';
+ if (g_s._teauto[36] == '*') {
+ g_s._pourc[3] = '*';
+ g_s._teauto[38] = '*';
+ }
+ break;
+ case 24:
+ g_s._teauto[37] = '*';
+ break;
+ case 30:
+ g_s._teauto[9] = '*';
+ break;
+ case 31:
+ g_s._pourc[4] = '*';
+ g_s._teauto[35] = '*';
+ break;
+ case 118:
+ g_s._teauto[41] = '*';
+ break;
+ case 143:
+ g_s._pourc[1] = '*';
+ break;
+ case 150:
+ g_s._teauto[34] = '*';
+ break;
+ case 151:
+ g_s._pourc[2] = '*';
+ break;
+ default:
+ break;
+ }
+
+ g_vm->_okdes = true;
+ hideMouse();
+ lgt = 0;
+ Common::String filename;
+
+ if ((a != 50) && (a != 51)) {
+ int m = a + 2000;
+ if ((m > 2001) && (m < 2010))
+ m = 2001;
+ if (m == 2011)
+ m = 2010;
+ if (a == 32)
+ m = 2034;
+ if ((a == 17) && (g_maff == 14))
+ m = 2018;
+
+ if (a > 99) {
+ if ((g_is == 1) || (g_is == 0))
+ m = 2031;
+ else
+ m = 2032;
+ }
+
+ if (((a > 69) && (a < 80)) || (a == 30) || (a == 31) || (a == 144) || (a == 147) || (a == 149))
+ m = 2030;
+
+ if (((a < 27) && (((g_maff > 69) && (!g_s._ipre)) || (g_maff > 99))) || ((g_maff > 29) && (g_maff < 33)))
+ m = 2033;
+
+ g_maff = a;
+ if (a == 159)
+ a = 86;
+ else if (a > 140)
+ a = a - 67;
+ else if (a > 137)
+ a = a - 66;
+ else if (a > 99)
+ a = a - 64;
+ else if (a > 69)
+ a = a - 42;
+ else if (a > 29)
+ a = a - 5;
+ else if (a == 26)
+ a = 24;
+ else if (a > 18)
+ a = a - 1;
+ npal = a;
+
+ for (cx = 0; cx <= (a - 1); ++cx)
+ lgt = lgt + g_l[cx];
+ handle = g_l[a];
+
+ filename = "DXX.mor";
+ } else {
+ filename = "DZZ.mor";
+ handle = g_l[87];
+ if (a == 51) {
+ lgt = handle;
+ handle = g_l[88];
+ }
+ g_maff = a;
+ npal = a + 37;
+ }
+ chardes(filename, lgt, handle);
+ if (g_vm->_currGraphicalDevice == MODE_HERCULES) {
+ for (int i = 0; i <= 15; ++i) {
+ int palh = READ_LE_UINT16(&g_mem[(0x7000 * 16) + ((i + 1) << 1)]);
+ alllum[i] = (palh & 15) + (((uint)palh >> 12) & 15) + (((uint)palh >> 8) & 15);
+ }
+ for (int i = 0; i <= 15; ++i) {
+ int k = 0;
+ for (int j = 0; j <= 15; ++j)
+ if (alllum[j] > alllum[k])
+ k = j;
+ g_mem[(0x7000 * 16) + 2 + (k << 1)] = g_rang[i];
+ alllum[k] = -1;
+ }
+ }
+ g_numpal = npal;
+ writepal(npal);
+
+ if ((b < 15) || (b == 16) || (b == 17) || (b == 24) || (b == 26) || (b == 50)) {
+ lgt = 0;
+ if ((b < 15) || (b == 16) || (b == 17) || (b == 24) || (b == 26)) {
+ if (b == 26)
+ b = 18;
+ else if (b == 24)
+ b = 17;
+ else if (b > 15)
+ --b;
+ for (cx = 0; cx <= (b - 1); ++cx)
+ lgt += g_l[cx + 89];
+ handle = g_l[b + 89];
+ filename = "AXX.mor";
+ } else if (b == 50) {
+ filename = "AZZ.mor";
+ handle = 1260;
+ }
+ charani(filename, lgt, handle);
+ }
+ showMouse();
+ if ((a < 27) && ((g_maff < 27) || (g_s._currPlace == LANDING)) && (g_msg[4] != OPCODE_ENTER)) {
+ if ((a == 13) || (a == 14))
+ displayAloneText();
+ else if (!g_vm->_blo)
+ cx = t11(g_s._currPlace);
+ g_mpers = 0;
+ }
+}
+
} // End of namespace Mortevielle