コード例 #1
0
ファイル: PrioritySystem.cs プロジェクト: steffan88/Bevelle
        public static void AddPriorityBox(string name, GlobalJobType type)
        {
            PriorityBox p = new PriorityBox(name, type, OnPriorityChanged);
            TakePriority(0, p, true);
            _priorityBoxes.Add(p);
            _priorityBoxesDic.Add(name, p);

            GuiSystem.AddGuiComponent(p);
        }
コード例 #2
0
ファイル: JobAssigner.cs プロジェクト: steffan88/Bevelle
        public static bool AssignDwarfToBuilding(GlobalJobType type, Dwarf d, List<Building> failedBuildings)
        {
            Building buildingToWorkAt = GetAvailableBuilding(type, d, failedBuildings);

            if (buildingToWorkAt == null)
            {
                UnassignDwarfFromBuilding(d);
                //d.AssignedGlobalTaskType = GlobalJobType.None;
                return false;
            }
            // Assign to dwarf, but first unassign previus building (if any)
            UnassignDwarfFromBuilding(d);
            d.AssignedWorkBuilding = buildingToWorkAt;
            d.AssignedGlobalTaskType = type;
            buildingToWorkAt.DwarfsWorkingOnBuilding.Add(d);
            return true;
        }
コード例 #3
0
ファイル: PriorityBox.cs プロジェクト: steffan88/Bevelle
        public PriorityBox(string name, GlobalJobType type, Func<NumberChooser, int, bool> validator)
        {
            Type = type;
            Name = name;
            _windowTexture = GameLoop.GlobalContent.Load<Texture2D>("priorityBox");
            _font = GameLoop.GlobalContent.Load<BitmapFont>("Fonts/pressStart2P");
            Priority = 1000000;

            int max = 0;

            if (name == "Mining" || name == "Hauling")
                max = 9999;

            _numberChooser = new NumberChooser(new Vector2(230, 10), max, 0, validator);

            AddGuiComponent(_numberChooser);
        }
コード例 #4
0
ファイル: TaskManager.cs プロジェクト: steffan88/Bevelle
 //private static TaskType BestTaskTypeForDwarf(Dwarf dwarf)
 //{
 //    // TODO: Add logic
 //    if (_tasks.ContainsKey(TaskType.CollectingToDepot) &&
 //        NumberOfOpenTasks(TaskType.CollectingToDepot) > 0)
 //        return TaskType.CollectingToDepot;
 //    else if (_tasks.ContainsKey(TaskType.Mining) &&
 //        NumberOfOpenTasks(TaskType.Mining) > 0)
 //        return TaskType.Mining;
 //    else if (_tasks.ContainsKey(TaskType.MoveCraftedResource) && NumberOfOpenTasks(TaskType.MoveCraftedResource) > 0)
 //        return TaskType.MoveCraftedResource;
 //    // TODO: Disse to er afhængig af rækkefølgen.. :(
 //    else if (_tasks.ContainsKey(TaskType.GetBuildingMaterial) && NumberOfOpenTasks(TaskType.GetBuildingMaterial) > 0)
 //        return TaskType.GetBuildingMaterial;
 //    else if (_tasks.ContainsKey(TaskType.BuildBuilding) && NumberOfOpenTasks(TaskType.BuildBuilding) > 0)
 //        return TaskType.BuildBuilding;
 //    else if (_tasks.ContainsKey(TaskType.PlaceWorldObject) && NumberOfOpenTasks(TaskType.PlaceWorldObject) > 0)
 //        return TaskType.PlaceWorldObject;
 //    else if (_tasks.ContainsKey(TaskType.CraftingOfResource) && NumberOfOpenTasks(TaskType.CraftingOfResource) > 0)
 //        return TaskType.CraftingOfResource;
 //    else if (_tasks.ContainsKey(TaskType.PlantCrop) && NumberOfOpenTasks(TaskType.PlantCrop) > 0)
 //        return TaskType.PlantCrop;
 //    else if (_tasks.ContainsKey(TaskType.HarvestCrop) && NumberOfOpenTasks(TaskType.HarvestCrop) > 0)
 //        return TaskType.HarvestCrop;
 //    else if (_tasks.ContainsKey(TaskType.CraftingOfAmmo) && NumberOfOpenTasks(TaskType.CraftingOfAmmo) > 0)
 //        return TaskType.CraftingOfAmmo;
 //    else if (_tasks.ContainsKey(TaskType.BikeGeneration) && NumberOfOpenTasks(TaskType.BikeGeneration) > 0)
 //        return TaskType.BikeGeneration;
 //    else if (_tasks.ContainsKey(TaskType.GetCoalForPowerGenerator) && NumberOfOpenTasks(TaskType.GetCoalForPowerGenerator) > 0)
 //        return TaskType.GetCoalForPowerGenerator;
 //    else if (_tasks.ContainsKey(TaskType.WorkAtPasture) && NumberOfOpenTasks(TaskType.WorkAtPasture) > 0)
 //        return TaskType.WorkAtPasture;
 //    else if (_tasks.ContainsKey(TaskType.CollectFoodFromPasture) && NumberOfOpenTasks(TaskType.CollectFoodFromPasture) > 0)
 //        return TaskType.CollectFoodFromPasture;
 //    else
 //        throw new Exception("No tasks available");
 //}
 private static List<Task> GetTasksByJob(GlobalJobType job)
 {
     if (_tasksJobType.ContainsKey(job) == false)
         _tasksJobType.Add(job, new List<Task>());
     return _tasksJobType[job];
 }
