aboutsummaryrefslogtreecommitdiff
path: root/engines/dreamweb/dreambase.h
diff options
context:
space:
mode:
Diffstat (limited to 'engines/dreamweb/dreambase.h')
-rw-r--r--engines/dreamweb/dreambase.h47
1 files changed, 41 insertions, 6 deletions
diff --git a/engines/dreamweb/dreambase.h b/engines/dreamweb/dreambase.h
index 4173499203..99cb8476e1 100644
--- a/engines/dreamweb/dreambase.h
+++ b/engines/dreamweb/dreambase.h
@@ -34,26 +34,58 @@ namespace DreamWeb {
namespace DreamGen {
+/**
+ * This class is one of the parent classes of DreamGenContext. Its sole purpose
+ * is to allow us to incrementally move things out of DreamGenContext into this
+ * base class, as soon as they don't modify any context registers (ax, bx, cx, ...)
+ * anymore.
+ * Ultimately, DreamGenContext should be empty, at which point it can be removed
+ * together with class Context. When that happens, we can probably merge
+ * DreamBase into DreamWebEngine.
+ */
class DreamBase {
+protected:
+ DreamWeb::DreamWebEngine *engine;
+
public:
enum { kDefaultDataSegment = 0x1000 };
- DreamWeb::DreamWebEngine *engine;
-
SegmentPtr _realData; ///< the primary data segment, points to a huge blob of binary data
SegmentRef data; ///< fake segment register always pointing to data segment
- DreamBase() : _realData(new Segment()), data(kDefaultDataSegment, _realData) {
+ DreamBase(DreamWeb::DreamWebEngine *en) :
+ engine(en),
+ _realData(new Segment()),
+ data(kDefaultDataSegment, _realData) {
}
-
public:
+ // from pathfind.cpp
+ Common::Point _lineData[200]; // Output of Bresenham
+ void checkDest(const RoomPaths *roomsPaths);
+
// from print.cpp
uint8 getNextWord(const Frame *charSet, const uint8 *string, uint8 *totalWidth, uint8 *charCount);
uint8 getNumber(const Frame *charSet, const uint8 *string, uint16 maxWidth, bool centered, uint16 *offset);
uint8 kernChars(uint8 firstChar, uint8 secondChar, uint8 width);
+ // from stubs.cpp
+ void crosshair();
+ void showBlink();
+ void dumpBlink();
+ void dumpPointer();
+ void showRyanPage();
+ void volumeAdjust();
+
// from vgagrafx.cpp
+ uint8 _workspace[(0x1000 + 2) * 16];
+ inline uint8 *workspace() { return _workspace; }
+ void clearWork();
+
+ void multiGet(uint8 *dst, uint16 x, uint16 y, uint8 width, uint8 height);
+ void multiPut(const uint8 *src, uint16 x, uint16 y, uint8 width, uint8 height);
+ void multiDump(uint16 x, uint16 y, uint8 width, uint8 height);
+ void workToScreenCPP();
void printUnderMon();
void cls();
void frameOutV(uint8 *dst, const uint8 *src, uint16 pitch, uint16 width, uint16 height, int16 x, int16 y);
@@ -62,8 +94,11 @@ public:
void frameOutFx(uint8 *dst, const uint8 *src, uint16 pitch, uint16 width, uint16 height, uint16 x, uint16 y);
void doShake();
void showPCX(const Common::String &name);
-
-// TODO: Move more methods from stubs.h to here.
+ void showFrame(const Frame *frameData, uint16 x, uint16 y, uint16 frameNumber, uint8 effectsFlag, uint8 *width, uint8 *height);
+ void showFrame(const Frame *frameData, uint16 x, uint16 y, uint16 frameNumber, uint8 effectsFlag);
+ void createPanel();
+ void createPanel2();
+ void showPanel();
};