//public bool Handling => enabled; // Check whether affordable BEFORE call public void StartHandle(BuildingDescription target) { enabled = true; TargetBuilding = target; hitPoint.Set(-1, -1); followMouseHolder.sprite = null; followMouseHolder.gameObject.SetActive(true); }
private void ConstructBuilding(BuildMenu buildMenu, BuildingDescription buildingDescription) { if (World.StructureManager[buildMenu.TargetNode] != null) { throw new InvalidOperationException("Spot has to be empty"); } var construction = new Construction(buildMenu.TargetNode, buildingDescription, World); World.StructureManager.CreateStrucuture(construction); }
/// <summary> Force set. Validation done by manager. </summary> /// <remarks> Should only be called by manager. </remarks> public void SetBuilding(BuildingDescription build) { for (var y = Position.y; y < Position.y + build.size.y; ++y) { for (var x = Position.x; x < Position.x + build.size.x; ++x) { var partialBlock = map.GetBlock(x, y); partialBlock.State = BlockState.OccupiedPartial; partialBlock.BasePosition = Position; } } State = BlockState.OccupiedBase; Product = build.product; Building = build; }
public ExecutionResult Build(Dictionary <string, object> dict) { if (!dict.ContainsKey("building")) { return(new ExecutionResult(false, new MessageCallback(Locale.Get("buildings.no_building", this.Language), ECharacter.Knight))); } BuildingDescription b = (BuildingDescription)dict["building"]; foreach (IDependency dep in b.Dependencies) { Tuple <bool, MessageCallback> res = dep.CheckKingdom(this); if (!res.Item1) { return(new ExecutionResult(false, res.Item2)); } } Human h = dict.Get("human") as Human ?? FindBySkill("building"); HumanTask t = new HumanTask(h); t.Destination = b.Name; t.TaskType = ETask.Building; foreach (IDependency dep in b.Dependencies) { t.Use(dep.Use(this)); } t.CalculateTaskTime(h); if (!h.AddTask(t)) { return(new ExecutionResult(false, new MessageCallback( Locale.Get(string.Format("problems.dont_work", h.GetName(Language)), Language), ECharacter.Knight ))); } else { return(new ExecutionResult(new MessageCallback(Locale.Get("answers.yes", this.Language)))); } }
public Construction(HexagonNode position, BuildingDescription buildingDescription, World world) : base(position, world, new BuildingDescription(new VerbalStructureDescription("Construction", new TranslationKey("constructionName"), new TranslationKey("constructionDescription")), Knowledge.Zero, buildingDescription.ConstructionInformation, new RenderInformation("constructionFill", "constructionBorder"), false)) { BuildingDescription = buildingDescription; ResourceDirector.AllIngredientsArrived += StartConstructing; }
public Building(HexagonNode position, World world, BuildingDescription buildingDescription) : base(position, world, buildingDescription) { ProductionTime = buildingDescription.ProductionInformation.ProductionTime; ResourceDirector.AllIngredientsArrived += ResourceDirector_AllIngredientsArrived; ResourceDirector.AllProvisionsLeft += ResourceDirector_AllProvisionsLeft; }