/* 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. * */ /* * This code is based on original Sfinx source code * Copyright (c) 1994-1997 Janus B. Wisniewski and L.K. Avalon */ #ifndef CGE2_SNAIL_H #define CGE2_SNAIL_H #include "cge2/cge2_main.h" namespace CGE2 { enum Action { kNear, kMTake, kFTake, kActions }; enum SNCom { kSNCom0 = 128, kSNNop, // NOP :: do nothing kSNUse, // USE | :: hint for using kSNPause, // PAUSE -1 :: delay /72 seconds kSNInf, // INF -1 :: show text referrenced by kSNCave, // CAVE -1 :: go to board kSNSlave, // SLAVE kSNFocus, // FOCUS :: change active hero kSNSetX, // SETX :: set sprite shift in x axis kSNSetY, // SETX :: set sprite shift in y axis kSNSetZ, // SETX :: set sprite shift in z axis kSNAdd, // ADD :: sum vectors kSNSub, // SUB :: subtract vectors kSNMul, // MUL :: multiply vector by number kSNDiv, // DIV :: divide vector by number kSNIf, // IF kSNFlag, // FLAG :: set flag to kSNFlash, // FLASH -1 0|1 :: lighten whole image (on/off) kSNLight, // LIGHT kSNCycle, // CYCLE :: rotate colors from 1 kSNClear, // CLEAR -1 0 :: clear kSNAIL queue kSNTalk, // TALK -1 0|1 :: enable speach (on/off) kSNMouse, // MOUSE -1 0|1 :: enable mouse (on/off) kSNMap, // MAP 0|1 0 :: temporarily turn off map for hero kSNCount, // COUNT kSNMidi, // MIDI -1 :: play MIDI referenced by (-1 = off) kSNSetDlg, // SETDLG 0..3 0..3 :: switch of speach mode kSNMskDlg, // MSKDLG 0..3 0..3 :: switch of speach mode mask kSNSpr, kSNWait, // WAIT |-1 :: wait for SEQ (-1 = freeze) kSNHide, // HIDE 0|1 :: visibility of sprite kSNRoom, // ROOM 0|1 :: additional room in pocket (no/yes) kSNSay, // SAY :: say text referenced by kSNSound, // SOUND :: play sound effect referenced by kSNTime, // TIME 0 :: say current time kSNKill, // KILL 0 :: remove sprite kSNRSeq, // RSEQ :: relative jump SEQ lines kSNSeq, // SEQ :: jump to certain SEQ kSNSend, // SEND :: move sprite to board kSNSwap, // SWAP spr2> :: sprite exchange kSNKeep, // KEEP :: take sprite into pocket and jump to kSNGive, // GIVE :: remove sprite from pocket and jump to kSNGetPos, // GETPOS :: take sprite's position kSNGoto, // GOTO :: move sprite to position kSNMoveX, // MOVEX :: relative move along X axis kSNMoveY, // MOVEY :: relative move along Y axis kSNMoveZ, // MOVEZ :: relative move along Z axis kSNTrans, // TRANS 0|1 :: clear/set logical transparency kSNPort, // PORT 0|1 :: clear/set "takeability" of sprite kSNNext, // NEXT :: jump to - NEAR or TAKE kSNNNext, // NNEXT :: jump to - NEAR kSNMTNext, // MTNEXT :: jump to - TAKE kSNFTNext, // FTNEXT :: jump to - TAKE kSNRNNext, // RNNEXT :: relative jump to - NEAR kSNRMTNext, // RMTNEXT :: relative jump to - TAKE kSNRFTNext, // RFTNEXT :: relative jump to - TAKE kSNRMNear, // RMNEAR 0 :: remove NEAR list kSNRMMTake, // RMMTAKE 0 :: remove TAKE list kSNRMFTake, // RMFTAKE 0 :: remove TAKE list kSNSetRef, // RETREF :: change reference of sprite to kSNBackPt, // BACKPT 0 :: paint sprite onto the background kSNWalk, // WALK | :: go close to the sprite or point kSNReach, // REACH | :: reach the sprite or point with method kSNCover, // COVER :: cover sprite with sprite kSNUncover, // UNCOVER :: restore the state before COVER kSNDim, kSNExec, kSNStep, kSNGhost, kSNNOne = kNoByte }; class Snail { static const char *comTxt[]; public: static int com(const char *com); }; } // End of namespace CGE2 #endif