[Scummvm-cvs-logs] SF.net SVN: scummvm:[48635] scummvm/trunk/engines/m4

dreammaster at users.sourceforge.net dreammaster at users.sourceforge.net
Mon Apr 12 10:31:46 CEST 2010


Revision: 48635
          http://scummvm.svn.sourceforge.net/scummvm/?rev=48635&view=rev
Author:   dreammaster
Date:     2010-04-12 08:31:46 +0000 (Mon, 12 Apr 2010)

Log Message:
-----------
Added the beginnings of the main timer list

Modified Paths:
--------------
    scummvm/trunk/engines/m4/mads_logic.cpp
    scummvm/trunk/engines/m4/mads_logic.h
    scummvm/trunk/engines/m4/mads_scene.cpp
    scummvm/trunk/engines/m4/mads_scene.h
    scummvm/trunk/engines/m4/mads_views.cpp
    scummvm/trunk/engines/m4/mads_views.h
    scummvm/trunk/engines/m4/scene.cpp
    scummvm/trunk/engines/m4/scene.h

Modified: scummvm/trunk/engines/m4/mads_logic.cpp
===================================================================
--- scummvm/trunk/engines/m4/mads_logic.cpp	2010-04-12 07:28:54 UTC (rev 48634)
+++ scummvm/trunk/engines/m4/mads_logic.cpp	2010-04-12 08:31:46 UTC (rev 48635)
@@ -77,7 +77,75 @@
 	return _madsVm->scene()->loadSceneSpriteSet(resName);
 }
 
