public static void LocalizeAsset(RobloxFileType type, BackgroundWorker worker, string path, string itemname, string meshname) { try { switch (type) { case RobloxFileType.RBXL: //backup the original copy if (GlobalVars.UserConfiguration.AssetLocalizerSaveBackups) { try { worker.ReportProgress(0); File.Copy(path, path.Replace(".rbxl", " BAK.rbxl")); } catch (Exception) { worker.ReportProgress(100); } } else { worker.ReportProgress(0); } //meshes worker.ReportProgress(5); RobloxXML.DownloadFromNodes(path, RobloxDefs.Fonts); RobloxXML.DownloadFromNodes(path, RobloxDefs.Fonts, 1, 1, 1, 1); //skybox worker.ReportProgress(10); RobloxXML.DownloadFromNodes(path, RobloxDefs.Sky); RobloxXML.DownloadFromNodes(path, RobloxDefs.Sky, 1, 0, 0, 0); RobloxXML.DownloadFromNodes(path, RobloxDefs.Sky, 2, 0, 0, 0); RobloxXML.DownloadFromNodes(path, RobloxDefs.Sky, 3, 0, 0, 0); RobloxXML.DownloadFromNodes(path, RobloxDefs.Sky, 4, 0, 0, 0); RobloxXML.DownloadFromNodes(path, RobloxDefs.Sky, 5, 0, 0, 0); //decal worker.ReportProgress(15); RobloxXML.DownloadFromNodes(path, RobloxDefs.Decal); //texture worker.ReportProgress(20); RobloxXML.DownloadFromNodes(path, RobloxDefs.Texture); //tools and hopperbin worker.ReportProgress(25); RobloxXML.DownloadFromNodes(path, RobloxDefs.Tool); worker.ReportProgress(30); RobloxXML.DownloadFromNodes(path, RobloxDefs.HopperBin); //sound worker.ReportProgress(40); RobloxXML.DownloadFromNodes(path, RobloxDefs.Sound); worker.ReportProgress(50); RobloxXML.DownloadFromNodes(path, RobloxDefs.ImageLabel); //clothing worker.ReportProgress(60); RobloxXML.DownloadFromNodes(path, RobloxDefs.Shirt); worker.ReportProgress(65); RobloxXML.DownloadFromNodes(path, RobloxDefs.ShirtGraphic); worker.ReportProgress(70); RobloxXML.DownloadFromNodes(path, RobloxDefs.Pants); //scripts worker.ReportProgress(80); RobloxXML.DownloadFromNodes(path, RobloxDefs.Script); worker.ReportProgress(90); RobloxXML.DownloadFromNodes(path, RobloxDefs.LocalScript); //localize any scripts that are not handled /* * worker.ReportProgress(95); * RobloxXML.DownloadScriptFromNodes(path, "Script"); * worker.ReportProgress(97); * RobloxXML.DownloadScriptFromNodes(path, "LocalScript");*/ worker.ReportProgress(100); break; case RobloxFileType.RBXM: if (GlobalVars.UserConfiguration.AssetLocalizerSaveBackups) { try { worker.ReportProgress(0); File.Copy(path, path.Replace(".rbxm", " BAK.rbxm")); } catch (Exception) { worker.ReportProgress(100); } } else { worker.ReportProgress(0); } //meshes RobloxXML.DownloadFromNodes(path, RobloxDefs.Fonts); RobloxXML.DownloadFromNodes(path, RobloxDefs.Fonts, 1, 1, 1, 1); //skybox worker.ReportProgress(10); RobloxXML.DownloadFromNodes(path, RobloxDefs.Sky); RobloxXML.DownloadFromNodes(path, RobloxDefs.Sky, 1, 0, 0, 0); RobloxXML.DownloadFromNodes(path, RobloxDefs.Sky, 2, 0, 0, 0); RobloxXML.DownloadFromNodes(path, RobloxDefs.Sky, 3, 0, 0, 0); RobloxXML.DownloadFromNodes(path, RobloxDefs.Sky, 4, 0, 0, 0); RobloxXML.DownloadFromNodes(path, RobloxDefs.Sky, 5, 0, 0, 0); //decal worker.ReportProgress(15); RobloxXML.DownloadFromNodes(path, RobloxDefs.Decal); //texture worker.ReportProgress(20); RobloxXML.DownloadFromNodes(path, RobloxDefs.Texture); //tools and hopperbin worker.ReportProgress(25); RobloxXML.DownloadFromNodes(path, RobloxDefs.Tool); worker.ReportProgress(30); RobloxXML.DownloadFromNodes(path, RobloxDefs.HopperBin); //sound worker.ReportProgress(40); RobloxXML.DownloadFromNodes(path, RobloxDefs.Sound); worker.ReportProgress(50); RobloxXML.DownloadFromNodes(path, RobloxDefs.ImageLabel); //clothing worker.ReportProgress(60); RobloxXML.DownloadFromNodes(path, RobloxDefs.Shirt); worker.ReportProgress(65); RobloxXML.DownloadFromNodes(path, RobloxDefs.ShirtGraphic); worker.ReportProgress(70); RobloxXML.DownloadFromNodes(path, RobloxDefs.Pants); //scripts worker.ReportProgress(80); RobloxXML.DownloadFromNodes(path, RobloxDefs.Script); worker.ReportProgress(90); RobloxXML.DownloadFromNodes(path, RobloxDefs.LocalScript); //localize any scripts that are not handled /* * worker.ReportProgress(95); * RobloxXML.DownloadScriptFromNodes(path, "Script"); * worker.ReportProgress(97); * RobloxXML.DownloadScriptFromNodes(path, "LocalScript");*/ worker.ReportProgress(100); break; case RobloxFileType.Hat: if (GlobalVars.UserConfiguration.AssetLocalizerSaveBackups) { try { worker.ReportProgress(0); File.Copy(path, path.Replace(".rbxm", " BAK.rbxm")); } catch (Exception) { worker.ReportProgress(100); } } else { worker.ReportProgress(0); } //meshes RobloxXML.DownloadFromNodes(path, RobloxDefs.ItemHatFonts, itemname, meshname); RobloxXML.DownloadFromNodes(path, RobloxDefs.ItemHatFonts, 1, 1, 1, 1, itemname); worker.ReportProgress(25); RobloxXML.DownloadFromNodes(path, RobloxDefs.ItemHatSound); //scripts worker.ReportProgress(50); RobloxXML.DownloadFromNodes(path, RobloxDefs.ItemHatScript); worker.ReportProgress(75); RobloxXML.DownloadFromNodes(path, RobloxDefs.ItemHatLocalScript); worker.ReportProgress(100); break; case RobloxFileType.Head: if (GlobalVars.UserConfiguration.AssetLocalizerSaveBackups) { try { worker.ReportProgress(0); File.Copy(path, path.Replace(".rbxm", " BAK.rbxm")); } catch (Exception) { worker.ReportProgress(100); } } else { worker.ReportProgress(0); } //meshes RobloxXML.DownloadFromNodes(path, RobloxDefs.ItemHeadFonts, itemname); RobloxXML.DownloadFromNodes(path, RobloxDefs.ItemHeadFonts, 1, 1, 1, 1, itemname); worker.ReportProgress(100); break; case RobloxFileType.Face: if (GlobalVars.UserConfiguration.AssetLocalizerSaveBackups) { try { worker.ReportProgress(0); File.Copy(path, path.Replace(".rbxm", " BAK.rbxm")); } catch (Exception) { worker.ReportProgress(100); } } else { worker.ReportProgress(0); } //decal RobloxXML.DownloadFromNodes(path, RobloxDefs.ItemFaceTexture, itemname); worker.ReportProgress(100); break; case RobloxFileType.TShirt: if (GlobalVars.UserConfiguration.AssetLocalizerSaveBackups) { try { worker.ReportProgress(0); File.Copy(path, path.Replace(".rbxm", " BAK.rbxm")); } catch (Exception) { worker.ReportProgress(100); } } else { worker.ReportProgress(0); } //texture RobloxXML.DownloadFromNodes(path, RobloxDefs.ItemTShirtTexture, itemname); worker.ReportProgress(100); break; case RobloxFileType.Shirt: if (GlobalVars.UserConfiguration.AssetLocalizerSaveBackups) { try { worker.ReportProgress(0); File.Copy(path, path.Replace(".rbxm", " BAK.rbxm")); } catch (Exception) { worker.ReportProgress(100); } } else { worker.ReportProgress(0); } //texture RobloxXML.DownloadFromNodes(path, RobloxDefs.ItemShirtTexture, itemname); worker.ReportProgress(100); break; case RobloxFileType.Pants: if (GlobalVars.UserConfiguration.AssetLocalizerSaveBackups) { try { worker.ReportProgress(0); File.Copy(path, path.Replace(".rbxm", " BAK.rbxm")); } catch (Exception) { worker.ReportProgress(100); } } else { worker.ReportProgress(0); } //texture RobloxXML.DownloadFromNodes(path, RobloxDefs.ItemPantsTexture, itemname); worker.ReportProgress(100); break; /*case RobloxFileType.Script: * if (GlobalVars.UserConfiguration.AssetLocalizerSaveBackups) * { * try * { * worker.ReportProgress(0); * File.Copy(path, path.Replace(".lua", " BAK.lua")); * } * catch (Exception) * { * worker.ReportProgress(100); * } * } * else * { * worker.ReportProgress(0); * } * * RobloxXML.DownloadFromScript(path); * worker.ReportProgress(100); * break;*/ default: worker.ReportProgress(100); break; } } catch (Exception ex) { MessageBox.Show("Error: Unable to localize the asset. " + ex.Message, "Novetus Asset Localizer", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
private void CustomGraphicsOptions_Load(object sender, EventArgs e) { ClientName = GlobalVars.UserConfiguration.SelectedClient; info = GlobalFuncs.GetClientInfoValues(ClientName); string terms = "_" + ClientName; string[] dirs = Directory.GetFiles(GlobalPaths.ConfigDirClients); foreach (string dir in dirs) { if (dir.Contains(terms) && !dir.Contains("_default")) { string oldfile = ""; string fixedfile = ""; XDocument doc = null; try { oldfile = File.ReadAllText(dir); fixedfile = RobloxXML.RemoveInvalidXmlChars(RobloxXML.ReplaceHexadecimalSymbols(oldfile)); doc = XDocument.Parse(fixedfile); } catch (Exception) { return; } //read a few handpicked things to not take up memory try { MeshDetail = Convert.ToInt32(RobloxXML.GetRenderSettings(doc, "maxMeshDetail", XMLTypes.Float)); GraphicsMeshQuality.Value = MeshDetail; } catch (Exception) { GraphicsMeshQuality.Enabled = false; } try { ShadingQuality = Convert.ToInt32(RobloxXML.GetRenderSettings(doc, "maxShadingQuality", XMLTypes.Float)); GraphicsShadingQuality.Value = ShadingQuality; } catch (Exception) { GraphicsShadingQuality.Enabled = false; } try { MaterialQuality = Convert.ToInt32(RobloxXML.GetRenderSettings(doc, "WoodQuality", XMLTypes.Token)); GraphicsMaterialQuality.SelectedIndex = MaterialQuality; } catch (Exception) { try { MaterialQuality = Convert.ToInt32(RobloxXML.GetRenderSettings(doc, "TrussDetail", XMLTypes.Token)); GraphicsMaterialQuality.SelectedIndex = MaterialQuality; } catch (Exception) { GraphicsMaterialQuality.Enabled = false; } } try { AA = Convert.ToInt32(RobloxXML.GetRenderSettings(doc, "Antialiasing", XMLTypes.Token)); GraphicsAntiAliasing.SelectedIndex = AA; } catch (Exception) { GraphicsAntiAliasing.Enabled = false; } try { AASamples = Convert.ToInt32(RobloxXML.GetRenderSettings(doc, "AASamples", XMLTypes.Token)); switch (AASamples) { case 4: GraphicsAASamples.SelectedIndex = 1; break; case 8: GraphicsAASamples.SelectedIndex = 2; break; default: GraphicsAASamples.SelectedIndex = 0; break; } } catch (Exception) { GraphicsAASamples.Enabled = false; } try { Bevels = Convert.ToInt32(RobloxXML.GetRenderSettings(doc, "Bevels", XMLTypes.Token)); GraphicsBevels.SelectedIndex = Bevels; } catch (Exception) { GraphicsBevels.Enabled = false; } try { Shadows_2008 = Convert.ToInt32(RobloxXML.GetRenderSettings(doc, "Shadow", XMLTypes.Token)); GraphicsShadows2008.SelectedIndex = Shadows_2008; } catch (Exception) { GraphicsShadows2008.Enabled = false; } try { Shadows_2007 = Convert.ToBoolean(RobloxXML.GetRenderSettings(doc, "Shadows", XMLTypes.Bool)); switch (Shadows_2007) { case false: GraphicsShadows2007.SelectedIndex = 1; break; default: GraphicsShadows2007.SelectedIndex = 0; break; } } catch (Exception) { GraphicsShadows2007.Enabled = false; } try { QualityLevel = Convert.ToInt32(RobloxXML.GetRenderSettings(doc, "QualityLevel", XMLTypes.Token)); GraphicsLevel.Value = QualityLevel; } catch (Exception) { GraphicsLevel.Enabled = false; } doc = null; GC.Collect(); GC.WaitForPendingFinalizers(); } } }
private void CustomGraphicsOptions_Load(object sender, EventArgs e) { ClientName = GlobalVars.UserConfiguration.SelectedClient; info = GlobalFuncs.GetClientInfoValues(ClientName); string terms = "_" + ClientName; bool hasFoundDir = false; string[] dirs = Directory.GetFiles(GlobalPaths.ConfigDirClients); foreach (string dir in dirs) { if (dir.Contains(terms) && !dir.Contains("_default")) { string oldfile = ""; string fixedfile = ""; XDocument doc = null; try { oldfile = File.ReadAllText(dir); fixedfile = RobloxXML.RemoveInvalidXmlChars(RobloxXML.ReplaceHexadecimalSymbols(oldfile)); doc = XDocument.Parse(fixedfile); } catch (Exception) { return; } //read a few handpicked things to not take up memory try { MeshDetail = Convert.ToInt32(RobloxXML.GetRenderSettings(doc, "maxMeshDetail", XMLTypes.Float)); GraphicsMeshQuality.Value = MeshDetail; } catch (Exception) { GraphicsMeshQuality.Enabled = false; } try { ShadingQuality = Convert.ToInt32(RobloxXML.GetRenderSettings(doc, "maxShadingQuality", XMLTypes.Float)); GraphicsShadingQuality.Value = ShadingQuality; } catch (Exception) { GraphicsShadingQuality.Enabled = false; } try { MaterialQuality = Convert.ToInt32(RobloxXML.GetRenderSettings(doc, "WoodQuality", XMLTypes.Token)); GraphicsMaterialQuality.SelectedIndex = MaterialQuality; } catch (Exception) { try { MaterialQuality = Convert.ToInt32(RobloxXML.GetRenderSettings(doc, "TrussDetail", XMLTypes.Token)); GraphicsMaterialQuality.SelectedIndex = MaterialQuality; } catch (Exception) { GraphicsMaterialQuality.Enabled = false; } } try { AA = Convert.ToInt32(RobloxXML.GetRenderSettings(doc, "Antialiasing", XMLTypes.Token)); GraphicsAntiAliasing.SelectedIndex = AA; } catch (Exception) { GraphicsAntiAliasing.Enabled = false; } try { AASamples = Convert.ToInt32(RobloxXML.GetRenderSettings(doc, "AASamples", XMLTypes.Token)); switch (AASamples) { case 4: GraphicsAASamples.SelectedIndex = 1; break; case 8: GraphicsAASamples.SelectedIndex = 2; break; default: GraphicsAASamples.SelectedIndex = 0; break; } } catch (Exception) { GraphicsAASamples.Enabled = false; } try { Bevels = Convert.ToInt32(RobloxXML.GetRenderSettings(doc, "Bevels", XMLTypes.Token)); GraphicsBevels.SelectedIndex = Bevels; } catch (Exception) { GraphicsBevels.Enabled = false; } try { Shadows_2008 = Convert.ToInt32(RobloxXML.GetRenderSettings(doc, "Shadow", XMLTypes.Token)); GraphicsShadows2008.SelectedIndex = Shadows_2008; } catch (Exception) { GraphicsShadows2008.Enabled = false; } try { Shadows_2007 = Convert.ToBoolean(RobloxXML.GetRenderSettings(doc, "Shadows", XMLTypes.Bool)); } catch (Exception) { // try doing march 2007. try { Shadows_2007 = Convert.ToBoolean(RobloxXML.GetRenderSettings(doc, "shadows", XMLTypes.Bool)); } catch (Exception) { GraphicsShadows2007.Enabled = false; } } if (GraphicsShadows2007.Enabled) { switch (Shadows_2007) { case false: GraphicsShadows2007.SelectedIndex = 1; break; default: GraphicsShadows2007.SelectedIndex = 0; break; } } try { bool checkSkin = RobloxXML.IsRenderSettingStringValid(doc, "_skinFile", XMLTypes.String); if (checkSkin) { Style_2007 = RobloxXML.GetRenderSettings(doc, "_skinFile", XMLTypes.String).Replace(@"Styles\", ""); Style2007.Text = Style_2007; } else { Style2007.Enabled = false; Style2007FolderFinder.Enabled = false; } } catch (Exception) { Style2007.Enabled = false; Style2007FolderFinder.Enabled = false; } try { QualityLevel = Convert.ToInt32(RobloxXML.GetRenderSettings(doc, "QualityLevel", XMLTypes.Token)); GraphicsLevel.Value = QualityLevel; } catch (Exception) { GraphicsLevel.Enabled = false; } doc = null; GC.Collect(); GC.WaitForPendingFinalizers(); hasFoundDir = true; } } if (!hasFoundDir) { MessageBox.Show("This client does not support setting adjustment through the Novetus Launcher.\nTry opening this client in ROBLOX Studio and adjust it through the settings in Tools -> Settings."); Close(); } }