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(); }
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)); }
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; } } }