+uint16 MadsSceneLogic::startSpriteSequence(uint16 srcSpriteIdx, int v0, int numTicks, int fld24, int timeoutTicks, int extraTicks) {
+	M4Sprite *spriteFrame = _madsVm->scene()->_spriteSlots.getSprite(srcSpriteIdx).getFrame(1);
+	uint8 pixel = *_madsVm->scene()->getWalkSurface()->getBasePtr(spriteFrame->x + (spriteFrame->width() / 2),
+		spriteFrame->y + (spriteFrame->height() / 2));
 
+	return _madsVm->scene()->_timerList.add(srcSpriteIdx, v0, 1, fld24, timeoutTicks, extraTicks, numTicks, 0, 0, 
+		-1, 100, (int)pixel - 1, 1, 1, 0, 0);
+}
+
+uint16 MadsSceneLogic::startSpriteSequence2(uint16 srcSpriteIdx, int v0, int numTicks, int fld24, int timeoutTicks, int extraTicks) {
+	M4Sprite *spriteFrame = _madsVm->scene()->_spriteSlots.getSprite(srcSpriteIdx).getFrame(1);
+	uint8 pixel = *_madsVm->scene()->getWalkSurface()->getBasePtr(spriteFrame->x + (spriteFrame->width() / 2),
+		spriteFrame->y + (spriteFrame->height() / 2));
+
+	return _madsVm->scene()->_timerList.add(srcSpriteIdx, v0, 1, fld24, timeoutTicks, extraTicks, numTicks, 0, 0, 
+		-1, 100, (int)pixel - 1, 1, 2, 0, 0);
+}
+
+uint16 MadsSceneLogic::startSpriteSequence3(uint16 srcSpriteIdx, int v0, int numTicks, int fld24, int timeoutTicks, int extraTicks) {
+	M4Sprite *spriteFrame = _madsVm->scene()->_spriteSlots.getSprite(srcSpriteIdx).getFrame(1);
+	uint8 pixel = *_madsVm->scene()->getWalkSurface()->getBasePtr(spriteFrame->x + (spriteFrame->width() / 2),
+		spriteFrame->y + (spriteFrame->height() / 2));
+
+	return _madsVm->scene()->_timerList.add(srcSpriteIdx, v0, 1, fld24, timeoutTicks, extraTicks, numTicks, 0, 0, 
+		-1, 100, (int)pixel - 1, -1, 1, 0, 0);
+}
+
+void MadsSceneLogic::activateHotspot(int idx, bool active) {
+	// TODO:
+}
+
+void MadsSceneLogic::lowRoomsEntrySound() {
+	if (!_madsVm->globals()->_config.musicFlag) {
+		_madsVm->_sound->playSound(2);
+	} else {
+		// Play different sounds for each of the rooms
+		switch (_madsVm->globals()->sceneNumber) {
+		case 101:
+			_madsVm->_sound->playSound(11);
+			break;
+		case 102:
+			_madsVm->_sound->playSound(12);
+			break;
+		case 103:
+			_madsVm->_sound->playSound(3);
+			_madsVm->_sound->playSound(25);
+			break;
+		case 104:
+			_madsVm->_sound->playSound(10);
+			break;
+		case 105:
+			if ((_madsVm->globals()->previousScene < 104) || (_madsVm->globals()->previousScene > 108))
+				_madsVm->_sound->playSound(10);
+			break;
+		case 106:
+			_madsVm->_sound->playSound(13);
+			break;
+		case 107:
+			_madsVm->_sound->playSound(3);
+			break;
+		case 108:
+			_madsVm->_sound->playSound(15);
+			break;
+		default:
+			break;
+		}
+	}
+}
+
 /*--------------------------------------------------------------------------*/
 
 /**
@@ -114,6 +182,33 @@
 	_spriteIndexes[11] = loadSpriteSet(1, 'a');
 	_spriteIndexes[12] = loadSpriteSet(8, 'x');
 	_spriteIndexes[13] = loadSpriteSet(0, 'x');
+
+	_spriteIndexes[15] = startSpriteSequence(_spriteIndexes[0], 0, 5, 0, 0, 25);
+	_spriteIndexes[16] = startSpriteSequence(_spriteIndexes[1], 0, 4, 0, 1, 0);
+	_spriteIndexes[17] = startSpriteSequence(_spriteIndexes[2], 0, 4, 0, 1, 0);
+
+	_madsVm->scene()->_timerList.unk2(0, 2, 7, 0x46);
+
+	_spriteIndexes[18] = startSpriteSequence2(_spriteIndexes[3], 0, 10, 0, 0, 60);
+	_spriteIndexes[19] = startSpriteSequence(_spriteIndexes[4], 0, 5, 0, 1, 0);
+	_spriteIndexes[20] = startSpriteSequence(_spriteIndexes[5], 0, 10, 0, 2, 0);
+	_spriteIndexes[21] = startSpriteSequence(_spriteIndexes[6], 0, 6, 0, 0, 0);
+
+	_spriteIndexes[23] = startSpriteSequence(_spriteIndexes[8], 0, 6, 0, 10, 4);
+	_spriteIndexes[24] = startSpriteSequence(_spriteIndexes[9], 0, 6, 0, 32, 47);
+
+	activateHotspot(0x137, false);		// SHIELD MODULATOR
+	// shield_panel_opened = 0;
+
+	if (_madsVm->globals()->previousScene != -1)
+		_madsVm->globals()->_globals[10] = 0;
+	if (_madsVm->globals()->previousScene != -2) {
+		//playerPos = (100, 152);
+	}
+	
+	// TODO: EXTRA STUFF
+
+	lowRoomsEntrySound();
 }
 
 void MadsSceneLogic::doAction() {

Modified: scummvm/trunk/engines/m4/mads_logic.h
===================================================================
--- scummvm/trunk/engines/m4/mads_logic.h	2010-04-12 07:28:54 UTC (rev 48634)
+++ scummvm/trunk/engines/m4/mads_logic.h	2010-04-12 08:31:46 UTC (rev 48635)
@@ -35,9 +35,14 @@
 private:
 	// Library interface methods
 	uint16 loadSpriteSet(uint16 suffixNum, uint16 sepChar);
+	uint16 startSpriteSequence(uint16 srcSpriteIdx, int v0, int numTicks, int fld24, int timeoutTicks, int extraTicks);
+	uint16 startSpriteSequence2(uint16 srcSpriteIdx, int v0, int numTicks, int fld24, int timeoutTicks, int extraTicks);
+	uint16 startSpriteSequence3(uint16 srcSpriteIdx, int v0, int numTicks, int fld24, int timeoutTicks, int extraTicks);
+	void activateHotspot(int idx, bool active);
+	void lowRoomsEntrySound();
 private:
 	int _sceneNumber;
-	uint16 _spriteIndexes[50];
+	int16 _spriteIndexes[50];
 
 	// Support functions
 	const char *formAnimName(char sepChar, int16 suffixNum);

Modified: scummvm/trunk/engines/m4/mads_scene.cpp
===================================================================
--- scummvm/trunk/engines/m4/mads_scene.cpp	2010-04-12 07:28:54 UTC (rev 48634)
+++ scummvm/trunk/engines/m4/mads_scene.cpp	2010-04-12 08:31:46 UTC (rev 48635)
@@ -44,7 +44,6 @@
 	_vm = vm;
 
 	_interfaceSurface = new MadsInterfaceView(vm);
-	_spriteSlotsStart = 0;
 	for (int i = 0; i < 3; ++i)
 		actionNouns[i] = 0;
 }
@@ -158,11 +157,6 @@
 
 	delete _sceneResources.hotspots;
 	delete _sceneResources.props;
-
-	// Delete the sprites
-	for (uint i = 0; i <_sceneSprites.size(); ++i) delete _sceneSprites[i];
-	_sceneSprites.clear();
-
 	delete _walkSurface;
 
 	Scene::leaveScene();
@@ -269,13 +263,9 @@
  * Draws all the elements of the scene
  */
 void MadsScene::drawElements() {
-	
 	// Display animations
-	for (int idx = 0; idx < _spriteSlotsStart; ++idx) {
-		
-	}
+	_spriteSlots.draw(this);
 
-
 	// Text display 
 	_textDisplay.draw(this);
 
@@ -283,17 +273,6 @@
 	_interfaceSurface->copyTo(this, 0, this->height() - _interfaceSurface->height());
 
 /*
-	// At this point, in the original engine, the dirty/changed areas were copied to the screen. At the moment,
-	// the current M4 engine framework doesn't support dirty areas, but this is being kept in case that ever changes
-	for (int idx = 0; idx < DIRTY_AREA_SIZE; ++idx) {
-		if (_dirtyAreas[idx].active && _dirtyAreas[idx].active2 && 
-			(_dirtyAreas[idx].bounds.width() > 0) && (_dirtyAreas[idx].bounds.height() > 0)) {
-			// Copy changed area to screen
-
-		}
-	}
-*/
-
 	// Some kind of copying over of slot entries
 	for (int idx = 0, idx2 = 0; idx < _spriteSlotsStart; ++idx) {
 		if (_spriteSlots[idx].spriteId >= 0) {
@@ -303,7 +282,7 @@
 			}
 			++idx2;
 		}
-	}
+	}*/
 }
 
 
