Ejemplo n.º 1
0
        public override void OnVoxelsSelected(List <VoxelHandle> voxels, InputManager.MouseButton button)
        {
            var parentTask = Player.TaskManager.EnumerateTasks().OfType <GuardZoneTask>().FirstOrDefault();

            if (parentTask == null)
            {
                parentTask = new GuardZoneTask();
                Player.TaskManager.AddTask(parentTask);
            }

            if (button == InputManager.MouseButton.Left)
            {
                foreach (var v in voxels.Where(v => v.IsValid && !v.IsEmpty))
                {
                    var key = VoxelHelpers.GetVoxelQuickCompare(v);
                    if (Player.Faction.GuardedVoxels.ContainsKey(key))
                    {
                        return;
                    }

                    Player.Faction.Designations.AddVoxelDesignation(v, DesignationType.Guard, null, new GuardZoneTask.DesignationProxyTask(parentTask, v));
                    Player.Faction.GuardedVoxels.Add(key, v);
                }

                OnConfirm(Faction.FilterMinionsWithCapability(Player.World.Master.SelectedMinions, Task.TaskCategory.Gather));
            }
            else
            {
                foreach (var v in voxels.Where(v => v.IsValid && !v.IsEmpty))
                {
                    var des = Player.Faction.Designations.GetVoxelDesignation(v, DesignationType.Guard);
                    if (des != null)
                    {
                        Player.TaskManager.CancelTask(des.Task);
                    }
                }
            }
        }
Ejemplo n.º 2
0
 public DesignationProxyTask(GuardZoneTask ParentTask, VoxelHandle Voxel)
 {
     this.ParentTask = ParentTask;
     this.Voxel      = Voxel;
 }