public override void ReturnToDefaultStateWithCheck(ClickCommandObject commandObject) { if (commandObject != this) { ReturnToDefault?.Invoke(); } }
public override void ReturnToDefaultStateWithCheck(ClickCommandObject commandObject) { if (this != commandObject) { ReturnToDefaultState(); } }
/// <summary> /// Подписать передаваемый объект на события EmptyClick, которое вызывается, когда пользователь кликнул /// мимо танцевальной площадки /// </summary> /// <param name="commandObject">Объект, который будет подписан на событие (если ещё не подписан). У этого объекта будет /// вызываться метод ReturnToDefaultState</param> public void SubscribingToAnEvent(ClickCommandObject commandObject) { if (!interactiveObjectsOnField.Contains(commandObject)) { interactiveObjectsOnField.Add(commandObject); EmptyClickEvent += commandObject.ReturnToDefaultState; } }
/// <summary> /// Подписать передаваемый объект на события EmptyClick, которое вызывается, когда пользователь кликнул /// мимо танцевальной площадки /// </summary> /// <param name="commandObject">Объект, который будет подписан на событие (если ещё не подписан). У этого объекта будет /// вызываться метод ReturnToDefaultState</param> public void SubscribingToAnEvent(ClickCommandObject commandObject) { if (!interactiveObjectsOnScene.Contains(commandObject)) { interactiveObjectsOnScene.Add(commandObject); EmptyClickEvent += commandObject.ReturnToDefaultState; EmptyClickEventExcludeObject += commandObject.ReturnToDefaultStateWithCheck; } }
/// <summary> /// Отписать передаваемый объект от события EmptyClick, которое вызывается, когда пользователь кликнул /// мимо танцевальной площадки /// </summary> /// <param name="commandObject">Объект, который будет отписан от событие (если был подписан, иначе будет будет выдан Exception).</param> public void UnsubscribingToAnEvent(ClickCommandObject commandObject) { if (interactiveObjectsOnScene.Contains(commandObject)) { interactiveObjectsOnScene.Remove(commandObject); EmptyClickEvent -= commandObject.ReturnToDefaultState; EmptyClickEventExcludeObject -= commandObject.ReturnToDefaultStateWithCheck; } else { throw new Exception(string.Format("Невозможно провести отписку! Объект {0} не найден " + "в коллекции подписчиков на событие EmptyClick.", commandObject.name)); } }
/// <summary> /// Отписать передаваемый объект от события EmptyClick, которое вызывается, когда пользователь кликнул /// мимо танцевальной площадки /// </summary> /// <param name="commandObject">Объект, который будет отписан от событие (если был подписан, иначе будет будет выдан Exception).</param> public void UnsubscribingToAnEvent(ClickCommandObject commandObject) { if (interactiveObjectsOnField.Contains(commandObject)) { interactiveObjectsOnField.Remove(commandObject); EmptyClickEvent -= commandObject.ReturnToDefaultState; if (commandObject is ActorCommandButton actorCommandButton) { actorCommandButton.ObjectDeleted -= UnsubscribingToAnEvent; } } else { throw new Exception(string.Format("Невозможно провести отписку! Объект {0} не найден " + "в коллекции подписчиков на событие EmptyClick.", commandObject.name)); } }
/// <summary> /// Возврат объекта к состоянию, когда на него ещё не кликнули, если это не тот объект, который передан в параметре /// </summary> /// <param name="menuController">Объект, который не будет возвращён к изначальному состоянию</param> public abstract void ReturnToDefaultStateWithCheck(ClickCommandObject commandObject);
/// <summary> /// Перевести в изначальное состояние все объекты кроме указанного /// </summary> /// <param name="commandObject">исключаемый объект</param> public void AllToDefaultExcludeThis(ClickCommandObject commandObject) { EmptyClickEventExcludeObject?.Invoke(commandObject); }