@@ -330,7 +309,7 @@
 	}
 
 	//***DEBUG***
-	_sceneSprites[0]->getFrame(1)->copyTo(this, 120, 90, 0);
+	_spriteSlots.getSprite(0).getFrame(1)->copyTo(this, 120, 90, 0);
 }
 
 int MadsScene::loadSceneSpriteSet(const char *setName) {
@@ -341,13 +320,7 @@
 	if (!strchr(resName, '.'))
 		strcat(resName, ".SS");
 
-	Common::SeekableReadStream *data = _vm->res()->get(resName);
-	SpriteAsset *spriteSet = new SpriteAsset(_vm, data, data->size(), resName);
-	spriteSet->translate(_vm->_palette);
-	_vm->res()->toss(resName);
-
-	_sceneSprites.push_back(spriteSet);
-	return _sceneSprites.size() - 1;
+	return _spriteSlots.addSprites(resName);
 }
 
 void MadsScene::loadPlayerSprites(const char *prefix) {
@@ -646,6 +619,79 @@
 
 /*--------------------------------------------------------------------------*/
 
+MadsTimerList::MadsTimerList() {
+	for (int i = 0; i < TIMER_LIST_SIZE; ++i) {
+		MadsTimerEntry rec;
+		rec.active = 0;
+		rec.walkObjectIndex = -1;
+		_entries.push_back(rec);
+	}
+}
+
+bool MadsTimerList::unk2(int index, int v1, int v2, int v3) {
+	if (_entries[index].len27 >= TIMER_ENTRY_SUBSET_MAX)
+		return true;
+
+	int subIndex = _entries[index].len27++;
+	_entries[index].fld27[subIndex] = v1;
+	_entries[index].fld2C[subIndex] = v2;
+	_entries[index].field36 = v3;
+
+	return false;
+}
+
+int MadsTimerList::add(int spriteListIndex, int v0, int frameIndex, char field_24, int timeoutTicks, int extraTicks, int numTicks, 
+		int height, int width, char field_12, char scale, char depth, int field_C, int field_A, int numSprites, 
+		int spriteNum) {
+
+	// Find a free slot
+	uint timerIndex = 0;
+	while ((timerIndex < _entries.size()) && (_entries[timerIndex].active))
+		++timerIndex;
+	if (timerIndex == _entries.size())
+		error("TimerList full");
+
+	if (spriteNum <= 0)
+		spriteNum = 1;
+	if (numSprites == 0)
+		numSprites = _madsVm->scene()->_spriteSlots.getSprite(spriteListIndex).getCount();
+	if (spriteNum == numSprites)
+		field_C = 0;
+
+	// Set the list entry fields
+	_entries[timerIndex].active = true;
+	_entries[timerIndex].spriteListIndex = spriteListIndex;
+	_entries[timerIndex].field_2 = v0;
+	_entries[timerIndex].frameIndex = frameIndex;
+	_entries[timerIndex].spriteNum = spriteNum;
+	_entries[timerIndex].numSprites = numSprites;
+	_entries[timerIndex].field_A = field_A;
+	_entries[timerIndex].field_C = field_C;
+	_entries[timerIndex].depth = depth;
+	_entries[timerIndex].scale = scale;
+	_entries[timerIndex].field_12 = field_12;
+	_entries[timerIndex].width = width;
+	_entries[timerIndex].height = height;
+	_entries[timerIndex].numTicks = numTicks;
+	_entries[timerIndex].extraTicks = extraTicks;
+
+	_entries[timerIndex].timeout = g_system->getMillis() + timeoutTicks * GAME_FRAME_DELAY;
+
+	_entries[timerIndex].field_24 = field_24;
+	_entries[timerIndex].field_25 = 0;
+	_entries[timerIndex].field_13 = 0;
+	_entries[timerIndex].walkObjectIndex = -1;
+	_entries[timerIndex].len27 = 0;
+	_entries[timerIndex].field_3B = 0; //word_84206
+
+	for (int i = 0; i < 3; ++i)
+		_entries[timerIndex].actionNouns[i] = _madsVm->scene()->actionNouns[i];
+
+	return timerIndex;
+}
+
+/*--------------------------------------------------------------------------*/
+
 void MadsSceneResources::load(int sId) {
 	const char *sceneInfoStr = MADSResourceManager::getResourceName(RESPREFIX_RM, sId, ".DAT");
 	Common::SeekableReadStream *rawStream = _vm->_resourceManager->get(sceneInfoStr);
@@ -687,45 +733,10 @@
 
 /*--------------------------------------------------------------------------*/
 
-MadsScreenText::MadsScreenText() {
-	for (int i = 0; i < OLD_TEXT_DISPLAY_SIZE; ++i)
-		_textDisplay[i].active = false;
-	for (int i = 0; i < TIMED_TEXT_SIZE; ++i)
-		_timedText[i].flags = 0;
-	_abortTimedText = false;
-}
-
 /**
- * Adds the specified string to the list of on-screen display text
- */
-int MadsScreenText::add(const Common::Point &destPos, uint fontColours, int widthAdjust, const char *msg, Font *font) {
-	// Find a free slot
-	int idx = 0;
-	while ((idx < OLD_TEXT_DISPLAY_SIZE) && _textDisplay[idx].active)
-		++idx;
-	if (idx == OLD_TEXT_DISPLAY_SIZE)
-		error("Ran out of text display slots");
-
-	// Set up the entry values
-	_textDisplay[idx].active = true;
-	_textDisplay[idx].active2 = 1;
-	_textDisplay[idx].bounds.left = destPos.x;
-	_textDisplay[idx].bounds.top = destPos.y;
-	_textDisplay[idx].bounds.setWidth(font->getWidth(msg, widthAdjust));
-	_textDisplay[idx].bounds.setHeight(font->getHeight());
-	_textDisplay[idx].font = font;
-	strncpy(_textDisplay[idx].message, msg, 100);
-	_textDisplay[idx].message[99] = '\0';
-	_textDisplay[idx].colour1 = fontColours & 0xff;
-	_textDisplay[idx].colour2 = fontColours >> 8;
-	_textDisplay[idx].spacing = widthAdjust;
-
-	return idx;
-}
-
-/**
  * Adds a new entry to the timed on-screen text display list
  */
+/*
 int MadsScreenText::addTimed(const Common::Point &destPos, uint fontColours, uint flags, int vUnknown, uint32 timeout, const char *message) {
 	// Find a free slot
 	int idx = 0;
@@ -749,7 +760,7 @@
 	_timedText[idx].timeout = timeout;
 	_timedText[idx].frameTimer = g_system->getMillis();
 	_timedText[idx].field_1C = vUnknown;
-	_timedText[idx].field_1D = 0; /* word_84206 */
+	_timedText[idx].field_1D = 0; // word_84206
 
 	// Copy the current action noun list
 	for (int i = 0; i < 3; ++i)
@@ -762,9 +773,6 @@
 	return idx;
 }
 
-/**
- * Draws any text display entries to the screen
- */
 void MadsScreenText::draw(M4Surface *surface) {
 }
 
@@ -811,5 +819,6 @@
 
 	// TODO: code from 'loc_244ec' onwards
 }
