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