/// <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); } }
/// <summary> /// 블럭을 초기화 하는 함수 /// 모든 블럭은 생성자의 끝에 이 함수를 호출해야 한다. /// 이 함수에서 블럭의 모든 구멍에 이벤트를 추가하여 구멍에 블럭이 끼워지고 제거되는 것을 감지한다. /// </summary> protected void InitializeBlock() { AllHoleList.AddRange(HoleList); foreach (BaseHole hole in HoleList) { hole.ParentBlock = this; hole.BlockAttached += OnBlockAttached; hole.BlockDetached += OnBlockDetached; } }