private void RegisterUnitToOrdob_Aux(Unit u) { var tve = AddTreeViewElement(u); var binder = new MultiEventObserver(); BindSelectionEvent(binder, (sender, args) => { //Debug.Log("Triggered by direct selection status change."); if (sender is Unit) { tve.ActualOnPointerDown(null); } }, u); tve.BindPressEvent(binder, (sender, args) => { //Debug.Log("Triggered by direct button status change (click)"); if (args is SimpleEventArgs) { if ((bool)(args as SimpleEventArgs).args[0]) { SelectionHandler.GetUsedSelector().SelectEntity(u); } else { SelectionHandler.GetUsedSelector().DeselectEntity(u); } } }); trackedUnitsTVEs.Add(tve); }
public void BindPressEvent(MultiEventObserver binder, Action <object, EventArgs> action) { var id = binder.AddNewEventAndSubscribeMethodToIt(action); onPressedInBind.SubscribeEventHandlerMethod("bindpress", _ => binder.InvokeEvent(id, this, new SimpleEventArgs(_))); onUnbind += () => UnbindPressEvent(binder, id); }
private void UnbindSelectionEvent(MultiEventObserver binder, Unit u) { if (trackedUnitsBinders.ContainsKey(u)) { u.GetOnSelectionStateChangeObserver().UnsubscribeEventHandlerMethod("doactiontreeview"); trackedUnitsBinders.Remove(u); } }
private void BindTaskSelectionEvent(MultiEventObserver binder, Action <object, EventArgs> action) { var id = binder.AddNewEventAndSubscribeMethodToIt(action); GetOnSelectionStateChangeObserver().SubscribeEventHandlerMethod("whateverkey", _ => { if (_.Item3 == 0) { binder.InvokeEvent(id, this, new SimpleEventArgs(_.Item2)); } }, true); }
public void InitBinderForTask(GameObject associatedTaskEditMenu) { var binder = new MultiEventObserver(); BindTaskSelectionEvent(binder, (sender, args) => { //Debug.Log("Triggered by direct selection status change."); if (args is SimpleEventArgs) { associatedTaskEditMenu.SetActiveRecursivelyExt(((bool)(args as SimpleEventArgs).args[0])); } }); }
private void BindSelectionEvent(MultiEventObserver binder, Action <object, EventArgs> action, Unit u) { if (!trackedUnitsBinders.ContainsKey(u)) { var id = binder.AddNewEventAndSubscribeMethodToIt(action); u.GetOnSelectionStateChangeObserver().SubscribeEventHandlerMethod("doactiontreeview", _ => { if (_.Item3 == 0) { binder.InvokeEvent(id, u, null); } }); trackedUnitsBinders.Add(u, binder); } }
private void UnbindPressEvent(MultiEventObserver binder, int sourceId) { onPressedInBind.UnsubscribeEventHandlerMethod("bindpress"); }