예제 #1
0
        /// <summary>
        /// 블럭이 끼워질 때의 이벤트
        /// 끼워진 블럭이 가지는 구멍들을 이 블럭이 가진 구멍 목록에 추가
        /// </summary>
        /// <param name="hole">블럭이 끼워진 구멍</param>
        /// <param name="block">구멍에 끼운 블럭</param>
        private void OnBlockAttached(BaseHole hole, BaseBlock block)
        {
            if (block != null)
            {
                AllHoleList.AddRange(block.HoleList);
                block.AllowVariableList.AddRange(AllowVariableList);

                ParentHole?.ParentBlock?.OnBlockAttached(hole, block);
            }
        }
예제 #2
0
        /// <summary>
        /// 블럭을 초기화 하는 함수
        /// 모든 블럭은 생성자의 끝에 이 함수를 호출해야 한다.
        /// 이 함수에서 블럭의 모든 구멍에 이벤트를 추가하여 구멍에 블럭이 끼워지고 제거되는 것을 감지한다.
        /// </summary>
        protected void InitializeBlock()
        {
            AllHoleList.AddRange(HoleList);

            foreach (BaseHole hole in HoleList)
            {
                hole.ParentBlock    = this;
                hole.BlockAttached += OnBlockAttached;
                hole.BlockDetached += OnBlockDetached;
            }
        }
예제 #3
0
        /// <summary>
        /// 블럭이 떨어질 때의 이벤트
        /// 떨어진 블럭이 가지는 구멍들은 이 블럭이 가진 구멍 목록에서 제거
        /// </summary>
        /// <param name="hole">블럭이 떨어져 나온 구멍</param>
        /// <param name="block">구멍에서 떨어진 블럭</param>
        private void OnBlockDetached(BaseHole hole, BaseBlock block)
        {
            if (block != null)
            {
                foreach (var holeItem in block.HoleList)
                {
                    AllHoleList.Remove(holeItem);
                }

                foreach (var allowVariable in AllowVariableList)
                {
                    block.AllowVariableList.Remove(allowVariable);
                }

                ParentHole?.ParentBlock?.OnBlockDetached(hole, block);
            }
        }