aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/hopkins/anim.cpp17
-rw-r--r--engines/hopkins/anim.h6
-rw-r--r--engines/hopkins/globals.h15
3 files changed, 30 insertions, 8 deletions
diff --git a/engines/hopkins/anim.cpp b/engines/hopkins/anim.cpp
index b0e48a9e59..3977729b75 100644
--- a/engines/hopkins/anim.cpp
+++ b/engines/hopkins/anim.cpp
@@ -289,12 +289,19 @@ bool AnimationManager::REDRAW_ANIM() {
return false;
}
-void AnimationManager::BOBANIM_ON(int a1) {
- warning("TODO: BOBANIM_ON");
+void AnimationManager::BOBANIM_ON(int idx) {
+ if (GLOBALS.Bob[idx].field16) {
+ GLOBALS.Bob[idx].field16 = 0;
+ GLOBALS.Bob[idx].field10 = 5;
+ GLOBALS.Bob[idx].fieldC = 250;
+ GLOBALS.Bob[idx].field12 = 0;
+ GLOBALS.Bob[idx].field14 = 0;
+ }
}
-void AnimationManager::BOBANIM_OFF(int a1) {
- warning("TODO: BOBANIM_OFF");
+void AnimationManager::BOBANIM_OFF(int idx) {
+ GLOBALS.Bob[idx].field16 = 1;
+
}
void AnimationManager::CHARGE_ANIM(const Common::String &animName) {
@@ -466,7 +473,7 @@ int AnimationManager::CHARGE_BANK_SPRITE1(int idx, const Common::String &filenam
return result;
}
-void AnimationManager::set_offsetxy(byte *data, int idx, int xp, __int16 yp, bool isSize) {
+void AnimationManager::set_offsetxy(byte *data, int idx, int xp, int yp, bool isSize) {
byte *startP = data + 3;
for (int i = idx; i; --i)
startP += READ_LE_UINT32(startP) + 16;
diff --git a/engines/hopkins/anim.h b/engines/hopkins/anim.h
index dcd04bd36c..a85fc3cbad 100644
--- a/engines/hopkins/anim.h
+++ b/engines/hopkins/anim.h
@@ -45,11 +45,11 @@ public:
void PLAY_ANM(const Common::String &filename, uint32 rate, uint32 rate2, uint32 rate3);
bool REDRAW_ANIM();
- void BOBANIM_ON(int a1);
- void BOBANIM_OFF(int a1);
+ void BOBANIM_ON(int idx);
+ void BOBANIM_OFF(int idx);
void CHARGE_ANIM(const Common::String &animName);
void CLEAR_ANIM();
- void set_offsetxy(byte *data, int idx, int xp, __int16 yp, bool isSize);
+ void set_offsetxy(byte *data, int idx, int xp, int yp, bool isSize);
void RECHERCHE_ANIM(const byte *data, int idx, int nbytes);
int Get_Largeur(const byte *data, int idx);
int Get_Hauteur(const byte *data, int idx);
diff --git a/engines/hopkins/globals.h b/engines/hopkins/globals.h
index 572d73ba8e..48b88babd8 100644
--- a/engines/hopkins/globals.h
+++ b/engines/hopkins/globals.h
@@ -83,6 +83,19 @@ struct BankItem {
Common::String filename2;
};
+struct BobItem {
+ int fieldC;
+ int field10;
+ int field12;
+ int field14;
+ int field16;
+};
+
+struct BlAnimItem {
+ uint32 v1;
+ uint32 v2;
+};
+
struct VBobItem {
byte *field0;
int field4;
@@ -167,6 +180,8 @@ public:
CarreZoneItem CarreZone[100];
BqeAnimItem Bqe_Anim[35];
BankItem Bank[8];
+ BobItem Bob[36];
+ BlAnimItem BL_ANIM[30];
VBobItem VBob[35];
ObjetWItem ObjetW[300];
byte *Winventaire;