public override void OnBodiesSelected(List <Body> bodies, InputManager.MouseButton button) { if (Mode == FarmMode.Harvesting) { List <Body> treesPickedByMouse = ComponentManager.FilterComponentsWithTag("Vegetation", bodies); foreach (Body tree in treesPickedByMouse) { if (!tree.IsVisible || tree.IsAboveCullPlane) { continue; } Drawer3D.DrawBox(tree.BoundingBox, Color.LightGreen, 0.1f, false); if (button == InputManager.MouseButton.Left) { if (!Player.Faction.ChopDesignations.Contains(tree)) { Player.Faction.ChopDesignations.Add(tree); } } else if (button == InputManager.MouseButton.Right) { if (Player.Faction.ChopDesignations.Contains(tree)) { Player.Faction.ChopDesignations.Remove(tree); } } } } }
public override void OnBodiesSelected(List <Body> bodies, InputManager.MouseButton button) { List <Body> resourcesPickedByMouse = ComponentManager.FilterComponentsWithTag("Resource", bodies); List <Task> assignments = new List <Task>(); foreach (Body resource in resourcesPickedByMouse.Where(resource => resource.IsActive && resource.IsVisible && resource.Parent == PlayState.ComponentManager.RootComponent)) { if (!resource.IsVisible || resource.IsAboveCullPlane) { continue; } Drawer3D.DrawBox(resource.BoundingBox, Color.LightGoldenrodYellow, 0.05f, true); if (button == InputManager.MouseButton.Left) { Player.Faction.AddGatherDesignation(resource); assignments.Add(new GatherItemTask(resource)); } else { if (!Player.Faction.GatherDesignations.Contains(resource)) { continue; } Player.Faction.GatherDesignations.Remove(resource); } } TaskManager.AssignTasks(assignments, Faction.FilterMinionsWithCapability(PlayState.Master.SelectedMinions, GameMaster.ToolMode.Gather)); }
public override void OnBodiesSelected(List <Body> bodies, InputManager.MouseButton button) { List <Body> treesPickedByMouse = ComponentManager.FilterComponentsWithTag("Vegetation", bodies); List <CreatureAI> minions = Faction.FilterMinionsWithCapability(Player.Faction.SelectedMinions, GameMaster.ToolMode.Chop); List <Task> tasks = new List <Task>(); foreach (Body tree in treesPickedByMouse) { if (!tree.IsVisible || tree.IsAboveCullPlane) { continue; } Drawer3D.DrawBox(tree.BoundingBox, Color.LightGreen, 0.1f, false); if (button == InputManager.MouseButton.Left) { if (!Player.Faction.ChopDesignations.Contains(tree)) { Player.Faction.ChopDesignations.Add(tree); tasks.Add(new KillEntityTask(tree, KillEntityTask.KillType.Chop) { Priority = Task.PriorityType.Low }); } } else if (button == InputManager.MouseButton.Right) { if (Player.Faction.ChopDesignations.Contains(tree)) { Player.Faction.ChopDesignations.Remove(tree); } } } if (tasks.Count > 0 && minions.Count > 0) { TaskManager.AssignTasks(tasks, minions); OnConfirm(minions); } }
public override void OnBodiesSelected(List <Body> bodies, InputManager.MouseButton button) { List <Body> treesPickedByMouse = ComponentManager.FilterComponentsWithTag("Vegetation", bodies); foreach (Body tree in treesPickedByMouse) { if (!tree.IsVisible || tree.IsAboveCullPlane) { continue; } Drawer3D.DrawBox(tree.BoundingBox, Color.LightGreen, 0.1f, false); if (button == InputManager.MouseButton.Left) { if (!Player.Faction.ChopDesignations.Contains(tree)) { Player.Faction.ChopDesignations.Add(tree); foreach (CreatureAI creature in Player.Faction.SelectedMinions) { creature.Tasks.Add(new KillEntityTask(tree, KillEntityTask.KillType.Chop) { Priority = Task.PriorityType.Low }); } } } else if (button == InputManager.MouseButton.Right) { if (Player.Faction.ChopDesignations.Contains(tree)) { Player.Faction.ChopDesignations.Remove(tree); } } } }