aboutsummaryrefslogtreecommitdiff
path: root/engines/m4/mads_views.h
diff options
context:
space:
mode:
authorPaul Gilbert2010-05-24 12:12:27 +0000
committerPaul Gilbert2010-05-24 12:12:27 +0000
commit6bda3e15db6baaa3af3d479e86dad2dd4f95084f (patch)
tree030bffb63865244c80e6a900ce734bebf146555a /engines/m4/mads_views.h
parent55e29af78a52a13269d9905c6410e70f56b5920d (diff)
downloadscummvm-rg350-6bda3e15db6baaa3af3d479e86dad2dd4f95084f.tar.gz
scummvm-rg350-6bda3e15db6baaa3af3d479e86dad2dd4f95084f.tar.bz2
scummvm-rg350-6bda3e15db6baaa3af3d479e86dad2dd4f95084f.zip
Implemented the bulk of the logic for displaying timed on-screen messages
svn-id: r49180
Diffstat (limited to 'engines/m4/mads_views.h')
-rw-r--r--engines/m4/mads_views.h21
1 files changed, 12 insertions, 9 deletions
diff --git a/engines/m4/mads_views.h b/engines/m4/mads_views.h
index 3b64cc77f2..52388a99e0 100644
--- a/engines/m4/mads_views.h
+++ b/engines/m4/mads_views.h
@@ -139,9 +139,10 @@ public:
#define TIMED_TEXT_SIZE 10
#define TEXT_4A_SIZE 30
-enum KernelMessageFlags {KMSG_1 = 1, KMSG_2 = 2, KMSG_4 = 4, KMSG_8 = 8, KMSG_20 = 0x20, KMSG_40 = 0x40, KMSG_ACTIVE = 0x80};
+enum KernelMessageFlags {KMSG_1 = 1, KMSG_2 = 2, KMSG_4 = 4, KMSG_8 = 8, KMSG_20 = 0x20, KMSG_30 = 0x30,
+ KMSG_40 = 0x40, KMSG_ACTIVE = 0x80};
-class MadsKernelMessageListEntry {
+class MadsKernelMessageEntry {
public:
uint8 flags;
int sequenceIndex;
@@ -152,22 +153,24 @@ public:
Common::Point position;
int textDisplayIndex;
int msgOffset;
- int field_E;
+ int numTicks;
uint32 frameTimer2;
uint32 frameTimer;
uint32 timeout;
bool field_1C;
AbortTimerMode abortMode;
uint16 actionNouns[3];
- const char *msg;
+ char msg[100];
};
class MadsKernelMessageList {
private:
MadsView &_owner;
- Common::Array<MadsKernelMessageListEntry> _entries;
+ Common::Array<MadsKernelMessageEntry> _entries;
Font *_talkFont;
public:
+ int word_8469E;
+public:
MadsKernelMessageList(MadsView &owner);
void clear();
@@ -177,6 +180,8 @@ public:
void setSeqIndex(int msgIndex, int seqIndex);
void remove(int msgIndex);
void reset();
+ void update();
+ void processText(int msgIndex);
};
class ScreenObjectEntry {
@@ -311,9 +316,7 @@ struct MadsSequenceEntry {
int field_12;
int field_13;
- int width;
- int height;
-
+ Common::Point msgPos;
int triggerCountdown;
bool doneFlag;
MadsSequenceSubEntries entries;
@@ -338,7 +341,7 @@ public:
void clear();
bool addSubEntry(int index, SequenceSubEntryMode mode, int frameIndex, int abortVal);
int add(int spriteListIndex, int v0, int v1, int triggerCountdown, int delayTicks, int extraTicks, int numTicks,
- int height, int width, char field_12, char scale, uint8 depth, int frameInc, SpriteAnimType animType,
+ int msgX, int msgY, char field_12, char scale, uint8 depth, int frameInc, SpriteAnimType animType,
int numSprites, int frameStart);
void remove(int timerIndex);
void setSpriteSlot(int timerIndex, MadsSpriteSlot &spriteSlot);