private bool AbortRequest(int tx, int tz, string reason) { bool result = false; // This is a thorough check, taking into account potential errors. for (int i = mNMGenTasks.Count - 1; i >= 0; i--) { NMGenTask item = mNMGenTasks[i]; if (item.TileX == tx && item.TileZ == tz) { item.Abort(reason); mNMGenTasks.RemoveAt(i); mBuild.BuildData.ClearUnbaked(tx, tz); result = true; } } for (int i = mTileTasks.Count - 1; i >= 0; i--) { TileBuildTask item = mTileTasks[i]; if (item.TileX == tx && item.TileZ == tz) { item.Abort(reason); mTileTasks.RemoveAt(i); mBuild.BuildData.ClearUnbaked(tx, tz); result = true; } } return(result); }