1 /*
2 
3 Copyright (C) 2015-2018 Night Dive Studios, LLC.
4 
5 This program is free software: you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation, either version 3 of the License, or
8 (at your option) any later version.
9 
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 GNU General Public License for more details.
14 
15 You should have received a copy of the GNU General Public License
16 along with this program.  If not, see <http://www.gnu.org/licenses/>.
17 
18 */
19 #ifndef __OBJBIT_H
20 #define __OBJBIT_H
21 
22 /*
23  * $Source: r:/prj/cit/src/inc/RCS/objbit.h $
24  * $Revision: 1.21 $
25  * $Author: xemu $
26  * $Date: 1994/08/22 03:03:51 $
27  *
28  */
29 
30 // Includes
31 
32 // OBJECT PROPERTIES FLAGS
33 
34 #define INVENTORY_GENERAL 0x0001u
35 #define INVENTORY_GENERAL_SHF 0u
36 #define EDMS_PRESERVE 0x0002u
37 #define EDMS_PRESERVE_SHF 1u
38 #define INVENT_USEMODE 0x000Cu
39 #define INVENT_USEMODE_SHF 2u
40 #define OBJECT_USE_NOCURSOR 0x0010u
41 #define OBJECT_USE_NOCURSOR_SHIFT 4u
42 
43 // RENDER_BLOCK is true if the thing can block the renderer
44 // currently only used for doors, where instance bit need be checked
45 // as well.
46 #define RENDER_BLOCK 0x0020u
47 #define RENDER_BLOCK_SHF 5u
48 
49 // LIGHT_TYPE is for how it should be lit.
50 // 0 -- normal, simple lighting applies
51 // 1 -- use complicated lighting
52 // 2 -- never apply lighting
53 // 3 -- consult instance bit to determine whether to light
54 #define LIGHT_TYPE 0x00C0u
55 #define LIGHT_TYPE_SHF 6u
56 
57 // TERRAIN_OBJECT
58 // 0 - ignore for terrain
59 // 1 - wall-like terrain
60 // 2 - complex terrain
61 // 3 - unused
62 #define TERRAIN_OBJECT 0x0300u
63 #define TERRAIN_OBJECT_SHF 8u
64 
65 // MY_IM_LARGE
66 // Doubles the size of the bitmap when it renders, relative to the source art
67 #define MY_IM_LARGE 0x0400u
68 #define MY_IM_LARGE_SHF 10u
69 
70 // terrain will special case terrain damage if this bit is set
71 #define SPCL_TERR_DMG 0x0800u
72 #define SPCL_TERR_DMG_SHT 11u
73 
74 // Class-specific flags go here.
75 #define CLASS_FLAGS 0x7000u
76 #define CLASS_FLAGS_SHF 12u
77 
78 // If this bit is set, that class of object is considered "useless", and unless
79 // it is specially preserved via USEFUL_FLAG (instance flag) it can be destroyed
80 // to make room for others.
81 #define USELESS_FLAG 0x8000u
82 #define USELESS_FLAG_SHF 15u
83 
84 // INSTANCE DATA FLAGS
85 #define HUDOBJ_INST_FLAG  0x01 // This is defined redundantly in hudobj.h
86 #define RENDER_BLOCK_FLAG 0x02 // whether we are blocking the renderer
87 #define UNLIT_FLAG        0x04 // Don't light up my life
88 #define INDESTRUCT_FLAG   0x08 // We can't be stopped, but we must be stopped
89 #define USEFUL_FLAG       0x10 // Don't punt us to make room for others
90 #define OLH_INST_FLAG     0x20 // have we interacted with this yet?
91 #define CLASS_INST_FLAG2  0x40 // Class-specific stuff
92 #define CLASS_INST_FLAG   0x80 // Class-specific stuff
93 
94 // Notes on class specific instance data (flags)
95 // Fixtures: used for whether to zoom to mfd on use
96 // Critters: CLASS_INST_FLAG used to denote "loner"
97 //           CLASS_INST_FLAG2 used to denote that the critter wants to get closer.
98 // Containers: CLASS_INST_FLAG used to indicate that the container is "freshly" dead
99 //                and needs to have loot placed on it when searched.
100 // Smallstuffs: corpses use their CLASS_INST_FLAG like Containers.
101 // Doors: Both CLASS_INST_FLAGs are used as secret identifier codes to make sure that
102 //    we get the right autoclose events.
103 
104 // Notes on class specific property flagss
105 // Bigstuff & Smallstuff: CLASS_FLAG 0x1000 used to denote data1 is 1-2 ObjIDs
106 //		to be "used" ala a splitter trap
107 #define STUFF_OBJUSE_FLAG 0x1
108 
109 // Critters:
110 // CLASS_FLAG 0x1000 used to indicate that creature is incapable of movement.
111 // CLASS_FLAG 0x2000 used to indicate that creature is unable to open doors.
112 #define CRITTER_NOMOVE_OBJPROP_FLAG 0x1
113 #define CRITTER_NODOOR_OBJPROP_FLAG 0x2
114 
115 #endif // __OBJBIT_H
116