Logo Search packages:      
Sourcecode: scummvm version File versions

object.h

/* ScummVM - Scumm Interpreter
 * Copyright (C) 2003-2004 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., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 *
 * $Header: /cvsroot/scummvm/scummvm/sword1/object.h,v 1.5 2004/01/11 15:47:41 eriktorbjorn Exp $
 *
 */

#ifndef BSOBJECT_H
#define BSOBJECT_H

#include "scummsys.h"

namespace Sword1 {

#define     O_TOTAL_EVENTS    5
#define     O_WALKANIM_SIZE   600               //max number of nodes in router output
#define     O_GRID_SIZE       200
#define     EXTRA_GRID_SIZE   20
//--------------------------------------------------------------------------------------

struct OEventSlot {                 //receiving event list in the compact - 
      int32 o_event;          //array of these with O_TOTAL_EVENTS elements
      int32 o_event_script;
};

#define     TOTAL_script_levels     5
//-----
struct ScriptTree {                                               //this is a logic tree, used by OBJECTs
      int32 o_script_level;                                 //logic level
      int32 o_script_id[TOTAL_script_levels];   //script id's (are unique to each level)
      int32 o_script_pc[TOTAL_script_levels];   //pc of script for each (if script_manager)
};    // size = 11*int32 = 44 bytes
//--------------------------------------------------------------------------------------
struct TalkOffset {
      int32 x;
      int32 y;
};    // size = 2*int32 = 8 bytes
//--------------------------------------------------------------------------------------
struct WalkData {
      int32 frame;
      int32 x;
      int32 y;
      int32 step;
      int32 dir;
} GCC_PACK; // size = 5*int32 = 20 bytes

struct Object {
      int32 o_type;                                   // 0  broad description of type - object, floor, etc.
      int32 o_status;                           // 4  bit flags for logic, graphics, mouse, etc.
      int32 o_logic;                            // 8  logic type
      int32 o_place;                            // 12 where is the mega character
      int32 o_down_flag;                        // 16 pass back down with this - with C possibly both are unnecessary?
      int32 o_target;                           // 20 target object for the GTM                 *these are linked to script
      int32 o_screen;                           // 24 physical screen/section
      int32 o_frame;                            // 28 frame number &
      int32 o_resource;                         // 32 id of spr file it comes from
      int32 o_sync;                                   // 36 receive sync here
      int32 o_pause;                            // 40 logic_engine() pauses these cycles
      int32 o_xcoord;                           // 44 
      int32 o_ycoord;                           // 48
      int32 o_mouse_x1;                         // 52 top-left of mouse area is (x1,y1)
      int32 o_mouse_y1;                         // 56 
      int32 o_mouse_x2;                         // 60 bottom-right of area is (x2,y2)     (these coords are inclusive)
      int32 o_mouse_y2;                         // 64 
      int32 o_priority;                         // 68
      int32 o_mouse_on;                         // 72
      int32 o_mouse_off;                        // 76
      int32 o_mouse_click;                      // 80
      int32 o_interact;                         // 84
      int32 o_get_to_script;              // 88
      int32 o_scale_a;                          // 92 used by floors
      int32 o_scale_b;                          // 96 
      int32 o_anim_x;                           // 100
      int32 o_anim_y;                           // 104

      ScriptTree  o_tree;                             // 108      size = 44 bytes
      ScriptTree  o_bookmark;                   // 152      size = 44 bytes

      int32 o_dir;                                    // 196
      int32 o_speech_pen;                       // 200
      int32 o_speech_width;                     // 204
      int32 o_speech_time;                      // 208
      int32 o_text_id;                          // 212 working back from o_ins1
      int32 o_tag;                                    // 216
      int32 o_anim_pc;                          // 220 position within an animation structure
      int32 o_anim_resource;              // 224 cdt or anim table

      int32 o_walk_pc;                          // 228

      TalkOffset  talk_table[6];                // 232      size = 6*8 bytes = 48

      OEventSlot o_event_list[O_TOTAL_EVENTS];  // 280      size = 5*8 bytes = 40

      int32 o_ins1;                                   // 320
      int32 o_ins2;                                   // 324
      int32 o_ins3;                                   // 328

      int32 o_mega_resource;              // 332
      int32 o_walk_resource;              // 336

      WalkData    o_route[O_WALKANIM_SIZE];     // 340      size = 600*20 bytes = 12000
                        // mega size = 12340 bytes (+ 8 byte offset table + 20 byte header = 12368)
};

struct CollisionData {
      Object  *compact;
      int32 w[24];
      int32 h[24];
      WalkData route[24];
};

} // End of namespace Sword1 

#endif //BSOBJECT_H


Generated by  Doxygen 1.6.0   Back to index