Ejemplo n.º 1
0
    /// <summary>
    /// 更新甲板数据
    /// </summary>
    public static void UpdateDeckRoomGrid()
    {
        List <RoomGrid> deckList = new List <RoomGrid>();

        foreach (RoomGrid m in m_PutRoom)
        {
            RoomGrid Deck = FindNeighbourRoomGrid(m, DIR.UP);
            if (Deck != null && m_PutRoom.Contains(Deck) == false)
            {
                Deck.SetDeckRoomValue(m.upMap);
                deckList.Add(Deck);
            }
        }

        /*
         * List<RoomGrid> deckList = new List<RoomGrid>();
         * //List<RoomGrid> l =  GetTopmostLayerPutRoom();
         * foreach(RoomGrid R in l)
         * {
         *      RoomGrid Deck =FindNeighbourRoomGrid(R,DIR.UP);
         *      if(Deck != null)
         *      {
         *              Deck.SetDeckRoomValue(R.upMap);
         *              deckList.Add(Deck);
         *      }
         * }
         */
        //获取新增的甲板
        for (int i = 0; i < m_DeckRoom.Count;)
        {
            RoomGrid R = m_DeckRoom[i];
            if (deckList.Contains(R) == true || m_PutRoom.Contains(R) == true)
            {
                m_DeckRoom.Remove(R);
            }
            else
            {
                /*Int2 nMapDownGrid = new Int2(R.mPosRoomGrid.Unit,R.mPosRoomGrid.Layer-1);
                 * RoomGrid rDown = RoomMap.FindRoomGrid(nMapDownGrid,XYSYS.MapGrid);
                 * if(rDown!=null&& m_PutRoom.Contains(rDown) == true)
                 * {
                 *      m_DeckRoom.Remove(R);
                 *      deckList.Add(R);
                 * }
                 * else*/
                i++;
            }
        }

        //
        //清空新增的甲板数据
        foreach (RoomGrid R in m_DeckRoom)
        {
            if (m_PutDeckRoom.Contains(R) == false)
            {
                R.SetDeckRoomValue(0);
            }
        }

        m_DeckRoom.Clear();
        m_DeckRoom.AddRange(deckList);
    }