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); } } } }
public DesignationProxyTask(GuardZoneTask ParentTask, VoxelHandle Voxel) { this.ParentTask = ParentTask; this.Voxel = Voxel; }