-
Notifications
You must be signed in to change notification settings - Fork 42
Handling Events
When you want to show progress to users, add event handlers.
CmlLib.Core uses only two event handlers.
DownloadFileChangedHandler
is used when the file being downloaded changes.
ProgressChangedEventHandler
is used when the progress of the file currently being downloaded changes.
// add event handlers
var launcher = new CMLauncher(new MinecraftPath());
launcher.FileChanged += Launcher_FileChanged;
launcher.ProgressChanged += Launcher_ProgressChanged;
// event handler
private void Launcher_FileChanged(DownloadFileChangedEventArgs e)
{
Console.WriteLine("[{0}] {1} - {2}/{3}", e.FileKind.ToString(), e.FileName, e.ProgressedFileCount, e.TotalFileCount);
}
private void Launcher_ProgressChanged(object sender, System.ComponentModel.ProgressChangedEventArgs e)
{
Console.WriteLine("{0}%", e.ProgressPercentage);
}
public delegate void DownloadFileChangedHandler(DownloadFileChangedEventArgs e);
Represents the method that will handle download progress events.
DownloadFileChangedEventArgs contains the download progress.
Represents the download progress data of IDownloader
.
Type: MFile
Specifies the type of file currently being downloaded.
Type: string
The name of the file currently being downloaded.
Note: if FileKind is equal to MFile.Resource, this property would be an empty string.
Type: object
The source of event. You can determine what object raised the event.
Example:
if (e.Source is IFileChecker)
{
// raised by IFileChecker
// game file checking
}
else if (e.Source is IDownloader)
{
// raised by IDownloader
// file downloading
}
else
{
// etc (MForge, or )
}
Type: int
The total number of files to download.
Type: int
The number of files already downloaded.
Indicates the game file type.
public enum MFile { Runtime, Library, Resource, Minecraft };
Java runtime. CMLauncher.CheckJRE()
raises FileChange
event with this type.
Libraries (GAME_DIR/libraries)
Resources and assets (GAME_DIR/assets)
Minecraft jar file (GAME_DIR/versions)