MCPcopy Create free account
hub / github.com/DescentDevelopers/Descent3 / InitLevel

Method InitLevel

Descent3/levelgoal.cpp:1146–1218  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1144}
1145
1146void levelgoals::InitLevel() {
1147 int i, j;
1148
1149 for (i = 0; i <= Highest_object_index; i++) {
1150 if (Objects[i].type != OBJ_NONE) {
1151 Objects[i].flags &=
1152 (~(OF_INFORM_PLAYER_COLLIDE_TO_LG | OF_INFORM_PLAYER_WEAPON_COLLIDE_TO_LG | OF_INFORM_DESTROY_TO_LG));
1153 }
1154 }
1155
1156 for (i = 0; i <= Highest_room_index; i++) {
1157 if (Rooms[i].used) {
1158 Rooms[i].flags &= (~(RF_INFORM_RELINK_TO_LG));
1159 }
1160 }
1161
1162 for (i = 0; i < Num_triggers; i++) {
1163 Triggers[i].flags &= (~(TF_INFORM_ACTIVATE_TO_LG));
1164 }
1165
1166 for (i = 0; i < m_num_goals; i++) {
1167 int flags;
1168 m_goal[i].GetStatus(i, LO_GET_SPECIFIED, &flags);
1169 flags &= LGF_COMP_MASK;
1170
1171 for (j = 0; j < m_goal[i].GetNumItems(); j++) {
1172 char type;
1173 int handle;
1174 bool done;
1175
1176 m_goal[i].ItemInfo(j, LO_GET_SPECIFIED, &type, &handle, &done);
1177
1178 switch (type) {
1179 case LIT_TERRAIN_CELL:
1180 break;
1181 case LIT_INTERNAL_ROOM:
1182 if (flags == LGF_COMP_ENTER) {
1183 if (handle >= 0 && handle <= Highest_room_index && Rooms[handle].used) {
1184 Rooms[handle].flags |= RF_INFORM_RELINK_TO_LG;
1185 }
1186 }
1187 break;
1188 case LIT_OBJECT:
1189 if (flags == LGF_COMP_PLAYER) {
1190 object *obj = ObjGet(handle);
1191 if (obj) {
1192 obj->flags |= OF_INFORM_PLAYER_COLLIDE_TO_LG;
1193 }
1194 } else if (flags == LGF_COMP_PLAYER_WEAPON) {
1195 object *obj = ObjGet(handle);
1196 if (obj) {
1197 obj->flags |= OF_INFORM_PLAYER_WEAPON_COLLIDE_TO_LG;
1198 }
1199 } else if (flags == LGF_COMP_DESTROY) {
1200 object *obj = ObjGet(handle);
1201 if (obj) {
1202 obj->flags |= OF_INFORM_DESTROY_TO_LG;
1203 }

Callers 1

StartLevelFunction · 0.80

Calls 4

ObjGetFunction · 0.85
ItemInfoMethod · 0.80
GetStatusMethod · 0.45
GetNumItemsMethod · 0.45

Tested by

no test coverage detected