+*/
 
 } // End of namespace M4

Modified: scummvm/trunk/engines/m4/mads_scene.h
===================================================================
--- scummvm/trunk/engines/m4/mads_scene.h	2010-04-12 07:28:54 UTC (rev 48634)
+++ scummvm/trunk/engines/m4/mads_scene.h	2010-04-12 08:31:46 UTC (rev 48635)
@@ -65,29 +65,18 @@
 };
 
 #define TIMED_TEXT_SIZE 10
-#define OLD_TEXT_DISPLAY_SIZE 40
 #define TEXT_4A_SIZE 30
 
 enum TalkTextFlags {TEXTFLAG_2 = 2, TEXTFLAG_4 = 4, TEXTFLAG_8 = 8, TEXTFLAG_40 = 0x40,
 		TEXTFLAG_ACTIVE = 0x80};
 
-struct TextDisplay {
-	bool active;
-	int spacing;
-	int16 active2;
-	Common::Rect bounds;
-	int colour1, colour2;
-	Font *font;
-	char message[100];
-};
-
 struct TimedText {
 	uint8 flags;
 	int colour1;
 	int colour2;
 	Common::Point position;
 	int textDisplayIndex;
-	int unk4AIndex;
+	int timerIndex;
 	uint32 timeout;
 	uint32 frameTimer;
 	bool field_1C;
@@ -96,30 +85,58 @@
 	char message[100];
 };
 
