protected override IEnumerable <Task> GetTasks() { string desc = $"Deconstructing {building.def.name}."; yield return(new TaskGoTo(game, desc, PathCfg.Adjacent(building.bounds))); yield return(new TaskTimedLambda( game, desc, MinionAnim.Slash, Tool.Hammer, 2, TaskTimed.FaceArea(building.bounds), _ => 1, null, // TODO: track deconstruct amt (task) => { BB.Assert(building.tile.building == building); building.jobHandles.Remove(this); game.RemoveBuilding(building); game.DropItems(building.tile, buildable.GetBuildMaterials()); })); }