[Scummvm-git-logs] scummvm master -> 935df3b397fa2d0887b8e8afa5e044ba397f5ed3

Strangerke Strangerke at scummvm.org
Mon Sep 12 22:06:44 CEST 2016


This automated email contains information about 7 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
c4e362bf04 DM: Rename leftover variable
3be1c24af8 DM: Fix a couple of string manipulations into fix-sized buffer
2aada126a2 DM: Fix potential divide by zero
db3ba8ecc0 DM: Avoid null pointer dereferencing in unlinkThingFromList
5e9363b6d9 DM: Make use of Common::String in menusPrintSpellFailureMessage
ce6d3fed8f DM: Use SensorEffect in two functions
935df3b397 DM: Enforce the use of Cell enum, some renaming


Commit: c4e362bf04caed73e06e964b4faa1715dd235a6d
    https://github.com/scummvm/scummvm/commit/c4e362bf04caed73e06e964b4faa1715dd235a6d
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-09-12T20:50:40+02:00

Commit Message:
DM: Rename leftover variable

Changed paths:
    engines/dm/champion.cpp



diff --git a/engines/dm/champion.cpp b/engines/dm/champion.cpp
index 83c2ad5..da477a1 100644
--- a/engines/dm/champion.cpp
+++ b/engines/dm/champion.cpp
@@ -2430,9 +2430,9 @@ void ChampionMan::renameChampion(Champion *champ) {
 				Common::Point mousePos = _vm->_eventMan->getMousePos();
 				if ((renamedChampionStringMode == k2_RENAME_CHAMPION_TITLE || (curCharacterIndex > 0)) && (mousePos.x >= 197) && (mousePos.x <= 215) && (mousePos.y >= 147) && (mousePos.y <= 155)) { /* Coordinates of 'OK' button */
 					int16 characterIndexBackup = curCharacterIndex;
-					char L0821_ac_ChampionNameBackupString[8];
+					char championNameBackupString[8];
 					renamedChampionString = champ->_name;
-					strcpy(L0821_ac_ChampionNameBackupString, renamedChampionString);
+					strcpy(championNameBackupString, renamedChampionString);
 					curCharacterIndex = strlen(renamedChampionString);
 					// Replace space characters on the right of the champion name by '\0' characters
 					while (renamedChampionString[--curCharacterIndex] == ' ')
@@ -2452,7 +2452,7 @@ void ChampionMan::renameChampion(Champion *champ) {
 					if (renamedChampionStringMode == k2_RENAME_CHAMPION_TITLE)
 						renamedChampionString = champ->_title;
 
-					strcpy(renamedChampionString = champ->_name, L0821_ac_ChampionNameBackupString);
+					strcpy(renamedChampionString = champ->_name, championNameBackupString);
 					curCharacterIndex = characterIndexBackup;
 				} else {
 					if ((mousePos.x >= 107) && (mousePos.x <= 175) && (mousePos.y >= 147) && (mousePos.y <= 155)) { /* Coordinates of 'BACKSPACE' button */


Commit: 3be1c24af88db19eee5d76ae88d51aaefdc0ec13
    https://github.com/scummvm/scummvm/commit/3be1c24af88db19eee5d76ae88d51aaefdc0ec13
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-09-12T20:52:04+02:00

Commit Message:
DM: Fix a couple of string manipulations into fix-sized buffer

Changed paths:
    engines/dm/dm.cpp
    engines/dm/objectman.cpp
    engines/dm/text.cpp
    engines/dm/text.h



diff --git a/engines/dm/dm.cpp b/engines/dm/dm.cpp
index 10d20ae..b8c1a80 100644
--- a/engines/dm/dm.cpp
+++ b/engines/dm/dm.cpp
@@ -640,11 +640,8 @@ void DMEngine::endGame(bool doNotDrawCreditsOnly) {
 					if (skillLevel == 1)
 						continue;
 
-					char displStr[20];
-					strcpy(displStr, _inventoryMan->_skillLevelNames[skillLevel - 2]);
-					strcat(displStr, " ");
-					strcat(displStr, _championMan->_baseSkillName[idx]);
-					_textMan->printEndGameString(105, textPosY = textPosY + 8, k13_ColorLightestGray, displStr);
+					Common::String displStr = Common::String::format("%s %s", _inventoryMan->_skillLevelNames[skillLevel - 2], _championMan->_baseSkillName[idx]);
+					_textMan->printEndGameString(105, textPosY = textPosY + 8, k13_ColorLightestGray, displStr.c_str());
 				}
 				championMirrorBox._y1 += 48;
 				championMirrorBox._y2 += 48;
diff --git a/engines/dm/objectman.cpp b/engines/dm/objectman.cpp
index 7e403be..ffab239 100644
--- a/engines/dm/objectman.cpp
+++ b/engines/dm/objectman.cpp
@@ -235,29 +235,29 @@ void ObjectMan::drawIconInSlotBox(uint16 slotBoxIndex, int16 iconIndex) {
 }
 
 void ObjectMan::drawLeaderObjectName(Thing thing) {
-	char *objectName = nullptr;
+	Common::String objectName;
 	int16 iconIndex = getIconIndex(thing);
 	if (iconIndex == kDMIconIndiceJunkChampionBones) {
 		Junk *junk = (Junk*)_vm->_dungeonMan->getThingData(thing);
-		char champBonesName[16];
+		Common::String champBonesName;
 
 		switch (_vm->getGameLanguage()) { // localized
 		case Common::FR_FRA:
 			// Fix original bug: strcpy was coming after strcat
-			strcpy(champBonesName, _objectNames[iconIndex]);
-			strcat(champBonesName, _vm->_championMan->_champions[junk->getChargeCount()]._name);
+			champBonesName = Common::String(_objectNames[iconIndex]);
+			champBonesName += Common::String(_vm->_championMan->_champions[junk->getChargeCount()]._name);
 			break;
 		default: // English and German version are the same
-			strcpy(champBonesName, _vm->_championMan->_champions[junk->getChargeCount()]._name);
-			strcat(champBonesName, _objectNames[iconIndex]);
+			champBonesName = Common::String(_vm->_championMan->_champions[junk->getChargeCount()]._name);
+			champBonesName += Common::String(_objectNames[iconIndex]);
 			break;
 		}
 
 		objectName = champBonesName;
 	} else
-		objectName = _objectNames[iconIndex];
+		objectName = Common::String(_objectNames[iconIndex]);
 
-	_vm->_textMan->printWithTrailingSpaces(_vm->_displayMan->_bitmapScreen, k160_byteWidthScreen, 233, 37, k4_ColorCyan, k0_ColorBlack, objectName, k14_ObjectNameMaximumLength, k200_heightScreen);
+	_vm->_textMan->printWithTrailingSpaces(_vm->_displayMan->_bitmapScreen, k160_byteWidthScreen, 233, 37, k4_ColorCyan, k0_ColorBlack, objectName.c_str(), k14_ObjectNameMaximumLength, k200_heightScreen);
 }
 
 IconIndice ObjectMan::getIconIndexInSlotBox(uint16 slotBoxIndex) {
diff --git a/engines/dm/text.cpp b/engines/dm/text.cpp
index b92b434..dcf7e27 100644
--- a/engines/dm/text.cpp
+++ b/engines/dm/text.cpp
@@ -205,7 +205,7 @@ void TextMan::clearExpiredRows() {
 	}
 }
 
-void TextMan::printEndGameString(int16 x, int16 y, Color textColor, char* text) {
+void TextMan::printEndGameString(int16 x, int16 y, Color textColor, const char* text) {
 	char modifiedString[50];
 
 	char *wrkStringPtr = modifiedString;
diff --git a/engines/dm/text.h b/engines/dm/text.h
index 6a93424..ab40925 100644
--- a/engines/dm/text.h
+++ b/engines/dm/text.h
@@ -70,7 +70,7 @@ public:
 	void initialize(); // @ F0054_TEXT_Initialize
 	void moveCursor(int16 column, int16 row); // @ F0042_TEXT_MESSAGEAREA_MoveCursor
 	void clearExpiredRows(); // @ F0044_TEXT_MESSAGEAREA_ClearExpiredRows
-	void printEndGameString(int16 x, int16 y, Color textColor, char *text); // @ F0443_STARTEND_EndgamePrintString
+	void printEndGameString(int16 x, int16 y, Color textColor, const char *text); // @ F0443_STARTEND_EndgamePrintString
 	bool isTextScrolling(TextScroller *scroller, bool waitEndOfScrolling) { return false; } // @ F0561_SCROLLER_IsTextScrolling
 	void setScrollerCommand(TextScroller *scroller, int16 command) { } // @ F0560_SCROLLER_SetCommand
 	void clearAllRows(); // @ F0043_TEXT_MESSAGEAREA_ClearAllRows


Commit: 2aada126a254628a3eda6d14788bb6131fe41985
    https://github.com/scummvm/scummvm/commit/2aada126a254628a3eda6d14788bb6131fe41985
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-09-12T20:58:21+02:00

Commit Message:
DM: Fix potential divide by zero

Changed paths:
    engines/dm/menus.cpp



diff --git a/engines/dm/menus.cpp b/engines/dm/menus.cpp
index 31f6224..262d74a 100644
--- a/engines/dm/menus.cpp
+++ b/engines/dm/menus.cpp
@@ -1317,6 +1317,9 @@ bool MenuMan::isActionPerformed(uint16 champIndex, int16 actionIndex) {
 	if (setDirectionFl) {
 		setChampionDirectionToPartyDirection(curChampion);
 		if (curChampion->_currMana < requiredManaAmount) {
+			// Fix potential divide by zero
+			if (!requiredManaAmount)
+				requiredManaAmount = 1;
 			kineticEnergy = MAX(2, curChampion->_currMana * kineticEnergy / requiredManaAmount);
 			requiredManaAmount = curChampion->_currMana;
 		}


Commit: db3ba8ecc03052a463e3f4d757c3efd4cb604994
    https://github.com/scummvm/scummvm/commit/db3ba8ecc03052a463e3f4d757c3efd4cb604994
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-09-12T21:19:52+02:00

Commit Message:
DM: Avoid null pointer dereferencing in unlinkThingFromList

Changed paths:
    engines/dm/dungeonman.cpp



diff --git a/engines/dm/dungeonman.cpp b/engines/dm/dungeonman.cpp
index 4e7dd9d..7497985 100644
--- a/engines/dm/dungeonman.cpp
+++ b/engines/dm/dungeonman.cpp
@@ -1584,7 +1584,8 @@ void DungeonMan::unlinkThingFromList(Thing thingToUnlink, Thing thingInList, int
 	Thing currThing = getNextThing(thingInList);
 	while (currThing.getTypeAndIndex() != thingToUnlink.toUint16()) {
 		if ((currThing == Thing::_endOfList) || (currThing == Thing::_none)) {
-			*thingPtr = Thing::_endOfList;
+			if (thingPtr)
+				*thingPtr = Thing::_endOfList;
 			return;
 		}
 		currThing = getNextThing(thingInList = currThing);


Commit: 5e9363b6d98f3323956fe9838488b5416342d48b
    https://github.com/scummvm/scummvm/commit/5e9363b6d98f3323956fe9838488b5416342d48b
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-09-12T21:20:45+02:00

Commit Message:
DM: Make use of Common::String in menusPrintSpellFailureMessage

Changed paths:
    engines/dm/menus.cpp



diff --git a/engines/dm/menus.cpp b/engines/dm/menus.cpp
index 262d74a..8eeca98 100644
--- a/engines/dm/menus.cpp
+++ b/engines/dm/menus.cpp
@@ -738,11 +738,25 @@ Spell *MenuMan::getSpellFromSymbols(byte *symbols) {
 }
 
 void MenuMan::menusPrintSpellFailureMessage(Champion *champ, uint16 failureType, uint16 skillIndex) {
-	const char *messagesEN[4] = {" NEEDS MORE PRACTICE WITH THIS ", " SPELL.", " MUMBLES A MEANINGLESS SPELL."," NEEDS AN EMPTY FLASK IN HAND FOR POTION."};
-	const char *messagesDE[4] = {" BRAUCHT MEHR UEBUNG MIT DIESEM ", " ZAUBERSPRUCH.",
-		" MURMELT EINEN SINNLOSEN ZAUBERSPRUCH.", " MUSS FUER DEN TRANK EINE LEERE FLASCHE BEREITHALTEN."};
-	const char *messagesFR[5] = {" DOIT PRATIQUER DAVANTAGE SON ", "ENVOUTEMENT.", " MARMONNE UNE CONJURATION IMCOMPREHENSIBLE.",
-		" DOIT AVOIR UN FLACON VIDE EN MAIN POUR LA POTION.", "EXORCISME."};
+	Common::String messagesEN[4] = {
+		" NEEDS MORE PRACTICE WITH THIS ",
+		" SPELL.",
+		" MUMBLES A MEANINGLESS SPELL.",
+		" NEEDS AN EMPTY FLASK IN HAND FOR POTION."
+	};
+	Common::String messagesDE[4] = {
+		" BRAUCHT MEHR UEBUNG MIT DIESEM ",
+		" ZAUBERSPRUCH.",
+		" MURMELT EINEN SINNLOSEN ZAUBERSPRUCH.",
+		" MUSS FUER DEN TRANK EINE LEERE FLASCHE BEREITHALTEN."
+	};
+	Common::String messagesFR[5] = {
+		" DOIT PRATIQUER DAVANTAGE SON ",
+		"ENVOUTEMENT.",
+		" MARMONNE UNE CONJURATION IMCOMPREHENSIBLE.",
+		" DOIT AVOIR UN FLACON VIDE EN MAIN POUR LA POTION.",
+		"EXORCISME."
+	};
 
 	if (skillIndex > kDMSkillWizard)
 		skillIndex = (skillIndex - 4) / 4;
@@ -750,7 +764,7 @@ void MenuMan::menusPrintSpellFailureMessage(Champion *champ, uint16 failureType,
 	_vm->_textMan->printLineFeed();
 	_vm->_textMan->printMessage(k4_ColorCyan, champ->_name);
 
-	const char **messages;
+	Common::String *messages;
 	switch (_vm->getGameLanguage()) { // localized
 	case Common::DE_DEU:
 		messages = messagesDE;
@@ -763,10 +777,10 @@ void MenuMan::menusPrintSpellFailureMessage(Champion *champ, uint16 failureType,
 		break;
 	}
 
-	const char *message = nullptr;
+	Common::String message;
 	switch (failureType) {
 	case kDMFailureNeedsMorePractice:
-		_vm->_textMan->printMessage(k4_ColorCyan, messages[0]);
+		_vm->_textMan->printMessage(k4_ColorCyan, messages[0].c_str());
 		_vm->_textMan->printMessage(k4_ColorCyan, _vm->_championMan->_baseSkillName[skillIndex]);
 		if (_vm->getGameLanguage() != Common::FR_FRA || skillIndex == kDMSkillWizard)
 			message = messages[1];
@@ -783,7 +797,7 @@ void MenuMan::menusPrintSpellFailureMessage(Champion *champ, uint16 failureType,
 	default:
 		break;
 	}
-	_vm->_textMan->printMessage(k4_ColorCyan, message);
+	_vm->_textMan->printMessage(k4_ColorCyan, message.c_str());
 }
 
 Potion *MenuMan::getEmptyFlaskInHand(Champion *champ, Thing *potionThing) {


Commit: ce6d3fed8f6e30f9a2ce84340e4d572c82bf6016
    https://github.com/scummvm/scummvm/commit/ce6d3fed8f6e30f9a2ce84340e4d572c82bf6016
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-09-12T21:48:16+02:00

Commit Message:
DM: Use SensorEffect in two functions

Changed paths:
    engines/dm/dungeonman.h
    engines/dm/movesens.cpp
    engines/dm/movesens.h
    engines/dm/timeline.cpp



diff --git a/engines/dm/dungeonman.h b/engines/dm/dungeonman.h
index 822ea43..0177860 100644
--- a/engines/dm/dungeonman.h
+++ b/engines/dm/dungeonman.h
@@ -131,15 +131,6 @@ enum TeleporterScope {
 	kDMTeleporterScopeObjectsOrParty = 2 // @ MASK0x0002_SCOPE_OBJECTS_OR_PARTY
 };
 
-enum SensorEffect {
-	kDMSensorEffectNone = -1, // @ CM1_EFFECT_NONE
-	kDMSensorEffectSet = 0, // @ C00_EFFECT_SET
-	kDMSensorEffectClear = 1, // @ C01_EFFECT_CLEAR
-	kDMSensorEffectToggle = 2, // @ C02_EFFECT_TOGGLE
-	kDMSensorEffectHold = 3, // @ C03_EFFECT_HOLD
-	kDMSensorEffectAddExperience = 10 // @ C10_EFFECT_ADD_EXPERIENCE
-};
-
 enum SensorType {
 	kDMSensorDisabled = 0, // @ C000_SENSOR_DISABLED    /* Never triggered, may be used for a floor or wall ornament */
 	kDMSensorFloorTheronPartyCreatureObj = 1, // @ C001_SENSOR_FLOOR_THERON_PARTY_CREATURE_OBJECT    /* Triggered by party/thing F0276_SENSOR_ProcessThingAdditionOrRemoval */
diff --git a/engines/dm/movesens.cpp b/engines/dm/movesens.cpp
index 7445819..1258ac7 100644
--- a/engines/dm/movesens.cpp
+++ b/engines/dm/movesens.cpp
@@ -25,7 +25,6 @@
 * maintainer of the Dungeon Master Encyclopaedia (http://dmweb.free.fr/)
 */
 
-
 #include "dm/movesens.h"
 #include "dm/champion.h"
 #include "dm/inventory.h"
@@ -37,7 +36,6 @@
 #include "dm/text.h"
 #include "dm/sounds.h"
 
-
 namespace DM {
 
 MovesensMan::MovesensMan(DMEngine *vm) : _vm(vm) {
@@ -89,11 +87,8 @@ bool MovesensMan::sensorIsTriggeredByClickOnWall(int16 mapX, int16 mapY, uint16
 				continue;
 
 			bool doNotTriggerSensor;
-			int16 sensorData = 0;
-			int16 sensorEffect = 0;
-
-			sensorData = currentSensor->getData();
-			sensorEffect = currentSensor->getAttrEffectA();
+			int16 sensorData = currentSensor->getData();
+			SensorEffect sensorEffect = (SensorEffect)currentSensor->getAttrEffectA();
 
 			switch (processedSensorType) {
 			case kDMSensorWallOrnClick:
@@ -837,7 +832,7 @@ void MovesensMan::processThingAdditionOrRemoval(uint16 mapX, uint16 mapY, Thing
 			}
 
 			triggerSensor ^= curSensor->getAttrRevertEffectA();
-			int16 curSensorEffect = curSensor->getAttrEffectA();
+			SensorEffect curSensorEffect = (SensorEffect)curSensor->getAttrEffectA();
 			if (curSensorEffect == kDMSensorEffectHold)
 				curSensorEffect = triggerSensor ? kDMSensorEffectSet : kDMSensorEffectClear;
 			else if (!triggerSensor)
@@ -894,7 +889,7 @@ bool MovesensMan::isObjectInPartyPossession(int16 objectType) {
 	return false;
 }
 
-void MovesensMan::triggerEffect(Sensor *sensor, int16 effect, int16 mapX, int16 mapY, uint16 cell) {
+void MovesensMan::triggerEffect(Sensor *sensor, SensorEffect effect, int16 mapX, int16 mapY, uint16 cell) {
 	TimelineEventType squareTypeToEventTypeArray[7] = { // @ G0059_auc_Graphic562_SquareTypeToEventType
 		k6_TMEventTypeWall,
 		k5_TMEventTypeCorridor,
@@ -910,7 +905,7 @@ void MovesensMan::triggerEffect(Sensor *sensor, int16 effect, int16 mapX, int16
 
 	int32 endTime = _vm->_gameTime + sensor->getAttrValue();
 	if (sensor->getAttrLocalEffect())
-		triggerLocalEffect(sensor->getActionLocalEffect(), mapX, mapY, cell);
+		triggerLocalEffect((SensorEffect)sensor->getActionLocalEffect(), mapX, mapY, cell);
 	else {
 		int16 targetMapX = sensor->getActionTargetMapX();
 		int16 targetMapY = sensor->getActionTargetMapY();
@@ -925,9 +920,9 @@ void MovesensMan::triggerEffect(Sensor *sensor, int16 effect, int16 mapX, int16
 	}
 }
 
-void MovesensMan::triggerLocalEffect(int16 localEffect, int16 effX, int16 effY, int16 effCell) {
+void MovesensMan::triggerLocalEffect(SensorEffect localEffect, int16 effX, int16 effY, int16 effCell) {
 	if (localEffect == kDMSensorEffectAddExperience) {
-		addSkillExperience(kDMSkillSteal, 300, localEffect != kDMCellAny);
+		addSkillExperience(kDMSkillSteal, 300, localEffect != kDMSensorEffectNone);
 		return;
 	}
 	_sensorRotationEffect = localEffect;
diff --git a/engines/dm/movesens.h b/engines/dm/movesens.h
index 7746fca..1a7e230 100644
--- a/engines/dm/movesens.h
+++ b/engines/dm/movesens.h
@@ -31,6 +31,15 @@
 
 #include "dm/dm.h"
 
+enum SensorEffect {
+	kDMSensorEffectNone = -1, // @ CM1_EFFECT_NONE
+	kDMSensorEffectSet = 0, // @ C00_EFFECT_SET
+	kDMSensorEffectClear = 1, // @ C01_EFFECT_CLEAR
+	kDMSensorEffectToggle = 2, // @ C02_EFFECT_TOGGLE
+	kDMSensorEffectHold = 3, // @ C03_EFFECT_HOLD
+	kDMSensorEffectAddExperience = 10 // @ C10_EFFECT_ADD_EXPERIENCE
+};
+
 namespace DM {
 	class Sensor;
 	class Teleporter;
@@ -61,8 +70,8 @@ public:
 	Thing getTeleporterRotatedProjectileThing(Teleporter *teleporter, Thing projectileThing); // @ F0263_MOVE_GetTeleporterRotatedProjectileThing
 	void processThingAdditionOrRemoval(uint16 mapX, uint16 mapY, Thing thing, bool partySquare, bool addThing);// @ F0276_SENSOR_ProcessThingAdditionOrRemoval
 	bool isObjectInPartyPossession(int16 objectType); // @ F0274_SENSOR_IsObjectInPartyPossession
-	void triggerEffect(Sensor *sensor, int16 effect, int16 mapX, int16 mapY, uint16 cell); // @ F0272_SENSOR_TriggerEffect
-	void triggerLocalEffect(int16 localEffect, int16 effX, int16 effY, int16 effCell); // @ F0270_SENSOR_TriggerLocalEffect
+	void triggerEffect(Sensor *sensor, SensorEffect effect, int16 mapX, int16 mapY, uint16 cell); // @ F0272_SENSOR_TriggerEffect
+	void triggerLocalEffect(SensorEffect localEffect, int16 effX, int16 effY, int16 effCell); // @ F0270_SENSOR_TriggerLocalEffect
 	void addSkillExperience(int16 skillIndex, uint16 exp, bool leaderOnly); // @ F0269_SENSOR_AddSkillExperience
 	void processRotationEffect();// @ F0271_SENSOR_ProcessRotationEffect
 	void createEventMoveGroup(Thing groupThing, int16 mapX, int16 mapY, int16 mapIndex, bool audible); // @ F0265_MOVE_CreateEvent60To61_MoveGroup
diff --git a/engines/dm/timeline.cpp b/engines/dm/timeline.cpp
index fce768d..6d854d1 100644
--- a/engines/dm/timeline.cpp
+++ b/engines/dm/timeline.cpp
@@ -599,7 +599,7 @@ void Timeline::processEventSquareWall(TimelineEvent *event) {
 						int16 triggerSetEffect = ((curSensorData == 0) != curThingSensor->getAttrRevertEffectA());
 						_vm->_moveSens->triggerEffect(curThingSensor, triggerSetEffect ? kDMSensorEffectSet : kDMSensorEffectClear, mapX, mapY, curCell);
 					} else if (curSensorData == 0)
-						_vm->_moveSens->triggerEffect(curThingSensor, curThingSensor->getAttrEffectA(), mapX, mapY, curCell);
+						_vm->_moveSens->triggerEffect(curThingSensor, (SensorEffect)curThingSensor->getAttrEffectA(), mapX, mapY, curCell);
 				}
 			} else if (curSensorType == kDMSensorWallAndOrGate) {
 				int16 bitMask = 1 << (event->_Cu.A._cell);
@@ -618,7 +618,7 @@ void Timeline::processEventSquareWall(TimelineEvent *event) {
 				if (curThingSensor->getAttrEffectA() == kDMSensorEffectHold)
 					_vm->_moveSens->triggerEffect(curThingSensor, triggerSetEffect ? kDMSensorEffectSet : kDMSensorEffectClear, mapX, mapY, curCell);
 				else if (triggerSetEffect)
-					_vm->_moveSens->triggerEffect(curThingSensor, curThingSensor->getAttrEffectA(), mapX, mapY, curCell);
+					_vm->_moveSens->triggerEffect(curThingSensor, (SensorEffect)curThingSensor->getAttrEffectA(), mapX, mapY, curCell);
 			} else if ((((curSensorType >= kDMSensorWallSingleProjLauncherNewObj) && (curSensorType <= kDMSensorWallDoubleProjLauncherExplosion)) || (curSensorType == kDMSensorWallSingleProjLauncherSquareObj) || (curSensorType == kDMSensorWallDoubleProjLauncherSquareObj)) && (curThing.getCell() == event->_Cu.A._cell)) {
 				triggerProjectileLauncher(curThingSensor, event);
 				if (curThingSensor->getAttrOnlyOnce())


Commit: 935df3b397fa2d0887b8e8afa5e044ba397f5ed3
    https://github.com/scummvm/scummvm/commit/935df3b397fa2d0887b8e8afa5e044ba397f5ed3
Author: Strangerke (strangerke at scummvm.org)
Date: 2016-09-12T21:56:49+02:00

Commit Message:
DM: Enforce the use of Cell enum, some renaming

Changed paths:
    engines/dm/dungeonman.h
    engines/dm/eventman.cpp
    engines/dm/movesens.cpp
    engines/dm/movesens.h
    engines/dm/projexpl.cpp



diff --git a/engines/dm/dungeonman.h b/engines/dm/dungeonman.h
index 0177860..cfa16b0 100644
--- a/engines/dm/dungeonman.h
+++ b/engines/dm/dungeonman.h
@@ -422,7 +422,7 @@ public:
 
 	uint16 getActionTargetMapY() { return (_action >> 11); }
 	uint16 getActionTargetMapX() { return (_action >> 6) & 0x1F; }
-	Direction getActionTargetCell() { return (Direction)((_action >> 4) & 3); }
+	Cell getActionTargetCell() { return (Cell)((_action >> 4) & 3); }
 	uint16 getActionHealthMultiplier() { return ((_action >> 4) & 0xF); } // @ M45_HEALTH_MULTIPLIER
 	uint16 getActionTicks() { return ((_action >> 4) >> 4) & 0xFFF; } // @ M46_TICKS
 	uint16 getActionKineticEnergy() { return ((_action >> 4) & 0xFF); }// @ M47_KINETIC_ENERGY
diff --git a/engines/dm/eventman.cpp b/engines/dm/eventman.cpp
index 6f834d3..5d36424 100644
--- a/engines/dm/eventman.cpp
+++ b/engines/dm/eventman.cpp
@@ -1167,15 +1167,15 @@ void EventManager::commandProcessType80ClickInDungeonView(int16 posX, int16 posY
 		if (_vm->_championMan->_leaderIndex == kDMChampionNone)
 			return;
 
-		int16 L1155_i_MapX = _vm->_dungeonMan->_partyMapX + _vm->_dirIntoStepCountEast[_vm->_dungeonMan->_partyDir];
-		int16 L1156_i_MapY = _vm->_dungeonMan->_partyMapY + _vm->_dirIntoStepCountNorth[_vm->_dungeonMan->_partyDir];
+		int16 mapX = _vm->_dungeonMan->_partyMapX + _vm->_dirIntoStepCountEast[_vm->_dungeonMan->_partyDir];
+		int16 mapY = _vm->_dungeonMan->_partyMapY + _vm->_dirIntoStepCountNorth[_vm->_dungeonMan->_partyDir];
 
 		if (_vm->_championMan->_leaderEmptyHanded) {
-			Junk *junkPtr = (Junk*)_vm->_dungeonMan->getSquareFirstThingData(L1155_i_MapX, L1156_i_MapY);
+			Junk *junkPtr = (Junk*)_vm->_dungeonMan->getSquareFirstThingData(mapX, mapY);
 			if ((((Door*)junkPtr)->hasButton()) && _vm->_dungeonMan->_dungeonViewClickableBoxes[k5_ViewCellDoorButtonOrWallOrn].isPointInside(posX, posY - 33)) {
 				_vm->_stopWaitingForPlayerInput = true;
 				_vm->_sound->requestPlay(k01_soundSWITCH, _vm->_dungeonMan->_partyMapX, _vm->_dungeonMan->_partyMapY, k1_soundModePlayIfPrioritized);
-				_vm->_moveSens->addEvent(k10_TMEventTypeDoor, L1155_i_MapX, L1156_i_MapY, 0, kDMSensorEffectToggle, _vm->_gameTime + 1);
+				_vm->_moveSens->addEvent(k10_TMEventTypeDoor, mapX, mapY, kDMCellNorthWest, kDMSensorEffectToggle, _vm->_gameTime + 1);
 				return;
 			}
 		} else if (isLeaderHandObjThrown(posX, posY))
diff --git a/engines/dm/movesens.cpp b/engines/dm/movesens.cpp
index 1258ac7..2ab4b4b 100644
--- a/engines/dm/movesens.cpp
+++ b/engines/dm/movesens.cpp
@@ -582,7 +582,7 @@ T0266017_CheckProjectileImpacts:
 	return false;
 }
 
-void MovesensMan::addEvent(byte type, byte mapX, byte mapY, byte cell, byte effect, int32 time) {
+void MovesensMan::addEvent(byte type, byte mapX, byte mapY, Cell cell, byte effect, int32 time) {
 	TimelineEvent newEvent;
 	_vm->setMapAndTime(newEvent._mapTime, _vm->_dungeonMan->_currMapIndex, time);
 	newEvent._type = type;
@@ -910,8 +910,8 @@ void MovesensMan::triggerEffect(Sensor *sensor, SensorEffect effect, int16 mapX,
 		int16 targetMapX = sensor->getActionTargetMapX();
 		int16 targetMapY = sensor->getActionTargetMapY();
 		SquareType curSquareType = Square(_vm->_dungeonMan->_currMapData[targetMapX][targetMapY]).getType();
-		uint16 targetCell;
-		if (curSquareType == (int)kDMElementTypeWall)
+		Cell targetCell;
+		if (curSquareType == k0_WallElemType)
 			targetCell = sensor->getActionTargetCell();
 		else
 			targetCell = kDMCellNorthWest;
diff --git a/engines/dm/movesens.h b/engines/dm/movesens.h
index 1a7e230..7c2a6bb 100644
--- a/engines/dm/movesens.h
+++ b/engines/dm/movesens.h
@@ -64,7 +64,7 @@ public:
 	bool getMoveResult(Thing thing, int16 mapX, int16 mapY, int16 destMapX, int16 destMapY); // @ F0267_MOVE_GetMoveResult_CPSCE
 	bool isLevitating(Thing thing); // @ F0264_MOVE_IsLevitating
 	bool moveIsKilledByProjectileImpact(int16 srcMapX, int16 srcMapY, int16 destMapX, int16 destMapY, Thing thing); // @ F0266_MOVE_IsKilledByProjectileImpact
-	void addEvent(byte type, byte mapX, byte mapY, byte cell, byte effect, int32 time); // @ F0268_SENSOR_AddEvent
+	void addEvent(byte type, byte mapX, byte mapY, Cell cell, byte effect, int32 time); // @ F0268_SENSOR_AddEvent
 	int16 getSound(byte creatureType); // @ F0514_MOVE_GetSound
 	int16 getTeleporterRotatedGroupResult(Teleporter *teleporter, Thing thing, uint16 mapIndex);// @ F0262_MOVE_GetTeleporterRotatedGroupResult
 	Thing getTeleporterRotatedProjectileThing(Teleporter *teleporter, Thing projectileThing); // @ F0263_MOVE_GetTeleporterRotatedProjectileThing
diff --git a/engines/dm/projexpl.cpp b/engines/dm/projexpl.cpp
index 74ba24b..7f8696f 100644
--- a/engines/dm/projexpl.cpp
+++ b/engines/dm/projexpl.cpp
@@ -118,7 +118,7 @@ bool ProjExpl::hasProjectileImpactOccurred(int16 impactType, int16 mapXCombo, in
 		Door *curDoor = (Door *)_vm->_dungeonMan->getSquareFirstThingData(projectileTargetMapX, projectileTargetMapY);
 		if ((curDoorState != k5_doorState_DESTROYED) && (projectileAssociatedThing == Thing::_explOpenDoor)) {
 			if (curDoor->hasButton())
-				_vm->_moveSens->addEvent(k10_TMEventTypeDoor, projectileTargetMapX, projectileTargetMapY, 0, kDMSensorEffectToggle, _vm->_gameTime + 1);
+				_vm->_moveSens->addEvent(k10_TMEventTypeDoor, projectileTargetMapX, projectileTargetMapY, kDMCellNorthWest, kDMSensorEffectToggle, _vm->_gameTime + 1);
 			break;
 		}
 





More information about the Scummvm-git-logs mailing list