-struct Text4A {
-	uint8 active;
-	uint8 field25;
+#define TIMER_ENTRY_SUBSET_MAX 5
+
+struct MadsTimerEntry {
+	int8 active;
+	int8 spriteListIndex;
+	
+	int field_2;
+	
+	int frameIndex;
+	int spriteNum;
+	int numSprites;
+	
+	int field_A;
+	int field_C;
+
+	int depth;
+	int scale;
+	int walkObjectIndex;
+
+	int field_12;
+	int field_13;
+	
+	int width;
+	int height;
+	
+	int field_24;
+	int field_25;
+	int len27;
+	int8 fld27[TIMER_ENTRY_SUBSET_MAX];
+	int16 fld2C[TIMER_ENTRY_SUBSET_MAX];
+	int8 field36;
+	int field_3B;
+
+	uint16 actionNouns[3];
+	int numTicks;
+	int extraTicks;
+	int32 timeout;
 };
 
-class MadsScreenText {
+#define TIMER_LIST_SIZE 30
+
+class MadsTimerList {
 private:
-	TextDisplay _textDisplay[OLD_TEXT_DISPLAY_SIZE];
-	TimedText _timedText[TIMED_TEXT_SIZE];
-	Text4A _text4A[TEXT_4A_SIZE];
-	bool _abortTimedText;
-
-	void addTimedText(TimedText *entry);
+	Common::Array<MadsTimerEntry> _entries;
 public:
-	MadsScreenText();
+	MadsTimerList();
 
-	// TextDisplay list
-	int add(const Common::Point &destPos, uint fontColours, int widthAdjust, const char *msg, Font *font);
-	void setActive2(int16 idx) { _textDisplay[idx].active2 = -1; }
-	// TimedText list
-	int addTimed(const Common::Point &destPos, uint fontColours, uint flags, int vUnknown, uint32 timeout, const char *message);
-
-	void draw(M4Surface *surface);
-	void timedDisplay();
+	MadsTimerEntry &operator[](int index) { return _entries[index]; }	
+	bool unk2(int index, int v1, int v2, int v3);
+	int add(int spriteListIndex, int v0, int v1, char field_24, int timeoutTicks, int extraTicks, int numTicks, 
+		int height, int width, char field_12, char scale, char depth, int field_C, int field_A, 
+		int numSprites, int spriteNum);
 };
 
 enum MadsActionMode {ACTMODE_NONE = 0, ACTMODE_VERB = 1, ACTMODE_OBJECT = 3, ACTMODE_TALK = 6};
@@ -157,9 +174,6 @@
 	const char *statusText() const { return _statusText; }
 };
 
-typedef Common::Array<SpriteAsset *> SpriteAssetArray;
-
-#define SPRITE_SLOTS_SIZE 50
 #define DIRTY_AREA_SIZE 90
 
 class MadsScene : public Scene {
@@ -170,11 +184,7 @@
 
 	MadsSceneLogic _sceneLogic;
 	SpriteAsset *_playerSprites;
-	SpriteAssetArray _sceneSprites;
-	SpriteSlot _spriteSlots[50];
-	MadsScreenText _textDisplay;
 	DirtyArea _dirtyAreas[DIRTY_AREA_SIZE];
-	int _spriteSlotsStart;
 
 	void drawElements();
 	void loadScene2(const char *aaName);
@@ -186,6 +196,7 @@
 public:
 	char _aaName[100];
 	uint16 actionNouns[3];
+	MadsTimerList _timerList;
 public:
 	MadsScene(MadsEngine *vm);
 	virtual ~MadsScene();

Modified: scummvm/trunk/engines/m4/mads_views.cpp
===================================================================
--- scummvm/trunk/engines/m4/mads_views.cpp	2010-04-12 07:28:54 UTC (rev 48634)
+++ scummvm/trunk/engines/m4/mads_views.cpp	2010-04-12 08:31:46 UTC (rev 48635)
@@ -47,7 +47,7 @@
 	return startIndex++;
 }
 
-void MadsSpriteSlots::addSprites(const char *resName) {
+int MadsSpriteSlots::addSprites(const char *resName) {
 	// Get the sprite set
 	Common::SeekableReadStream *data = _vm->res()->get(resName);
 	SpriteAsset *spriteSet = new SpriteAsset(_vm, data, data->size(), resName);
@@ -56,7 +56,7 @@
 	_sprites.push_back(SpriteList::value_type(spriteSet));
 	_vm->res()->toss(resName);
 
-	// Translate the sprite set to the current palette
+	return _sprites.size() - 1;
 }
 
 class DepthEntry {

Modified: scummvm/trunk/engines/m4/mads_views.h
===================================================================
--- scummvm/trunk/engines/m4/mads_views.h	2010-04-12 07:28:54 UTC (rev 48634)
+++ scummvm/trunk/engines/m4/mads_views.h	2010-04-12 08:31:46 UTC (rev 48635)
@@ -76,7 +76,7 @@
 	}
 
 	int getIndex();
-	void addSprites(const char *resName);
+	int addSprites(const char *resName);
 	void clear() {
 		startIndex = 0;
 		_sprites.clear();
@@ -155,7 +155,7 @@
 
 
 class MadsView: public View {
-protected:
+public:
 	MadsSpriteSlots _spriteSlots;
 	MadsTextDisplay _textDisplay;
 	ScreenObjects _screenObjects;

Modified: scummvm/trunk/engines/m4/scene.cpp
===================================================================
--- scummvm/trunk/engines/m4/scene.cpp	2010-04-12 07:28:54 UTC (rev 48634)
+++ scummvm/trunk/engines/m4/scene.cpp	2010-04-12 08:31:46 UTC (rev 48635)
@@ -39,7 +39,7 @@
 
 namespace M4 {
 
-Scene::Scene(MadsM4Engine *vm, SceneResources *res): View(vm, Common::Rect(0, 0, vm->_screen->width(), 
+Scene::Scene(MadsM4Engine *vm, SceneResources *res): MadsView(vm, Common::Rect(0, 0, vm->_screen->width(), 
 			vm->_screen->height())), _sceneResources(res) {
 	_screenType = VIEWID_SCENE;
 

Modified: scummvm/trunk/engines/m4/scene.h
===================================================================
--- scummvm/trunk/engines/m4/scene.h	2010-04-12 07:28:54 UTC (rev 48634)
+++ scummvm/trunk/engines/m4/scene.h	2010-04-12 08:31:46 UTC (rev 48635)
@@ -76,7 +76,7 @@
 class MadsEngine;
 class InterfaceView;
 
-class Scene : public View {
+class Scene : public MadsView {
 private:
 	HotSpotList _sceneHotspots;
 protected:
@@ -113,6 +113,7 @@
 	void hideInterface();
 	GameInterfaceView *getInterface() { return _interfaceSurface; }
 	SceneResources &getSceneResources() { return *_sceneResources; }
+	M4Surface *getWalkSurface() const { return _walkSurface; }
 
 	void onRefresh(RectList *rects, M4Surface *destSurface);
 	bool onEvent(M4EventType eventType, int32 param1, int x, int y, bool &captureEvents);


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list