コード例 #5
0
ファイル: TaskManager.cs プロジェクト: steffan88/Bevelle
 private static Task GetTaskFromGlobalJobType(GlobalJobType type)
 {
     if (_tasksJobType.ContainsKey(type) && _tasksJobType[type].Count > 0)
     {
         return _tasksJobType[type][0];
     }
     else
         return null;
 }
コード例 #6
0
ファイル: JobAssigner.cs プロジェクト: steffan88/Bevelle
        private static Building GetAvailableBuilding(GlobalJobType type, Dwarf d, List<Building> failedBuilding)
        {
            //if (d.AssignedWorkBuilding != null)
            //{

            //}

            foreach (Building b in _availableJobBuildings[type])
            {
                if (
                    (
                    b.DwarfsWorkingOnBuilding.Count < b.MaxNumberOfWorkingDwarfs ||
                    (d.AssignedWorkBuilding != null && d.AssignedWorkBuilding != b) // Used to construction tasks to skip buildings that have no more avaiable tasks.. long story
                    ) &&
                    failedBuilding.Contains(b) == false
                    )
                {
                    return b;
                }
            }

            return null;

            throw new Exception("No buildings available");
        }
コード例 #7
0
ファイル: JobAssigner.cs プロジェクト: steffan88/Bevelle
 private static void AssignDwarfsToBuilding(List<Dwarf> taken, GlobalJobType type)
 {
     foreach (Dwarf d in taken)
     {
         AssignDwarfToBuilding(type, d, new List<Building>());
     }
 }
コード例 #8
0
ファイル: JobAssigner.cs プロジェクト: steffan88/Bevelle
        public static void UnRegisterJobBuilding(GlobalJobType type, Building building)
        {
            _availableJobBuildings[type].Remove(building);

            if (type == GlobalJobType.Construction)
            {
                PrioritySystem.AddLimit("Construction", -building.MaxNumberOfWorkingDwarfs);
            }
            else if (type == GlobalJobType.Sawmill)
            {
                PrioritySystem.AddLimit("Sawmill", -building.MaxNumberOfWorkingDwarfs);
            }
            else if (type == GlobalJobType.Farming)
            {
                PrioritySystem.AddLimit("Farming", -building.MaxNumberOfWorkingDwarfs);
            }
            else
                throw new Exception("Unknown type");
        }
コード例 #9
0
ファイル: JobAssigner.cs プロジェクト: steffan88/Bevelle
        public static void RegisterJobBuilding(GlobalJobType type, Building building)
        {
            if (_availableJobBuildings.ContainsKey(type) == false)
            {
                _availableJobBuildings[type] = new List<Buildings.Building>();
            }

            _availableJobBuildings[type].Add(building);

            if (type == GlobalJobType.Construction)
            {
                PrioritySystem.AddLimit("Construction", building.MaxNumberOfWorkingDwarfs);
            }
            else if (type == GlobalJobType.Sawmill)
            {
                PrioritySystem.AddLimit("Sawmill", building.MaxNumberOfWorkingDwarfs);
            }
            else if (type == GlobalJobType.Farming)
            {
                PrioritySystem.AddLimit("Farming", building.MaxNumberOfWorkingDwarfs);
            }
            else if (type == GlobalJobType.ToolMaking)
                PrioritySystem.AddLimit("Tool Making", building.MaxNumberOfWorkingDwarfs);
            else if (type == GlobalJobType.Smelting)
                PrioritySystem.AddLimit("Smelting", building.MaxNumberOfWorkingDwarfs);
            else if (type == GlobalJobType.Brewing)
                PrioritySystem.AddLimit("Brewing", building.MaxNumberOfWorkingDwarfs);
            else if (type == GlobalJobType.Weaving)
                PrioritySystem.AddLimit("Weaving", building.MaxNumberOfWorkingDwarfs);
            else if (type == GlobalJobType.Cooking)
                PrioritySystem.AddLimit("Cooking", building.MaxNumberOfWorkingDwarfs);
            else if (type == GlobalJobType.Pasturing)
                PrioritySystem.AddLimit("Pasturing", building.MaxNumberOfWorkingDwarfs);
            else if (type == GlobalJobType.Mason)
                PrioritySystem.AddLimit("Mason", building.MaxNumberOfWorkingDwarfs);
            else if (type == GlobalJobType.Arrowsmith)
                PrioritySystem.AddLimit("Arrow Production", building.MaxNumberOfWorkingDwarfs);
            else
                throw new Exception("Unknown type");
        }