BLADERUNNER: Check for nullptr _currentScript in SceneScript methods

This commit is contained in:
antoniou79 2023-07-11 20:05:46 +03:00
parent ed6939535c
commit 3f4767c41f

View File

@ -162,14 +162,18 @@ bool SceneScript::open(const Common::String &name) {
void SceneScript::initializeScene() {
++_inScriptCounter;
_currentScript->InitializeScene();
if (_currentScript != nullptr) {
_currentScript->InitializeScene();
}
--_inScriptCounter;
}
void SceneScript::sceneLoaded() {
_vm->_sceneIsLoading = true;
++_inScriptCounter;
_currentScript->SceneLoaded();
if (_currentScript != nullptr) {
_currentScript->SceneLoaded();
}
_vm->_sceneIsLoading = false;
--_inScriptCounter;
}
@ -198,7 +202,10 @@ bool SceneScript::clickedOn3DObject(const char *objectName, bool combatMode) {
}
++_inScriptCounter;
bool result = _currentScript->ClickedOn3DObject(objectName, combatMode);
bool result = false;
if (_currentScript != nullptr) {
result = _currentScript->ClickedOn3DObject(objectName, combatMode);
}
_vm->_runningActorId = -1;
--_inScriptCounter;
return result;
@ -210,7 +217,10 @@ bool SceneScript::clickedOnActor(int actorId) {
}
++_inScriptCounter;
bool result = _currentScript->ClickedOnActor(actorId);
bool result = false;
if (_currentScript != nullptr) {
_currentScript->ClickedOnActor(actorId);
}
_vm->_runningActorId = -1;
--_inScriptCounter;
return result;
@ -229,7 +239,10 @@ bool SceneScript::clickedOnItem(int itemId, bool combatMode) {
#endif // BLADERUNNER_ORIGINAL_BUGS
++_inScriptCounter;
bool result = _currentScript->ClickedOnItem(itemId, combatMode);
bool result = false;
if (_currentScript != nullptr) {
_currentScript->ClickedOnItem(itemId, combatMode);
}
_vm->_runningActorId = -1;
--_inScriptCounter;
return result;
@ -241,7 +254,10 @@ bool SceneScript::clickedOnExit(int exitId) {
}
++_inScriptCounter;
bool result = _currentScript->ClickedOnExit(exitId);
bool result = false;
if (_currentScript != nullptr) {
_currentScript->ClickedOnExit(exitId);
}
_vm->_runningActorId = -1;
--_inScriptCounter;
return result;
@ -253,7 +269,10 @@ bool SceneScript::clickedOn2DRegion(int region) {
}
++_inScriptCounter;
bool result = _currentScript->ClickedOn2DRegion(region);
bool result = false;
if (_currentScript != nullptr) {
_currentScript->ClickedOn2DRegion(region);
}
_vm->_runningActorId = -1;
--_inScriptCounter;
return result;
@ -261,32 +280,41 @@ bool SceneScript::clickedOn2DRegion(int region) {
void SceneScript::sceneFrameAdvanced(int frame) {
++_inScriptCounter;
_currentScript->SceneFrameAdvanced(frame);
if (_currentScript != nullptr) {
_currentScript->SceneFrameAdvanced(frame);
}
--_inScriptCounter;
}
void SceneScript::actorChangedGoal(int actorId, int newGoal, int oldGoal, bool currentSet) {
++_inScriptCounter;
if (_currentScript)
if (_currentScript != nullptr) {
_currentScript->ActorChangedGoal(actorId, newGoal, oldGoal, currentSet);
}
--_inScriptCounter;
}
void SceneScript::playerWalkedIn() {
++_inScriptCounter;
_currentScript->PlayerWalkedIn();
if (_currentScript != nullptr) {
_currentScript->PlayerWalkedIn();
}
--_inScriptCounter;
}
void SceneScript::playerWalkedOut() {
++_inScriptCounter;
_currentScript->PlayerWalkedOut();
if (_currentScript != nullptr) {
_currentScript->PlayerWalkedOut();
}
--_inScriptCounter;
}
void SceneScript::dialogueQueueFlushed(int a1) {
++_inScriptCounter;
_currentScript->DialogueQueueFlushed(a1);
if (_currentScript != nullptr) {
_currentScript->DialogueQueueFlushed(a1);
}
--_inScriptCounter;
}