Пример #1
0
        //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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        /// <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;
        }
Пример #4
0
        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))));
            }
        }
Пример #5
0
 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;
 }
Пример #6
0
 public Building(HexagonNode position, World world, BuildingDescription buildingDescription) : base(position, world, buildingDescription)
 {
     ProductionTime = buildingDescription.ProductionInformation.ProductionTime;
     ResourceDirector.AllIngredientsArrived += ResourceDirector_AllIngredientsArrived;
     ResourceDirector.AllProvisionsLeft     += ResourceDirector_AllProvisionsLeft;
 }