示例#1
0
        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);
                        }
                    }
                }
            }
        }
示例#2
0
        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));
        }
示例#3
0
        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);
            }
        }
示例#4
0
        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);
                    }
                }
            }
        }