Exemplo n.º 1
0
        static public void PreToRoomOrWall(ref AreaMap new_map, Point m_sqr, int room_ID)
        {
            new_map.MSGrid[m_sqr.Y][m_sqr.X].MSStates[(int)MSFlagIndex.BL_ST] = MSFlag.NT_BL;

            if (new_map.ChkAdjacentForRoomID(ref new_map, ref m_sqr, room_ID, Globals.NESWItr, 4))
            {
                new_map.RoomList[roomCounter].RoomSquares.Add(new Point(m_sqr.X, m_sqr.Y));
                new_map.MSGrid[m_sqr.Y][m_sqr.X].MSStates[(int)MSFlagIndex.WALL_RM_ENT] = MSFlag.ROOM;
                new_map.MSGrid[m_sqr.Y][m_sqr.X].MSStates[(int)MSFlagIndex.PASSABLE]    = MSFlag.NT_BLKD;
            }
            else
            {
                new_map.RoomList[roomCounter].WallSquares.Add(new Point(m_sqr.X, m_sqr.Y));
                new_map.MSGrid[m_sqr.Y][m_sqr.X].MSStates[(int)MSFlagIndex.WALL_RM_ENT] = MSFlag.WALL;
                new_map.MSGrid[m_sqr.Y][m_sqr.X].MSStates[(int)MSFlagIndex.PASSABLE]    = MSFlag.BLKD;
            }
        }
Exemplo n.º 2
0
        static public bool CheckForGoodPathEnds(ref AreaMap new_map, int room_index, int sqr_index, ref Point sqr_point)
        {
            if (!new_map.ChkAdjacentForRoomID(ref new_map, ref sqr_point, room_index, Globals.AllDirItr, 4)) // is corner?
            {
                return(false);
            }
            else if (new_map.ChkMSForState(ref new_map.MSGrid[sqr_point.Y][sqr_point.X], MSFlag.ENT, MSFlagIndex.WALL_RM_ENT)) // is entrance?
            {
                return(false);
            }
            else if (!new_map.ChkAdjacentForMState(ref new_map, ref sqr_point, MSFlag.BL, MSFlagIndex.BL_ST, Globals.NESWItr, 1)) // is blocked off?
            {
                return(false);
            }

            return(true);
        }