| 1004 | } |
| 1005 | |
| 1006 | void EBNode_RemoveNodesAtUnopenablePortals(int roomnum) { |
| 1007 | int i; |
| 1008 | |
| 1009 | ASSERT(Rooms[roomnum].num_portals + 1 == Rooms[roomnum].bn_info.num_nodes); |
| 1010 | |
| 1011 | for (i = Rooms[roomnum].num_portals - 1; i >= 0; i--) { |
| 1012 | if ((Rooms[roomnum].portals[i].flags & PF_BLOCK) && !(Rooms[roomnum].portals[i].flags & PF_BLOCK_REMOVABLE)) { |
| 1013 | EBNode_RemoveNode(roomnum, i); |
| 1014 | continue; |
| 1015 | } |
| 1016 | |
| 1017 | if ((Rooms[roomnum].portals[i].flags & PF_RENDER_FACES) && |
| 1018 | !(Rooms[roomnum].portals[i].flags & PF_RENDERED_FLYTHROUGH)) { |
| 1019 | if (!(GameTextures[Rooms[roomnum].faces[Rooms[roomnum].portals[i].portal_face].tmap].flags & |
| 1020 | (TF_BREAKABLE | TF_FORCEFIELD))) { |
| 1021 | EBNode_RemoveNode(roomnum, i); |
| 1022 | continue; |
| 1023 | } |
| 1024 | } |
| 1025 | |
| 1026 | if (Rooms[roomnum].portals[i].flags & PF_TOO_SMALL_FOR_ROBOT) { |
| 1027 | EBNode_RemoveNode(roomnum, i); |
| 1028 | continue; |
| 1029 | } |
| 1030 | } |
| 1031 | } |
| 1032 | |
| 1033 | // void EBNode_VerifyGraph() |
| 1034 | //{ |
no test coverage detected