aboutsummaryrefslogtreecommitdiff
path: root/engines/bladerunner/script/ai_script.h
diff options
context:
space:
mode:
Diffstat (limited to 'engines/bladerunner/script/ai_script.h')
-rw-r--r--engines/bladerunner/script/ai_script.h204
1 files changed, 204 insertions, 0 deletions
diff --git a/engines/bladerunner/script/ai_script.h b/engines/bladerunner/script/ai_script.h
new file mode 100644
index 0000000000..c90d023ffb
--- /dev/null
+++ b/engines/bladerunner/script/ai_script.h
@@ -0,0 +1,204 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef BLADERUNNER_SCRIPT_AI_H
+#define BLADERUNNER_SCRIPT_AI_H
+
+#include "bladerunner/script/script.h"
+
+namespace BladeRunner {
+
+class BladeRunnerEngine;
+
+class AIScriptBase : public ScriptBase {
+public:
+ AIScriptBase(BladeRunnerEngine *vm) : ScriptBase(vm) {}
+
+ virtual void Initialize() = 0;
+ virtual bool Update() = 0;
+ virtual void TimerExpired(int timer) = 0;
+ virtual void CompletedMovementTrack() = 0;
+ virtual void ReceivedClue(int clueId, int fromActorId) = 0;
+ virtual void ClickedByPlayer() = 0;
+ virtual void EnteredScene(int setId) = 0;
+ virtual void OtherAgentEnteredThisScene(int otherActorId) = 0;
+ virtual void OtherAgentExitedThisScene(int otherActorId) = 0;
+ virtual void OtherAgentEnteredCombatMode(int otherActorId, int combatMode) = 0;
+ virtual void ShotAtAndMissed() = 0;
+ virtual void ShotAtAndHit() = 0;
+ virtual void Retired(int byActorId) = 0;
+ virtual int GetFriendlinessModifierIfGetsClue(int otherActorId, int clueId) = 0;
+ virtual bool GoalChanged(int currentGoalNumber, int newGoalNumber) = 0;
+ virtual bool UpdateAnimation(int *animation, int *frame) = 0;
+ virtual bool ChangeAnimationMode(int mode) = 0;
+ virtual void QueryAnimationState(int *animationState, int *animationFrame, int *a3, int *a4) = 0;
+ virtual void SetAnimationState(int animationState, int animationFrame, int a3, int a4) = 0;
+ virtual bool ReachedMovementTrackWaypoint(int waypointId) = 0;
+ virtual void FledCombat() = 0;
+};
+
+#define DECLARE_SCRIPT(name) \
+class AIScript##name : public AIScriptBase { \
+public: \
+ AIScript##name(BladeRunnerEngine *vm) \
+ : AIScriptBase(vm) \
+ {} \
+ void Initialize(); \
+ bool Update(); \
+ void TimerExpired(int timer); \
+ void CompletedMovementTrack(); \
+ void ReceivedClue(int clueId, int fromActorId); \
+ void ClickedByPlayer(); \
+ void EnteredScene(int setId); \
+ void OtherAgentEnteredThisScene(int otherActorId); \
+ void OtherAgentExitedThisScene(int otherActorId); \
+ void OtherAgentEnteredCombatMode(int otherActorId, int combatMode); \
+ void ShotAtAndMissed(); \
+ void ShotAtAndHit(); \
+ void Retired(int byActorId); \
+ 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 *animationFrame, int *a3, int *a4); \
+ void SetAnimationState(int animationState, int animationFrame, int a3, int a4); \
+ bool ReachedMovementTrackWaypoint(int waypointId); \
+ void FledCombat(); \
+private:
+#define END_SCRIPT };
+
+DECLARE_SCRIPT(McCoy)
+ int dword_45A0D0_animation_state;
+ int dword_45A0D4_animation_frame;
+ int dword_45A0D8;
+ int dword_45A0DC;
+ int dword_45A0E0;
+ int dword_45A0E4;
+ float off_45A0EC;
+ int dword_45A0E8;
+ int dword_45A0F0;
+ int dword_45A0F4;
+ int dword_45A0F8;
+ int dword_45A0FC;
+ int dword_462718;
+ int dword_46271C;
+ float off_45A100;
+ float flt_462710;
+ float flt_462714;
+
+ void sub_4053E0();
+ void sub_4054F0();
+ void sub_405660();
+ void sub_405800();
+ void sub_4058B0();
+ void sub_405920();
+ void sub_405940(float a1);
+ void sub_4059D0(float a1);
+END_SCRIPT
+
+DECLARE_SCRIPT(Runciter)
+ int var_45CD70_animation_state;
+ int var_45CD74_animation_frame;
+ int var_462800;
+ int var_462804;
+ int var_45CD78;
+ int var_45CD7C;
+ int var_45CD80;
+ int var_45CD84;
+ int var_45CD88;
+END_SCRIPT
+
+DECLARE_SCRIPT(OfficerLeary)
+ int var_45D5B0_animation_state;
+ int var_45D5B4_animation_frame;
+ int var_45D5B8;
+ int var_45D5BC;
+ int var_462880;
+ int var_462884;
+
+ bool sub_431408();
+ bool sub_431420();
+END_SCRIPT
+
+DECLARE_SCRIPT(Leon)
+ int var_45EDB0_animation_state;
+ int var_45EDB4_animation_frame;
+ int var_45EDAC;
+ int var_462AF0;
+ int var_462AF4;
+ float var_45EDA0_z;
+ float var_45EDA4_y;
+ float var_45EDA8_x;
+
+ float sub_446700(int actorId, float x, float y, float z);
+END_SCRIPT
+
+DECLARE_SCRIPT(Maggie)
+ int var_45F3F0_animation_state;
+ int var_45F3F4_animation_frame;
+ int var_462B30;
+ int var_462B34;
+ int var_45F3F8;
+ int var_45F3FC;
+ int var_45F400;
+ int var_45F404;
+ int var_45F408;
+
+ int sub_44B260();
+ float sub_44B200(int actorId, float x, float y, float z);
+END_SCRIPT
+
+#undef DECLARE_SCRIPT
+#undef END_SCRIPT
+
+class AIScripts {
+private:
+ BladeRunnerEngine *_vm;
+ int _inScriptCounter;
+ int _actorCount;
+ AIScriptBase **_AIScripts;
+ bool *_actorUpdating;
+public:
+ AIScripts(BladeRunnerEngine *vm, int actorCount);
+ ~AIScripts();
+
+ void initialize(int actor);
+ void update(int actor);
+ void timerExpired(int actor, int timer);
+ void completedMovementTrack(int actor);
+ void receivedClue(int actor, int clueId, int fromActorId);
+ void clickedByPlayer(int actor);
+ void enteredScene(int actor, int setId);
+ void otherAgentEnteredThisScene(int actor, int otherActorId);
+ void otherAgentExitedThisScene(int actor, int otherActorId);
+ void retired(int actor, int retiredByActorId);
+ void goalChanged(int actor, int currentGoalNumber, int newGoalNumber);
+ bool reachedMovementTrackWaypoint(int actor, int waypointId);
+ void updateAnimation(int actor, int *animation, int *frame);
+ void changeAnimationMode(int actor, int mode);
+
+ bool isInsideScript() const { return _inScriptCounter > 0; }
+};
+
+} // End of namespace BladeRunner
+
+#endif