mirror of
https://github.com/libretro/scummvm.git
synced 2025-01-07 10:21:31 +00:00
301 lines
5.7 KiB
C++
301 lines
5.7 KiB
C++
/* 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 KINGDOM_LOGIC_H
|
|
#define KINGDOM_LOGIC_H
|
|
|
|
namespace Kingdom {
|
|
|
|
class KingdomGame;
|
|
|
|
class Logic {
|
|
|
|
typedef void (Kingdom::Logic::*Opcode)(void);
|
|
|
|
private:
|
|
KingdomGame *_vm;
|
|
|
|
Common::HashMap<int, Opcode> _opCodes;
|
|
void initOpcodes();
|
|
void initOpcodesDemo();
|
|
void initOpcodesFull();
|
|
|
|
void GPL1_10();
|
|
void GPL1_11();
|
|
void GPL1_20();
|
|
void GPL1_30();
|
|
void GPL1_31();
|
|
void GPL1_32();
|
|
void GPL1_40();
|
|
void GPL1_41();
|
|
void GPL1_42();
|
|
void GPL1_50();
|
|
void GPL1_51();
|
|
void GPL1_52();
|
|
void GPL1_53();
|
|
void GPL1_60();
|
|
void GPL1_70();
|
|
void GPL1_71();
|
|
void GPL1_72();
|
|
void GPL1_80();
|
|
void GPL1_81();
|
|
void GPL1_82();
|
|
void GPL1_90();
|
|
void GPL1_91();
|
|
void GPL1_92();
|
|
void GPL1_100();
|
|
void GPL1_101();
|
|
void GPL1_102();
|
|
void GPL1_110();
|
|
void GPL1_111();
|
|
void GPL1_112();
|
|
void GPL1_120();
|
|
void GPL1_121();
|
|
void GPL1_130();
|
|
void GPL1_140();
|
|
void GPL1_141();
|
|
void GPL1_142();
|
|
void GPL1_150();
|
|
void GPL1_151();
|
|
void GPL1_160();
|
|
void GPL1_161();
|
|
void GPL1_162();
|
|
void GPL1_170();
|
|
void GPL1_171();
|
|
void GPL1_172();
|
|
void GPL1_180();
|
|
void GPL1_181();
|
|
void GPL1_182();
|
|
void GPL1_190();
|
|
void GPL1_200();
|
|
void GPL1_201();
|
|
void GPL1_202();
|
|
void GPL1_210();
|
|
void GPL1_211();
|
|
void GPL1_212();
|
|
void GPL1_220();
|
|
void GPL1_221();
|
|
void GPL1_222();
|
|
void GPL1_230();
|
|
void GPL1_240();
|
|
void GPL1_241();
|
|
void GPL1_242();
|
|
|
|
void GPL2_250();
|
|
void GPL2_251();
|
|
void GPL2_252();
|
|
void GPL2_260();
|
|
void GPL2_261();
|
|
void GPL2_270();
|
|
void GPL2_271();
|
|
void GPL2_272();
|
|
void GPL2_280();
|
|
void GPL2_290();
|
|
void GPL2_291();
|
|
void GPL2_292();
|
|
void GPL2_300();
|
|
void GPL2_301();
|
|
void GPL2_302();
|
|
void GPL2_310();
|
|
void GPL2_311();
|
|
void GPL2_312();
|
|
void GPL2_320();
|
|
void GPL2_321();
|
|
void GPL2_322();
|
|
void GPL2_330();
|
|
void GPL2_331();
|
|
void GPL2_332();
|
|
void GPL2_340();
|
|
void GPL2_341();
|
|
void GPL2_342();
|
|
void GPL2_350();
|
|
void GPL2_351();
|
|
void GPL2_360();
|
|
void GPL2_361();
|
|
void GPL2_362();
|
|
void GPL2_370();
|
|
void GPL2_371();
|
|
void GPL2_372();
|
|
void GPL2_380();
|
|
void GPL2_381();
|
|
void GPL2_382();
|
|
void GPL2_390();
|
|
void GPL2_400();
|
|
void GPL2_401();
|
|
void GPL2_402();
|
|
void GPL2_410();
|
|
void GPL2_411();
|
|
void GPL2_420();
|
|
void GPL2_421();
|
|
void GPL2_422();
|
|
void GPL2_430();
|
|
void GPL2_431();
|
|
void GPL2_440();
|
|
void GPL2_441();
|
|
void GPL2_442();
|
|
void GPL2_450();
|
|
void GPL2_451();
|
|
void GPL2_460();
|
|
void GPL2_461();
|
|
void GPL2_462();
|
|
void GPL2_480();
|
|
void GPL2_481();
|
|
void GPL2_482();
|
|
void GPL2_490();
|
|
void GPL2_491();
|
|
|
|
void GPL3_500();
|
|
void GPL3_501();
|
|
void GPL3_502();
|
|
void GPL3_510();
|
|
void GPL3_511();
|
|
void GPL3_512();
|
|
void GPL3_520();
|
|
void GPL3_521();
|
|
void GPL3_522();
|
|
void GPL3_530();
|
|
void GPL3_531();
|
|
void GPL3_540();
|
|
void GPL3_541();
|
|
void GPL3_542();
|
|
void GPL3_550();
|
|
void GPL3_551();
|
|
void GPL3_552();
|
|
void GPL3_560();
|
|
void GPL3_561();
|
|
void GPL3_562();
|
|
void GPL3_570();
|
|
void GPL3_571();
|
|
void GPL3_572();
|
|
void GPL3_580();
|
|
void GPL3_581();
|
|
void GPL3_582();
|
|
void GPL3_590();
|
|
void GPL3_591();
|
|
void GPL3_592();
|
|
void GPL3_600();
|
|
void GPL3_610();
|
|
void GPL3_611();
|
|
void GPL3_620();
|
|
void GPL3_621();
|
|
void GPL3_630();
|
|
void GPL3_631();
|
|
void GPL3_640();
|
|
void GPL3_641();
|
|
void GPL3_642();
|
|
void GPL3_650();
|
|
void GPL3_651();
|
|
void GPL3_660();
|
|
void GPL3_661();
|
|
void GPL3_670();
|
|
void GPL3_671();
|
|
void GPL3_680();
|
|
void GPL3_690();
|
|
void GPL3_691();
|
|
void GPL3_692();
|
|
void GPL3_700();
|
|
void GPL3_701();
|
|
void GPL3_710();
|
|
void GPL3_711();
|
|
void GPL3_712();
|
|
void GPL3_720();
|
|
void GPL3_721();
|
|
void GPL3_730();
|
|
void GPL3_731();
|
|
void GPL3_740();
|
|
void GPL3_741();
|
|
void GPL3_760();
|
|
void GPL3_761();
|
|
void GPL3_780();
|
|
void GPL3_781();
|
|
void GPL3_790();
|
|
void GPL3_791();
|
|
|
|
void GPL4_900();
|
|
void GPL4_901();
|
|
void GPL4_991();
|
|
void GPL4_992();
|
|
void GPL4_992_demo();
|
|
void GPL4_993();
|
|
void GPL4_993_demo();
|
|
void GPL4_994();
|
|
|
|
public:
|
|
int _statPlay;
|
|
int _oldStatPlay;
|
|
int _nodeNum;
|
|
int _oldNode; // CHECKME: Useless? If so, to be removed
|
|
int _nextNode;
|
|
int _robberyNode;
|
|
int16 _nodes[99];
|
|
int _currMap;
|
|
bool _oldEye;
|
|
bool _eye;
|
|
bool _oldHelp;
|
|
bool _help;
|
|
int _lastObstacle;
|
|
bool _lastObs;
|
|
int _inventory[19];
|
|
bool _replay;
|
|
bool _pouch;
|
|
bool _oldPouch;
|
|
bool _resurrect;
|
|
bool _tideCntl;
|
|
int _rtnNode;
|
|
int _health;
|
|
int _healthOld;
|
|
bool _fstFwd;
|
|
bool _spell1;
|
|
bool _spell2;
|
|
bool _spell3;
|
|
|
|
int _mapStat; // CHECKME: Useless? If so, to be removed
|
|
|
|
void enableUIButtons();
|
|
void disableUIButtons();
|
|
bool wound();
|
|
void GPLogic1_SubSP10();
|
|
void GPLogic1_SubSP121();
|
|
void GPLogic2_SubSP361();
|
|
bool chkDesertObstacles();
|
|
void increaseHealth();
|
|
void endCredits();
|
|
void gameHelp_Sub43C();
|
|
void initVariables();
|
|
|
|
public:
|
|
explicit Logic(Kingdom::KingdomGame *vm);
|
|
virtual ~Logic(void) {}
|
|
|
|
void gameHelp();
|
|
void inventoryDel(int item);
|
|
void inventoryAdd(int item);
|
|
void executeOpcode();
|
|
void initPlay();
|
|
void switchAS();
|
|
void characterDeath();
|
|
void synchronize(Common::Serializer &s);
|
|
};
|
|
}
|
|
|
|
#endif
|