public static ChainedTask DownloadMatch(MatchInfo match, bool load2DMap, bool load3DMap, bool showMap, bool showControls, ChainedTask chain = null) { if (chain == null) { chain = new ChainedTask(); } TaskWrapper task = match.GetDownloadTask((success) => { if (!success) { chain.Cancel(); } }); chain.AddTask(task); GenerateMatchInfo(match, load2DMap, load3DMap, showMap, showControls, chain); QueueTask(chain); return(chain); }