public void UnregisterOwnedPlan(TaskPlan2 taskPlan) { GetThisGroupPlans().Remove(taskPlan); if (!destroying && GetSubGroupsPlans(true, true).Count == 0) { DestroyThis(); } }
public TaskPlan2 CreateAndRegisterNewOwnedPlan() { _instcount2++; TaskPlan2 res = null; res = new TaskPlan2(this); GetThisGroupPlans().Add(res); //removePlanKeyDict.Add(res, new StringBuilder("removeplan").Append(_instcount2).ToString()); //SubscribeOnDestruction(removePlanKeyDict[res], () => EndAndUnregisterOwnedPlan(res)); return(res); }
private void UITaskMarkerCreationAndTaskBuilding<T>(List<ISelectable> selected) where T : TaskMarker { if (selected.Count > 0) { //if (_taskSubject == null) // _taskSubject = PrepareAndGetSubjectFromSelected(selected); T taskMarker = TaskMarker.CreateInstanceAtScreenPosition<T>(UIHandler.GetPointedScreenPosition()); taskMarker.InitBinderForTask(associatedTaskEditMenu); taskMarker.EnterPlacementUIMode(); taskMarker.OnExitPlacementUIMode.SubscribeEventHandlerMethod("spawnerbuttondeactivate",// += SpawnerButtonDeactivate; () => { on = false; taskMarker.OnExitPlacementUIMode.UnsubscribeEventHandlerMethod("spawnerbuttondeactivate"); }); taskMarker.OnPlacementConfirmation.SubscribeEventHandlerMethod("onplacementconfirmationcallback", (b) => { if (b) { if (_actorGroup == null) _actorGroup = UnitGroup.PrepareAndCreateGroupFromSelected(selected); TaskPlan2 taskPlan = taskMarker.InsertAssociatedTaskIntoPlan(_actorGroup, _lastPlacedTaskMarkerWrapper?.Value); if (!taskPlan.IsPlanBeingExecuted()) taskPlan.StartPlanExecution(); if (Input.GetKey(KeyCode.LeftShift)) { /*if (_lastPlacedTaskMarkerWrapper == null) { var tm = ITaskSubject.GetPlans().FirstOrDefault()?.GetCurrentTaskInPlan()?.GetTaskMarker(); if (tm != null) _lastPlacedTaskMarkerWrapper = new MapMarkerWrapper<TaskMarker>(tm); } else { _lastPlacedTaskMarkerWrapper = new MapMarkerWrapper<TaskMarker>(taskMarker); }*/ _lastPlacedTaskMarkerWrapper = new MapMarkerWrapper<TaskMarker>(taskMarker); OnButtonActivationOrNot(true); } else { _actorGroup = null; _lastPlacedTaskMarkerWrapper = null; } } else { _actorGroup = null; _lastPlacedTaskMarkerWrapper = null; taskMarker.OnPlacementConfirmation.UnsubscribeEventHandlerMethod("onplacementconfirmationcallback"); //editedTaskPlan = null; } }); SelectionHandler.GetUsedSelector().SelectEntity(taskMarker); } }