Permalink
Comparing changes
Open a pull request
- 2 commits
- 13 files changed
- 1 commit comment
- 1 contributor
Unified
Split
Showing
with
1,313 additions
and 180 deletions.
- +3 −3 engines/bladerunner/actor.cpp
- +5 −5 engines/bladerunner/actor_walk.cpp
- +1 −1 engines/bladerunner/gameflags.cpp
- +1 −1 engines/bladerunner/module.mk
- +6 −6 engines/bladerunner/scene.cpp
- +6 −4 engines/bladerunner/scene_objects.cpp
- +5 −2 engines/bladerunner/script/ai_00_mccoy.cpp
- +3 −2 engines/bladerunner/script/ai_00_mccoy.h
- +1,217 −0 engines/bladerunner/script/ai_23_officer_leroy.cpp
- +13 −5 engines/bladerunner/script/{aiscript_officer_leroy.h → ai_23_officer_leroy.h}
- +0 −134 engines/bladerunner/script/aiscript_officer_leroy.cpp
- +50 −15 engines/bladerunner/script/script.cpp
- +3 −2 engines/bladerunner/script/script.h
| @@ -203,10 +203,10 @@ void Actor::setAtXYZ(const Vector3 &position, int facing, bool snapFacing, bool | ||
|
|
||
| setBoundingBox(_position, retired); | ||
|
|
||
| _vm->_sceneObjects->remove(_id); | ||
| _vm->_sceneObjects->remove(_id + SCENE_OBJECTS_ACTORS_OFFSET); | ||
|
|
||
| if (_vm->_scene->getSetId() == _setId) { | ||
| _vm->_sceneObjects->addActor(_id, _bbox, &_screenRectangle, 1, moving, _isTargetable, retired); | ||
| _vm->_sceneObjects->addActor(_id + SCENE_OBJECTS_ACTORS_OFFSET, _bbox, &_screenRectangle, 1, moving, _isTargetable, retired); | ||
| } | ||
| } | ||
|
|
||
| @@ -477,7 +477,7 @@ bool Actor::tick(bool forceDraw) { | ||
| this->_position.z = this->_position.z + positionChange.x * sinx + positionChange.y * cosx; | ||
| this->_position.y = this->_position.y + positionChange.z; | ||
|
|
||
| if (_vm->_sceneObjects->existsOnXZ(this->_id, this->_position.x, this->_position.z, false, false) == 1 && !this->_isImmuneToObstacles) { | ||
| if (_vm->_sceneObjects->existsOnXZ(this->_id + SCENE_OBJECTS_ACTORS_OFFSET, this->_position.x, this->_position.z, false, false) == 1 && !this->_isImmuneToObstacles) { | ||
| this->_position.x = originalX; | ||
| this->_position.y = originalY; | ||
| this->_position.z = originalZ; | ||
| @@ -146,7 +146,7 @@ void ActorWalk::setRunning() { | ||
| } | ||
|
|
||
| void ActorWalk::stop(int actorId, bool unknown, int combatAnimationMode, int animationMode) { | ||
| _vm->_sceneObjects->setMoving(actorId, false); | ||
| _vm->_sceneObjects->setMoving(actorId + SCENE_OBJECTS_ACTORS_OFFSET, false); | ||
| _vm->_actors[actorId]->setMoving(false); | ||
|
|
||
| if (_vm->_actors[actorId]->inCombat()) { | ||
| @@ -173,7 +173,7 @@ bool ActorWalk::isXYZEmpty(float x, float y, float z, int actorId) { | ||
| if (_vm->_actors[actorId]->isImmuneToObstacles()) { | ||
| return false; | ||
| } | ||
| return _vm->_sceneObjects->existsOnXZ(actorId, x, z, false, false); | ||
| return _vm->_sceneObjects->existsOnXZ(actorId + SCENE_OBJECTS_ACTORS_OFFSET, x, z, false, false); | ||
| } | ||
|
|
||
| int ActorWalk::findU1(int actorId, const Vector3 &to, int dist, Vector3 *out) { | ||
| @@ -206,14 +206,14 @@ int ActorWalk::findU1(int actorId, const Vector3 &to, int dist, Vector3 *out) { | ||
| x = to.x + sin_1024(v24) * dist; | ||
| z = to.z + cos_1024(v24) * dist; | ||
|
|
||
| if (!_vm->_sceneObjects->existsOnXZ(actorId, x, z, true, true) && _vm->_scene->_set->findWalkbox(x, z) >= 0) { | ||
| if (!_vm->_sceneObjects->existsOnXZ(actorId + SCENE_OBJECTS_ACTORS_OFFSET, x, z, true, true) && _vm->_scene->_set->findWalkbox(x, z) >= 0) { | ||
| break; | ||
| } | ||
|
|
||
| x = to.x + sin_1024(v23) * dist; | ||
| z = to.z + cos_1024(v23) * dist; | ||
|
|
||
| if (!_vm->_sceneObjects->existsOnXZ(actorId, x, z, true, true) && _vm->_scene->_set->findWalkbox(x, z) >= 0) { | ||
| if (!_vm->_sceneObjects->existsOnXZ(actorId + SCENE_OBJECTS_ACTORS_OFFSET, x, z, true, true) && _vm->_scene->_set->findWalkbox(x, z) >= 0) { | ||
| break; | ||
| } | ||
|
|
||
| @@ -252,7 +252,7 @@ int ActorWalk::nextOnPath(int actorId, const Vector3 &from, const Vector3 &to, V | ||
| if (_vm->_scene->_set->findWalkbox(to.x, to.z) == -1) { | ||
| return 0; | ||
| } | ||
| if (_vm->_sceneObjects->existsOnXZ(actorId, to.x, to.z, false, false)) { | ||
| if (_vm->_sceneObjects->existsOnXZ(actorId + SCENE_OBJECTS_ACTORS_OFFSET, to.x, to.z, false, false)) { | ||
| return 0; | ||
| } | ||
| Vector3 next1; | ||
| @@ -59,7 +59,7 @@ void GameFlags::reset(int flag) { | ||
| } | ||
|
|
||
| bool GameFlags::query(int flag) { | ||
| debug("GameFlags::query(%d): %d", flag, !!(flags[flag / 32] & (1 << (flag % 32)))); | ||
| //debug("GameFlags::query(%d): %d", flag, !!(flags[flag / 32] & (1 << (flag % 32)))); | ||
| assert(flag >= 0 && flag <= flagCount); | ||
|
|
||
| return !!(flags[flag / 32] & (1 << (flag % 32))); | ||
| @@ -39,7 +39,7 @@ MODULE_OBJS = \ | ||
| scene.o \ | ||
| scene_objects.o \ | ||
| script/ai_00_mccoy.o \ | ||
| script/aiscript_officer_leroy.o \ | ||
| script/ai_23_officer_leroy.o \ | ||
| script/init.o \ | ||
| script/kia.o \ | ||
| script/vk.o \ | ||
| @@ -108,7 +108,7 @@ bool Scene::open(int setId, int sceneId, bool isLoadingGame) { | ||
| _vm->_scene->advanceFrame(_vm->_surface1, _vm->_zBuffer1); | ||
|
|
||
| _vm->_playerActor->setAtXYZ(_actorStartPosition, _actorStartFacing); | ||
| //_vm->_playerActor->setSetId(setId); | ||
| _vm->_playerActor->setSetId(setId); | ||
|
|
||
| _vm->_script->SceneLoaded(); | ||
|
|
||
| @@ -120,7 +120,7 @@ bool Scene::open(int setId, int sceneId, bool isLoadingGame) { | ||
| Actor *actor = _vm->_actors[i]; | ||
| if (actor->getSetId() == setId) { | ||
| _vm->_sceneObjects->addActor( | ||
| i, | ||
| i + SCENE_OBJECTS_ACTORS_OFFSET, | ||
| actor->getBoundingBox(), | ||
| actor->getScreenRectangle(), | ||
| 1, | ||
| @@ -251,14 +251,14 @@ bool Scene::objectGetBoundingBox(int objectId, BoundingBox *boundingBox) { | ||
| void Scene::objectSetIsClickable(int objectId, bool isClickable, bool sceneLoaded) { | ||
| _set->objectSetIsClickable(objectId, isClickable); | ||
| if (sceneLoaded) { | ||
| _vm->_sceneObjects->setIsClickable(objectId + 198, isClickable); | ||
| _vm->_sceneObjects->setIsClickable(objectId + SCENE_OBJECTS_OBJECTS_OFFSET, isClickable); | ||
| } | ||
| } | ||
|
|
||
| void Scene::objectSetIsObstacle(int objectId, bool isObstacle, bool sceneLoaded, bool updateWalkpath) { | ||
| _set->objectSetIsObstacle(objectId, isObstacle); | ||
| if (sceneLoaded) { | ||
| _vm->_sceneObjects->setIsObstacle(objectId + 198, isObstacle); | ||
| _vm->_sceneObjects->setIsObstacle(objectId + SCENE_OBJECTS_OBJECTS_OFFSET, isObstacle); | ||
| if (updateWalkpath) { | ||
| _vm->_sceneObjects->updateObstacles(); | ||
| } | ||
| @@ -270,15 +270,15 @@ void Scene::objectSetIsObstacleAll(bool isObstacle, bool sceneLoaded) { | ||
| for (i = 0; i < (int)_set->getObjectCount(); i++) { | ||
| _set->objectSetIsObstacle(i, isObstacle); | ||
| if (sceneLoaded) { | ||
| _vm->_sceneObjects->setIsObstacle(i + 198, isObstacle); | ||
| _vm->_sceneObjects->setIsObstacle(i + SCENE_OBJECTS_OBJECTS_OFFSET, isObstacle); | ||
| } | ||
| } | ||
| } | ||
|
|
||
| void Scene::objectSetIsTarget(int objectId, bool isTarget, bool sceneLoaded) { | ||
| _set->objectSetIsTarget(objectId, isTarget); | ||
| if (sceneLoaded) { | ||
| _vm->_sceneObjects->setIsTarget(objectId + 198, isTarget); | ||
| _vm->_sceneObjects->setIsTarget(objectId + SCENE_OBJECTS_OBJECTS_OFFSET, isTarget); | ||
| } | ||
| } | ||
|
|
||
| @@ -86,7 +86,7 @@ bool SceneObjects::remove(int sceneObjectId) { | ||
| if (i == -1) { | ||
| return false; | ||
| } | ||
|
|
||
| _sceneObjects[i]._present = 0; | ||
| int j; | ||
| for (j = 0; j < _count; ++j) { | ||
| if (_sceneObjectsSortedByDistance[j] == i) { | ||
| @@ -107,7 +107,7 @@ int SceneObjects::findByXYZ(int *isClickable, int *isObstacle, int *isTarget, fl | ||
| *isTarget = 0; | ||
|
|
||
| for (int i = 0; i < _count; ++i) { | ||
| assert(_sceneObjectsSortedByDistance[i] < _count); | ||
| assert(_sceneObjectsSortedByDistance[i] < SCENE_OBJECTS_COUNT); | ||
|
|
||
| SceneObject &sceneObject = _sceneObjects[_sceneObjectsSortedByDistance[i]]; | ||
|
|
||
| @@ -171,8 +171,10 @@ bool SceneObjects::existsOnXZ(int exceptSceneObjectId, float x, float z, bool a5 | ||
|
|
||
| int SceneObjects::findById(int sceneObjectId) { | ||
| for (int i = 0; i < _count; ++i) { | ||
| if (_sceneObjects[i]._present && _sceneObjects[i]._sceneObjectId == sceneObjectId) { | ||
| return i; | ||
| int j = this->_sceneObjectsSortedByDistance[i]; | ||
|
|
||
| if (_sceneObjects[j]._present && _sceneObjects[j]._sceneObjectId == sceneObjectId) { | ||
| return j; | ||
| } | ||
| } | ||
| return -1; | ||
| @@ -248,7 +248,8 @@ void AIScript_McCoy::Retired(int byActorId) { | ||
| } | ||
| } | ||
|
|
||
| void AIScript_McCoy::GetFriendlinessModifierIfGetsClue() { | ||
| int AIScript_McCoy::GetFriendlinessModifierIfGetsClue(int otherActorId, int clueId) { | ||
| return 0; | ||
| } | ||
|
|
||
| bool AIScript_McCoy::GoalChanged(int currentGoalNumber, int newGoalNumber) { | ||
| @@ -1660,10 +1661,12 @@ void AIScript_McCoy::SetAnimationState(int animationState, int a2, int a3, int a | ||
| dword_46271C = a4; | ||
| } | ||
|
|
||
| bool AIScript_McCoy::ReachedMovementTrackWaypoint() { | ||
| bool AIScript_McCoy::ReachedMovementTrackWaypoint(int a1) { | ||
| return true; | ||
| } | ||
|
|
||
| void AIScript_McCoy::FledCombat() {} | ||
|
|
||
| void AIScript_McCoy::sub_4053E0() { | ||
| float x, y, z; | ||
| Actor_Query_XYZ(0, &x, &y, &z); | ||
| @@ -60,13 +60,14 @@ class AIScript_McCoy : public AIScriptBase { | ||
| void ShotAtAndMissed(); | ||
| void ShotAtAndHit(); | ||
| void Retired(int byActorId); | ||
| void GetFriendlinessModifierIfGetsClue(); | ||
| int GetFriendlinessModifierIfGetsClue(int otherActorId, int clueId); | ||
| bool GoalChanged(int currentGoalNumber, int newGoalNumber); | ||
| bool UpdateAnimation(int *animation, int *frame); | ||
| bool ChangeAnimationMode(int mode); | ||
| void QueryAnimationState(int *animationState, int *a2, int *a3, int *a4); | ||
| void SetAnimationState(int animationState, int a2, int a3, int a4); | ||
| bool ReachedMovementTrackWaypoint(); | ||
| bool ReachedMovementTrackWaypoint(int a1); | ||
| void FledCombat(); | ||
|
|
||
| private: | ||
| void sub_4053E0(); | ||
Oops, something went wrong.
Showing you all comments on commits in this comparison.
This comment has been minimized.
This comment has been minimized.
|
Tip: Avoid merge bubbles in the future by using |