[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