Beispiel #1
0
        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);
            }
        }