aboutsummaryrefslogtreecommitdiff
path: root/sword2/object.h
diff options
context:
space:
mode:
authorMax Horn2006-02-11 22:45:04 +0000
committerMax Horn2006-02-11 22:45:04 +0000
commit26ee630756ebdd7c96bccede0881a8c8b98e8f2b (patch)
tree26e378d5cf990a2b81c2c96e9e683a7f333b62e8 /sword2/object.h
parent2a9a0d4211b1ea5723f1409d91cb95de8984429e (diff)
downloadscummvm-rg350-26ee630756ebdd7c96bccede0881a8c8b98e8f2b.tar.gz
scummvm-rg350-26ee630756ebdd7c96bccede0881a8c8b98e8f2b.tar.bz2
scummvm-rg350-26ee630756ebdd7c96bccede0881a8c8b98e8f2b.zip
Moved engines to the new engines/ directory
svn-id: r20582
Diffstat (limited to 'sword2/object.h')
-rw-r--r--sword2/object.h342
1 files changed, 0 insertions, 342 deletions
diff --git a/sword2/object.h b/sword2/object.h
deleted file mode 100644
index 1fd434f8a0..0000000000
--- a/sword2/object.h
+++ /dev/null
@@ -1,342 +0,0 @@
-/* Copyright (C) 1994-1998 Revolution Software Ltd.
- * Copyright (C) 2003-2006 The ScummVM project
- *
- * 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.
- *
- * $URL$
- * $Id$
- */
-
-#ifndef _SCRIPT_STRUCTURES
-#define _SCRIPT_STRUCTURES
-
-#include "common/stream.h"
-
-namespace Sword2 {
-
-// these structures represent the broken up compact components
-// these here declared to the system must be the same as those declared to
-// LINC (or it wont work)
-
-// mouse structure - defines mouse detection area, detection priority &
-// 'type' flag
-
-struct ObjectMouse {
- int32 x1; // Top-left and bottom-right of mouse
- int32 y1; // area. (These coords are inclusive.)
- int32 x2;
- int32 y2;
- int32 priority;
- int32 pointer; // type (or resource id?) of pointer used over this area
-
- static const int size() {
- return 24;
- }
-
- void read(byte *addr) {
- Common::MemoryReadStream readS(addr, size());
-
- x1 = readS.readSint32LE();
- y1 = readS.readSint32LE();
- x2 = readS.readSint32LE();
- y2 = readS.readSint32LE();
- priority = readS.readSint32LE();
- pointer = readS.readSint32LE();
- }
-
- void write(byte *addr) {
- Common::MemoryWriteStream writeS(addr, size());
-
- writeS.writeSint32LE(x1);
- writeS.writeSint32LE(y1);
- writeS.writeSint32LE(x2);
- writeS.writeSint32LE(y2);
- writeS.writeSint32LE(priority);
- writeS.writeSint32LE(pointer);
- }
-};
-
-// logic structure - contains fields used in logic script processing
-
-class ObjectLogic {
- // int32 looping; // 0 when first calling fn<function>;
- // 1 when calling subsequent times in
- // same loop
- // int32 pause; // pause count, used by fnPause()
-
-private:
- byte *_addr;
-
-public:
- ObjectLogic(byte *addr) {
- _addr = addr;
- }
-
- static const int size() {
- return 8;
- }
-
- byte *data() {
- return _addr;
- }
-
- int32 getLooping() { return READ_LE_UINT32(_addr); }
- int32 getPause() { return READ_LE_UINT32(_addr + 4); }
-
- void setLooping(int32 x) { WRITE_LE_UINT32(_addr, x); }
- void setPause(int32 x) { WRITE_LE_UINT32(_addr + 4, x); }
-};
-
-// status bits for 'type' field of ObjectGraphic)
-
-// in low word:
-
-#define NO_SPRITE 0x00000000 // don't print
-#define BGP0_SPRITE 0x00000001 // fixed to background parallax[0]
-#define BGP1_SPRITE 0x00000002 // fixed to background parallax[1]
-#define BACK_SPRITE 0x00000004 // 'background' sprite, fixed to main background
-#define SORT_SPRITE 0x00000008 // 'sorted' sprite, fixed to main background
-#define FORE_SPRITE 0x00000010 // 'foreground' sprite, fixed to main background
-#define FGP0_SPRITE 0x00000020 // fixed to foreground parallax[0]
-#define FGP1_SPRITE 0x00000040 // fixed to foreground parallax[0]
-
-// in high word:
-
-#define UNSHADED_SPRITE 0x00000000 // not to be shaded
-#define SHADED_SPRITE 0x00010000 // to be shaded, based on shading mask
-
-// graphic structure - contains fields appropriate to sprite output
-
-class ObjectGraphic {
- // int32 type; // see above
- // int32 anim_resource; // resource id of animation file
- // int32 anim_pc; // current frame number of animation
-
-private:
- byte *_addr;
-
-public:
- ObjectGraphic(byte *addr) {
- _addr = addr;
- }
-
- static const int size() {
- return 12;
- }
-
- byte *data() {
- return _addr;
- }
-
- int32 getType() { return READ_LE_UINT32(_addr); }
- int32 getAnimResource() { return READ_LE_UINT32(_addr + 4); }
- int32 getAnimPc() { return READ_LE_UINT32(_addr + 8); }
-
- void setType(int32 x) { WRITE_LE_UINT32(_addr, x); }
- void setAnimResource(int32 x) { WRITE_LE_UINT32(_addr + 4, x); }
- void setAnimPc(int32 x) { WRITE_LE_UINT32(_addr + 8, x); }
-};
-
-// speech structure - contains fields used by speech scripts & text output
-
-class ObjectSpeech {
- // int32 pen; // colour to use for body of characters
- // int32 width; // max width of text sprite
- // int32 command; // speech script command id
- // int32 ins1; // speech script instruction parameters
- // int32 ins2;
- // int32 ins3;
- // int32 ins4;
- // int32 ins5;
- // int32 wait_state; // 0 not waiting,
- // 1 waiting for next speech command
-
-private:
- byte *_addr;
-
-public:
- ObjectSpeech(byte *addr) {
- _addr = addr;
- }
-
- static const int size() {
- return 36;
- }
-
- byte *data() {
- return _addr;
- }
-
- int32 getPen() { return READ_LE_UINT32(_addr); }
- int32 getWidth() { return READ_LE_UINT32(_addr + 4); }
- int32 getCommand() { return READ_LE_UINT32(_addr + 8); }
- int32 getIns1() { return READ_LE_UINT32(_addr + 12); }
- int32 getIns2() { return READ_LE_UINT32(_addr + 16); }
- int32 getIns3() { return READ_LE_UINT32(_addr + 20); }
- int32 getIns4() { return READ_LE_UINT32(_addr + 24); }
- int32 getIns5() { return READ_LE_UINT32(_addr + 28); }
- int32 getWaitState() { return READ_LE_UINT32(_addr + 32); }
-
- void setPen(int32 x) { WRITE_LE_UINT32(_addr, x); }
- void setWidth(int32 x) { WRITE_LE_UINT32(_addr + 4, x); }
- void setCommand(int32 x) { WRITE_LE_UINT32(_addr + 8, x); }
- void setIns1(int32 x) { WRITE_LE_UINT32(_addr + 12, x); }
- void setIns2(int32 x) { WRITE_LE_UINT32(_addr + 16, x); }
- void setIns3(int32 x) { WRITE_LE_UINT32(_addr + 20, x); }
- void setIns4(int32 x) { WRITE_LE_UINT32(_addr + 24, x); }
- void setIns5(int32 x) { WRITE_LE_UINT32(_addr + 28, x); }
- void setWaitState(int32 x) { WRITE_LE_UINT32(_addr + 32, x); }
-};
-
-// mega structure - contains fields used for mega-character & mega-set
-// processing
-
-class ObjectMega {
- // int32 NOT_USED_1; // only free roaming megas need to
- // check this before registering their
- // graphics for drawing
- // int32 NOT_USED_2; // id of floor on which we are standing
- // int32 NOT_USED_3; // id of object which we are getting to
- // int32 NOT_USED_4; // pixel distance to stand from player
- // character when in conversation
- // int32 currently_walking; // number given us by the auto router
- // int32 walk_pc; // current frame number of walk-anim
- // int32 scale_a; // current scale factors, taken from
- // int32 scale_b; // floor data
- // int32 feet_x; // mega feet coords - frame-offsets are
- // int32 feet_y; // added to these position mega frames
- // int32 current_dir; // current dirction faced by mega; used
- // by autorouter to determine turns
- // required
- // int32 NOT_USED_5; // means were currently avoiding a
- // collision (see fnWalk)
- // int32 megaset_res; // resource id of mega-set file
- // int32 NOT_USED_6; // NOT USED
-
-private:
- byte *_addr;
-
-public:
- ObjectMega(byte *addr) {
- _addr = addr;
- }
-
- static const int size() {
- return 56;
- }
-
- byte *data() {
- return _addr;
- }
-
- int32 getIsWalking() { return READ_LE_UINT32(_addr + 16); }
- int32 getWalkPc() { return READ_LE_UINT32(_addr + 20); }
- int32 getScaleA() { return READ_LE_UINT32(_addr + 24); }
- int32 getScaleB() { return READ_LE_UINT32(_addr + 28); }
- int32 getFeetX() { return READ_LE_UINT32(_addr + 32); }
- int32 getFeetY() { return READ_LE_UINT32(_addr + 36); }
- int32 getCurDir() { return READ_LE_UINT32(_addr + 40); }
- int32 getMegasetRes() { return READ_LE_UINT32(_addr + 48); }
-
- void setIsWalking(int32 x) { WRITE_LE_UINT32(_addr + 16, x); }
- void setWalkPc(int32 x) { WRITE_LE_UINT32(_addr + 20, x); }
- void setScaleA(int32 x) { WRITE_LE_UINT32(_addr + 24, x); }
- void setScaleB(int32 x) { WRITE_LE_UINT32(_addr + 28, x); }
- void setFeetX(int32 x) { WRITE_LE_UINT32(_addr + 32, x); }
- void setFeetY(int32 x) { WRITE_LE_UINT32(_addr + 36, x); }
- void setCurDir(int32 x) { WRITE_LE_UINT32(_addr + 40, x); }
- void setMegasetRes(int32 x) { WRITE_LE_UINT32(_addr + 48, x); }
-
- int32 calcScale() {
- // Calc scale at which to print the sprite, based on feet
- // y-coord & scaling constants (NB. 'scale' is actually
- // 256 * true_scale, to maintain accuracy)
-
- // Ay+B gives 256 * scale ie. 256 * 256 * true_scale for even
- // better accuracy, ie. scale = (Ay + B) / 256
- return (getScaleA() * getFeetY() + getScaleB()) / 256;
- }
-};
-
-// walk-data structure - contains details of layout of frames in the
-// mega-set, and how they are to be used
-
-struct ObjectWalkdata {
- int32 nWalkFrames; // no. of frames per walk-cycle
- int32 usingStandingTurnFrames; // 0 = no 1 = yes
- int32 usingWalkingTurnFrames; // 0 = no 1 = yes
- int32 usingSlowInFrames; // 0 = no 1 = yes
- int32 usingSlowOutFrames; // 0 = no !0 = number of slow-out frames in each direction
- int32 nSlowInFrames[8]; // no. of slow-in frames in each direction
- int32 leadingLeg[8]; // leading leg for walk in each direction (0 = left 1 = right)
- int32 dx[8 * (12 + 1)]; // walk step distances in x direction
- int32 dy[8 * (12 + 1)]; // walk step distances in y direction
-
- static const int size() {
- return 916;
- }
-
- void read(byte *addr) {
- Common::MemoryReadStream readS(addr, size());
-
- nWalkFrames = readS.readUint32LE();
- usingStandingTurnFrames = readS.readUint32LE();
- usingWalkingTurnFrames = readS.readUint32LE();
- usingSlowInFrames = readS.readUint32LE();
- usingSlowOutFrames = readS.readUint32LE();
-
- int i;
-
- for (i = 0; i < ARRAYSIZE(nSlowInFrames); i++)
- nSlowInFrames[i] = readS.readUint32LE();
-
- for (i = 0; i < ARRAYSIZE(leadingLeg); i++)
- leadingLeg[i] = readS.readUint32LE();
-
- for (i = 0; i < ARRAYSIZE(dx); i++)
- dx[i] = readS.readUint32LE();
-
- for (i = 0; i < ARRAYSIZE(dy); i++)
- dy[i] = readS.readUint32LE();
- }
-
- void write(byte *addr) {
- Common::MemoryWriteStream writeS(addr, size());
-
- writeS.writeUint32LE(nWalkFrames);
- writeS.writeUint32LE(usingStandingTurnFrames);
- writeS.writeUint32LE(usingWalkingTurnFrames);
- writeS.writeUint32LE(usingSlowInFrames);
- writeS.writeUint32LE(usingSlowOutFrames);
-
- int i;
-
- for (i = 0; i < ARRAYSIZE(nSlowInFrames); i++)
- writeS.writeUint32LE(nSlowInFrames[i]);
-
- for (i = 0; i < ARRAYSIZE(leadingLeg); i++)
- writeS.writeUint32LE(leadingLeg[i]);
-
- for (i = 0; i < ARRAYSIZE(dx); i++)
- writeS.writeUint32LE(dx[i]);
-
- for (i = 0; i < ARRAYSIZE(dy); i++)
- writeS.writeUint32LE(dy[i]);
- }
-};
-
-} // End of namespace Sword2
-
-#endif