public CompilerForm(string table) { InitializeComponent(); Text = "Clockwork engine resource compiler V" + Version; TablePath = table; MainSplitContainer.Panel1.Enabled = false; LoaderWorker.RunWorkerAsync(); }
private void LoaderWorker_DoWork(object sender, DoWorkEventArgs e) { LoaderWorker.ReportProgress(0); if (File.Exists(TablePath)) { LogQueue.Put("Reading ID table..."); using (var r = File.OpenText(TablePath)) { while (!r.EndOfStream) { var line = r.ReadLine(); switch (line) { case "[Tiles]": TilesIDTable.Read(r, (string path) => { return(Resource.GetType(path) == ResourceType.Tile); }); break; case "[Events]": EventsIDTable.Read(r, (string path) => { return(Resource.GetType(path) == ResourceType.Event); }); break; case "[Entities]": EntitiesIDTable.Read(r, (string path) => { return(Resource.GetType(path) == ResourceType.Entity); }); break; case "[Outfits]": OutfitsIDTable.Read(r, (string path) => { return(Resource.GetType(path) == ResourceType.Outfit); }); break; case "[Items]": ItemsIDTable.Read(r, (string path) => { return(Resource.GetType(path) == ResourceType.Item); }); break; } } } LogQueue.Put("Tiles loaded: " + TilesIDTable.Count); LogQueue.Put("Tiles valid: " + TilesIDTable.Items.Count((IDTable.Item i) => { return(i.Valid); })); LogQueue.Put("Events loaded: " + EventsIDTable.Count); LogQueue.Put("Events valid: " + EventsIDTable.Items.Count((IDTable.Item i) => { return(i.Valid); })); LogQueue.Put("Entities loaded: " + EntitiesIDTable.Count); LogQueue.Put("Entities valid: " + EntitiesIDTable.Items.Count((IDTable.Item i) => { return(i.Valid); })); LogQueue.Put("Outfits loaded: " + OutfitsIDTable.Count); LogQueue.Put("Outfits valid: " + OutfitsIDTable.Items.Count((IDTable.Item i) => { return(i.Valid); })); LogQueue.Put("items loaded: " + ItemsIDTable.Count); LogQueue.Put("Items valid: " + ItemsIDTable.Items.Count((IDTable.Item i) => { return(i.Valid); })); LogQueue.Put("Reading ID table done."); } else { LogQueue.Put("ID table not found."); } LogQueue.Put(""); LoaderWorker.ReportProgress(5); LogQueue.Put("Indexing files..."); string[] paths = Directory.GetFiles(Directory.GetCurrentDirectory(), "*", SearchOption.AllDirectories); for (int i = 0; i < paths.Length; i++) { paths[i] = ExtraPath.MakeDirectoryRelated(Directory.GetCurrentDirectory(), paths[i]); } LogQueue.Put("Files found: " + paths.Length); LogQueue.Put("Indexing files done."); LogQueue.Put(""); LoaderWorker.ReportProgress(10); LogQueue.Put("Searching resources..."); int progress = 0; for (int i = 0; i < paths.Length; i++) { int current_progress = i * 90 / (paths.Length - 1); if (progress != current_progress) { progress = current_progress; LoaderWorker.ReportProgress(10 + progress); } var path = paths[i]; switch (Resource.GetType(path)) { case ResourceType.Tile: TilesIDTable.Add(path); break; case ResourceType.Event: EventsIDTable.Add(path); break; case ResourceType.Sprite: SpritesIDTable.Add(path); break; case ResourceType.Ragdoll: RagdollsIDTable.Add(path); break; case ResourceType.Animation: AnimationsIDTable.Add(path); break; case ResourceType.Entity: EntitiesIDTable.Add(path); break; case ResourceType.Outfit: OutfitsIDTable.Add(path); break; case ResourceType.Item: ItemsIDTable.Add(path); break; } } LogQueue.Put("Tiles found: " + TilesIDTable.Count); LogQueue.Put("Events found: " + EventsIDTable.Count); LogQueue.Put("Sprites found: " + SpritesIDTable.Count); LogQueue.Put("Ragdolls found: " + RagdollsIDTable.Count); LogQueue.Put("Animations found: " + AnimationsIDTable.Count); LogQueue.Put("Entities found: " + EntitiesIDTable.Count); LogQueue.Put("Outfits found: " + OutfitsIDTable.Count); LogQueue.Put("Items found: " + ItemsIDTable.Count); LogQueue.Put("Total resources found: " + ( TilesIDTable.Count + EventsIDTable.Count + SpritesIDTable.Count + RagdollsIDTable.Count + AnimationsIDTable.Count + EntitiesIDTable.Count + OutfitsIDTable.Count + ItemsIDTable.Count)); LogQueue.Put("Searching resources done."); LogQueue.Put(""); }