Esempio n. 1
0
        public Builder(string firstname, string lastname, Town hometown)
            : base(firstname, lastname, hometown)
        {
            CurrentTask = BuilderTask.None;
            IsBig       = false;

            ObjectSprite = new TileEngine.Sprite(14, Position.X, Position.Y, 32, 32);

            //Workplace = workplace;

            Start();
        }
Esempio n. 2
0
        public bool ProcessBuildAction(Coaster coaster, BuilderTask task)
        {
            if (coaster.TracksStarted == false || (lastBuildActionFail && task.GetType() == lastBuildTask.GetType()))
            {
                return(false);
            }

            TaskResults results = task.Run(coaster);

            initialTaskResults = results;
            initialTaskResults = results;
            lastBuildTask      = task;

            return(ProcessAfterBuildAttempt(coaster, results));
        }
Esempio n. 3
0
        protected override void MakeDecision(EnvironmentEvent latestEvent)
        {
            switch (CurrentTask)
            {
            case (BuilderTask.None):
            {
                Building cs = FindUnattendedConstructionSite();
                if (cs != null)
                {
                    CurrentTask = BuilderTask.GoingToConstructionSite;
                    GoTo(cs.Position);
                }
                break;
            }

            case (BuilderTask.GoingToConstructionSite):
            {
                Building cs = FindUnattendedConstructionSite();
                if (cs != null)
                {
                    if (Position.IsNextTo(cs.Position))
                    {
                        if (cs.Consort(this))
                        {
                            CurrentTask = BuilderTask.Build;
                            SetFacingDirection(cs.Position);
                        }
                        else
                        {
                            Warn(EnvironmentEvent.Auto);
                        }
                    }
                    else
                    {
                        GoTo(cs.Position);
                    }
                }
                break;
            }

            case (BuilderTask.Build):
            {
                if (latestEvent == EnvironmentEvent.BuildingBuilt)
                {
                    Building cs = FindMyConstructionSite();
                    //cs.Build();
                    //TileMap.Tiles[cs.Position.X, cs.Position.Y].AddObject(new House(HomeTown));

                    cs.Deconsort();

                    //TileMap.Tiles[cs.Position.X, cs.Position.Y].RemoveObject(cs);

                    CurrentTask = BuilderTask.None;

                    Warn(EnvironmentEvent.Auto);
                }
                break;
            }

            default:
            {
                break;
            }
            }
        }