/* 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 BBVS_MINIGAMES_BBANT_H #define BBVS_MINIGAMES_BBANT_H #include "bbvs/minigames/minigame.h" namespace Bbvs { class MinigameBbAnt : public Minigame { public: MinigameBbAnt(BbvsEngine *vm) : Minigame(vm) {}; bool run(bool fromMainGame); public: struct Obj { int kind; int x, y, priority; int xIncr, yIncr; const ObjAnimation *anim; int frameIndex; int ticks; int otherObjIndex; int animIndex; int animIndexIncr; int status; int field30; int damageCtr; int smokeCtr; int counter; int hasSmoke; const ObjAnimation *anim2; int frameIndex2; int ticks2; int status2; int flag; }; enum { kMaxObjectsCount = 256, kScaleDim = 28 }; struct ObjInit { const ObjAnimation *anim1; const ObjAnimation *anim2; const ObjAnimation *anim3; int x, y; }; Obj _objects[kMaxObjectsCount]; int _score, _hiScore; int _totalBugsCount; int _bugsChanceByKind[6], _bugsCountByKind[6]; int _skullBugCtr; int _stompX, _stompY; int _stompDelay1; int _stompCounter1; int _stompCounter2; int _stompCount; int _hasLastStompObj; Obj *_lastStompObj; int _counter1; int _countdown10; int _counter4; int _levelTimeDelay; int _levelTimeLeft; int _countdown4; int _countdown3; int _countdown6; int _countdown5; int _countdown7; byte _scaleBuf[kScaleDim * kScaleDim]; const ObjAnimation *getAnimation(int animIndex); const ObjInit *getObjInit(int index); const ObjAnimation * const *getObjKindAnimTable(int kind); const ObjAnimation *getObjAnim(int index); void buildDrawList0(DrawList &drawList); void buildDrawList1(DrawList &drawList); void buildDrawList2(DrawList &drawList); void buildDrawList3(DrawList &drawList); void drawMagnifyingGlass(DrawList &drawList); void drawSprites(); void drawSprites0(); void drawSprites1(); void drawSprites2(); void drawSprites3(); Obj *getFreeObject(); void initObjects(); void initObjects0(); void initObjects1(); void initVars(); void initVars1(); void initVars2(); void initVars3(); bool updateStatus(int mouseX, int mouseY, uint mouseButtons); bool updateStatus0(int mouseX, int mouseY, uint mouseButtons); bool updateStatus1(int mouseX, int mouseY, uint mouseButtons); bool updateStatus2(int mouseX, int mouseY, uint mouseButtons); bool updateStatus3(int mouseX, int mouseY, uint mouseButtons); void getRandomBugObjValues(int &x, int &y, int &animIndexIncr, int &field30); void insertBugSmokeObj(int x, int y, int bugObjIndex); void insertSmokeObj(int x, int y); void resetObj(int objIndex); void insertStompObj(int x, int y); void removeStompObj(Obj *obj); void insertBugObj(int kind, int animIndexIncr, int always0, int x, int y, int field30, int always1); void removeBugObj(int objIndex); void updateBugObjAnim(int objIndex); void updateObjAnim2(int objIndex); void insertRandomBugObj(int kind); bool isBugOutOfScreen(int objIndex); void updateObjAnim3(int objIndex); void updateBugObj1(int objIndex); void updateObjKind2(int objIndex); void updateObjKind3(int objIndex); void updateObjKind4(int objIndex); void updateObjKind5(int objIndex); void updateStompObj(int objIndex); void updateSmokeObj(int objIndex); void updateFootObj(int objIndex); bool isBugAtCandy(int objIndex, int &candyObjIndex); bool isMagGlassAtBug(int objIndex); bool isMagGlassAtBeavisLeg(int objIndex); bool testObj5(int objIndex); void updateObjs(uint mouseButtons); void update(); void scale2x(int x, int y); void loadSounds(); }; } // End of namespace Bbvs #endif // BBVS_MINIGAMES_BBANT_H