config system hotfixes
This commit is contained in:
parent
9f6427a5b9
commit
7096548a62
|
|
@ -204,7 +204,6 @@ namespace Novetus.Core
|
|||
}
|
||||
|
||||
error:
|
||||
ErrorHandler(filePath + ": Failed to load script.");
|
||||
return null;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -67,6 +67,8 @@ namespace Novetus.Core
|
|||
private string FileName { get; set; }
|
||||
public string FullPath { get;}
|
||||
|
||||
public virtual Dictionary<string, string> ValueDefaults { get; set; }
|
||||
|
||||
public ConfigBase(string section, string path, string fileName)
|
||||
{
|
||||
Section = section;
|
||||
|
|
@ -89,18 +91,37 @@ namespace Novetus.Core
|
|||
public void CreateFile()
|
||||
{
|
||||
INI = new INIFile(FullPath);
|
||||
DeployDefaults();
|
||||
}
|
||||
|
||||
public virtual void DeployDefaults()
|
||||
{
|
||||
GenerateDefaults();
|
||||
GenerateDefaultsEvent();
|
||||
}
|
||||
|
||||
public virtual void GenerateDefaults()
|
||||
public virtual void DefineDefaults()
|
||||
{
|
||||
//defaults go in here.
|
||||
//fill dictionary here
|
||||
}
|
||||
|
||||
public void GenerateDefaults()
|
||||
{
|
||||
DefineDefaults();
|
||||
|
||||
if (ValueDefaults.Count == 0)
|
||||
{
|
||||
ValueDefaults = new Dictionary<string, string>()
|
||||
{
|
||||
{"Error", "There are no default values in your ConfigBase class!"}
|
||||
};
|
||||
}
|
||||
|
||||
foreach (string key in ValueDefaults.Keys)
|
||||
{
|
||||
var value = ValueDefaults[key];
|
||||
|
||||
if (value != null)
|
||||
{
|
||||
SaveSetting(key, value);
|
||||
}
|
||||
}
|
||||
|
||||
GenerateDefaultsEvent();
|
||||
}
|
||||
|
||||
public virtual void GenerateDefaultsEvent()
|
||||
|
|
@ -137,8 +158,7 @@ namespace Novetus.Core
|
|||
|
||||
public void SaveSettingInt(string section, string name, int value)
|
||||
{
|
||||
INI.IniWriteValue(section, name, value.ToString());
|
||||
SaveSettingEvent();
|
||||
SaveSetting(section, name, value.ToString());
|
||||
}
|
||||
|
||||
public void SaveSettingBool(string name, bool value)
|
||||
|
|
@ -148,8 +168,7 @@ namespace Novetus.Core
|
|||
|
||||
public void SaveSettingBool(string section, string name, bool value)
|
||||
{
|
||||
INI.IniWriteValue(section, name, value.ToString());
|
||||
SaveSettingEvent();
|
||||
SaveSetting(section, name, value.ToString());
|
||||
}
|
||||
|
||||
public virtual void SaveSettingEvent()
|
||||
|
|
@ -168,7 +187,19 @@ namespace Novetus.Core
|
|||
}
|
||||
else
|
||||
{
|
||||
return "";
|
||||
string defaultval;
|
||||
|
||||
try
|
||||
{
|
||||
defaultval = ValueDefaults[name];
|
||||
}
|
||||
catch(Exception)
|
||||
{
|
||||
defaultval = "";
|
||||
}
|
||||
|
||||
SaveSetting(section, name, defaultval);
|
||||
return INI.IniReadValue(section, name);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -177,9 +208,9 @@ namespace Novetus.Core
|
|||
return ReadSetting(Section, name);
|
||||
}
|
||||
|
||||
public int ReadSettingInt(string name)
|
||||
public int ReadSettingInt(string section, string name)
|
||||
{
|
||||
bool result = int.TryParse(ReadSetting(name), out int value);
|
||||
bool result = int.TryParse(ReadSetting(section, name), out int value);
|
||||
if(result)
|
||||
{
|
||||
return value;
|
||||
|
|
@ -188,9 +219,14 @@ namespace Novetus.Core
|
|||
return 0;
|
||||
}
|
||||
|
||||
public bool ReadSettingBool(string name)
|
||||
public int ReadSettingInt(string name)
|
||||
{
|
||||
bool result = bool.TryParse(ReadSetting(name), out bool value);
|
||||
return ReadSettingInt(Section, name);
|
||||
}
|
||||
|
||||
public bool ReadSettingBool(string section, string name)
|
||||
{
|
||||
bool result = bool.TryParse(ReadSetting(section, name), out bool value);
|
||||
if (result)
|
||||
{
|
||||
return value;
|
||||
|
|
@ -199,6 +235,11 @@ namespace Novetus.Core
|
|||
return false;
|
||||
}
|
||||
|
||||
public bool ReadSettingBool(string name)
|
||||
{
|
||||
return ReadSettingBool(Section, name);
|
||||
}
|
||||
|
||||
public virtual void ReadSettingEvent()
|
||||
{
|
||||
//read setting event.
|
||||
|
|
@ -214,44 +255,45 @@ namespace Novetus.Core
|
|||
|
||||
public Config(string filename) : base("Config", GlobalPaths.ConfigDir, filename) { }
|
||||
|
||||
public override void GenerateDefaults()
|
||||
public override void DefineDefaults()
|
||||
{
|
||||
SaveSetting("SelectedClient", "");
|
||||
SaveSetting("Map", "");
|
||||
SaveSettingBool("CloseOnLaunch", false);
|
||||
SaveSettingInt("UserID", NovetusFuncs.GeneratePlayerID());
|
||||
SaveSetting("PlayerName", "Player");
|
||||
SaveSettingInt("RobloxPort", 53640);
|
||||
SaveSettingInt("PlayerLimit", 12);
|
||||
SaveSettingBool("UPnP", false);
|
||||
SaveSettingBool("DisabledAssetSDKHelp", false);
|
||||
SaveSettingBool("DiscordRichPresence", true);
|
||||
SaveSetting("MapPath", "");
|
||||
SaveSetting("MapPathSnip", "");
|
||||
SaveSettingInt("GraphicsMode", (int)Settings.Mode.Automatic);
|
||||
SaveSettingInt("QualityLevel", (int)Settings.Level.Automatic);
|
||||
ValueDefaults = new Dictionary<string, string>(){
|
||||
{"SelectedClient", ""},
|
||||
{"Map", ""},
|
||||
{"CloseOnLaunch", Util.BoolValue(false)},
|
||||
{"UserID", Util.IntValue(NovetusFuncs.GeneratePlayerID())},
|
||||
{"PlayerName", "Player"},
|
||||
{"RobloxPort", Util.IntValue(53640)},
|
||||
{"PlayerLimit", Util.IntValue(12)},
|
||||
{"UPnP", Util.BoolValue(false)},
|
||||
{"DisabledAssetSDKHelp", Util.BoolValue(false)},
|
||||
{"DiscordRichPresence", Util.BoolValue(true)},
|
||||
{"MapPath", ""},
|
||||
{"MapPathSnip", ""},
|
||||
{"GraphicsMode", Util.IntValue((int)Settings.Mode.Automatic)},
|
||||
{"QualityLevel", Util.IntValue((int)Settings.Level.Automatic)},
|
||||
{"LauncherStyle", Util.IntValue((int)Settings.Style.Stylish)},
|
||||
{"AssetSDKFixerSaveBackups", Util.BoolValue(true)},
|
||||
{"AlternateServerIP", ""},
|
||||
{"ShowServerNotifications", Util.BoolValue(false)},
|
||||
{"ServerBrowserServerName", "Novetus"},
|
||||
{"ServerBrowserServerAddress", ""},
|
||||
{"Priority", Util.IntValue((int)ProcessPriorityClass.RealTime)},
|
||||
{"FirstServerLaunch", Util.BoolValue(true)},
|
||||
{"NewGUI", Util.BoolValue(false)},
|
||||
{"URIQuickConfigure", Util.BoolValue(true)},
|
||||
{"BootstrapperShowUI", Util.BoolValue(true)},
|
||||
{"WebProxyInitialSetupRequired", Util.BoolValue(true)},
|
||||
{"WebProxyEnabled", Util.BoolValue(false)}
|
||||
};
|
||||
}
|
||||
|
||||
public override void GenerateDefaultsEvent()
|
||||
{
|
||||
if (Util.IsWineRunning())
|
||||
{
|
||||
SaveSettingInt("LauncherStyle", (int)Settings.Style.Extended);
|
||||
}
|
||||
else
|
||||
{
|
||||
SaveSettingInt("LauncherStyle", (int)Settings.Style.Stylish);
|
||||
}
|
||||
|
||||
SaveSettingBool("AssetSDKFixerSaveBackups", true);
|
||||
SaveSetting("AlternateServerIP", "");
|
||||
SaveSettingBool("ShowServerNotifications", false);
|
||||
SaveSetting("ServerBrowserServerName", "Novetus");
|
||||
SaveSetting("ServerBrowserServerAddress", "");
|
||||
SaveSettingInt("Priority", (int)ProcessPriorityClass.RealTime);
|
||||
SaveSettingBool("FirstServerLaunch", true);
|
||||
SaveSettingBool("NewGUI", false);
|
||||
SaveSettingBool("URIQuickConfigure", true);
|
||||
SaveSettingBool("BootstrapperShowUI", true);
|
||||
SaveSettingBool("WebProxyInitialSetupRequired", true);
|
||||
SaveSettingBool("WebProxyEnabled", false);
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
|
@ -262,33 +304,35 @@ namespace Novetus.Core
|
|||
public CustomizationConfig() : base("Customization", GlobalPaths.ConfigDir, GlobalPaths.ConfigNameCustomization) { }
|
||||
public CustomizationConfig(string filename) : base("Customization", GlobalPaths.ConfigDir, filename) { }
|
||||
|
||||
public override void GenerateDefaults()
|
||||
public override void DefineDefaults()
|
||||
{
|
||||
SaveSetting("Hat1", "NoHat.rbxm");
|
||||
SaveSetting("Hat2", "NoHat.rbxm");
|
||||
SaveSetting("Hat3", "NoHat.rbxm");
|
||||
SaveSetting("Face", "DefaultFace.rbxm");
|
||||
SaveSetting("Head", "DefaultHead.rbxm");
|
||||
SaveSetting("TShirt", "NoTShirt.rbxm");
|
||||
SaveSetting("Shirt", "NoShirt.rbxm");
|
||||
SaveSetting("Pants", "NoPants.rbxm");
|
||||
SaveSetting("Icon", "NBC");
|
||||
SaveSetting("Extra", "NoExtra.rbxm");
|
||||
SaveSettingInt("HeadColorID", 24);
|
||||
SaveSettingInt("TorsoColorID", 23);
|
||||
SaveSettingInt("LeftArmColorID", 24);
|
||||
SaveSettingInt("RightArmColorID", 24);
|
||||
SaveSettingInt("LeftLegColorID", 119);
|
||||
SaveSettingInt("RightLegColorID", 119);
|
||||
SaveSetting("HeadColorString", "Color [A=255, R=245, G=205, B=47]");
|
||||
SaveSetting("TorsoColorString", "Color [A=255, R=13, G=105, B=172]");
|
||||
SaveSetting("LeftArmColorString", "Color [A=255, R=245, G=205, B=47]");
|
||||
SaveSetting("RightArmColorString", "Color [A=255, R=245, G=205, B=47]");
|
||||
SaveSetting("LeftLegColorString", "Color [A=255, R=164, G=189, B=71]");
|
||||
SaveSetting("RightLegColorString", "Color [A=255, R=164, G=189, B=71]");
|
||||
SaveSettingBool("ExtraSelectionIsHat", false);
|
||||
SaveSettingBool("ShowHatsInExtra", false);
|
||||
SaveSetting("CharacterID", "");
|
||||
ValueDefaults = new Dictionary<string, string>(){
|
||||
{"Hat1", "NoHat.rbxm"},
|
||||
{"Hat2", "NoHat.rbxm"},
|
||||
{"Hat3", "NoHat.rbxm"},
|
||||
{"Face", "DefaultFace.rbxm"},
|
||||
{"Head", "DefaultHead.rbxm"},
|
||||
{"TShirt", "NoTShirt.rbxm"},
|
||||
{"Shirt", "NoShirt.rbxm"},
|
||||
{"Pants", "NoPants.rbxm"},
|
||||
{"Icon", "NBC"},
|
||||
{"Extra", "NoExtra.rbxm"},
|
||||
{"HeadColorID", Util.IntValue(24)},
|
||||
{"TorsoColorID", Util.IntValue(23)},
|
||||
{"LeftArmColorID", Util.IntValue(24)},
|
||||
{"RightArmColorID", Util.IntValue(24)},
|
||||
{"LeftLegColorID", Util.IntValue(119)},
|
||||
{"RightLegColorID", Util.IntValue(119)},
|
||||
{"HeadColorString", "Color [A=255, R=245, G=205, B=47]"},
|
||||
{"TorsoColorString", "Color [A=255, R=13, G=105, B=172]"},
|
||||
{"LeftArmColorString", "Color [A=255, R=245, G=205, B=47]"},
|
||||
{"RightArmColorString", "Color [A=255, R=245, G=205, B=47]"},
|
||||
{"LeftLegColorString", "Color [A=255, R=164, G=189, B=71]"},
|
||||
{"RightLegColorString", "Color [A=255, R=164, G=189, B=71]"},
|
||||
{"ExtraSelectionIsHat", Util.BoolValue(false)},
|
||||
{"ShowHatsInExtra", Util.BoolValue(false)},
|
||||
{"CharacterID", ""}
|
||||
};
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
|
|
|||
|
|
@ -767,83 +767,97 @@ namespace Novetus.Core
|
|||
}
|
||||
|
||||
#if LAUNCHER
|
||||
//https://stackoverflow.com/questions/30687987/unable-to-decompress-bz2-file-has-orginal-file-using-dotnetzip-library
|
||||
public static string Compress(string sourceFile, bool forceOverwrite)
|
||||
{
|
||||
var outFname = sourceFile + ".bz2";
|
||||
|
||||
if (File.Exists(outFname))
|
||||
//https://stackoverflow.com/questions/30687987/unable-to-decompress-bz2-file-has-orginal-file-using-dotnetzip-library
|
||||
public static string Compress(string sourceFile, bool forceOverwrite)
|
||||
{
|
||||
if (forceOverwrite)
|
||||
File.Delete(outFname);
|
||||
else
|
||||
return null;
|
||||
}
|
||||
long rowCount = 0;
|
||||
var output = File.Create(outFname);
|
||||
var outFname = sourceFile + ".bz2";
|
||||
|
||||
try
|
||||
{
|
||||
using (StreamReader reader = new StreamReader(sourceFile))
|
||||
if (File.Exists(outFname))
|
||||
{
|
||||
using (var compressor = new Ionic.BZip2.ParallelBZip2OutputStream(output))
|
||||
{
|
||||
StreamWriter writer = new StreamWriter(compressor, Encoding.UTF8);
|
||||
string line = "";
|
||||
while ((line = reader.ReadLine()) != null)
|
||||
{
|
||||
writer.WriteLine(line);
|
||||
rowCount++;
|
||||
}
|
||||
if (forceOverwrite)
|
||||
File.Delete(outFname);
|
||||
else
|
||||
return null;
|
||||
}
|
||||
long rowCount = 0;
|
||||
var output = File.Create(outFname);
|
||||
|
||||
writer.Close();
|
||||
compressor.Close();
|
||||
try
|
||||
{
|
||||
using (StreamReader reader = new StreamReader(sourceFile))
|
||||
{
|
||||
using (var compressor = new Ionic.BZip2.ParallelBZip2OutputStream(output))
|
||||
{
|
||||
StreamWriter writer = new StreamWriter(compressor, Encoding.UTF8);
|
||||
string line = "";
|
||||
while ((line = reader.ReadLine()) != null)
|
||||
{
|
||||
writer.WriteLine(line);
|
||||
rowCount++;
|
||||
}
|
||||
|
||||
writer.Close();
|
||||
compressor.Close();
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
|
||||
throw;
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (output != null)
|
||||
output = null;
|
||||
}
|
||||
|
||||
// Pump(fs, compressor);
|
||||
|
||||
return outFname;
|
||||
}
|
||||
catch (Exception)
|
||||
|
||||
public static string Decompress(string sourceFile, bool forceOverwrite)
|
||||
{
|
||||
var outFname = sourceFile.Replace(".bz2", "");
|
||||
if (File.Exists(outFname))
|
||||
{
|
||||
if (forceOverwrite)
|
||||
File.Delete(outFname);
|
||||
else
|
||||
return null;
|
||||
}
|
||||
|
||||
throw;
|
||||
using (Stream fs = File.OpenRead(sourceFile),
|
||||
output = File.Create(outFname),
|
||||
decompressor = new Ionic.BZip2.BZip2InputStream(fs))
|
||||
Pump(decompressor, output);
|
||||
|
||||
return outFname;
|
||||
}
|
||||
finally
|
||||
|
||||
private static void Pump(Stream src, Stream dest)
|
||||
{
|
||||
if (output != null)
|
||||
output = null;
|
||||
byte[] buffer = new byte[2048];
|
||||
int n;
|
||||
while ((n = src.Read(buffer, 0, buffer.Length)) > 0)
|
||||
dest.Write(buffer, 0, n);
|
||||
}
|
||||
|
||||
// Pump(fs, compressor);
|
||||
|
||||
return outFname;
|
||||
}
|
||||
|
||||
public static string Decompress(string sourceFile, bool forceOverwrite)
|
||||
{
|
||||
var outFname = sourceFile.Replace(".bz2", "");
|
||||
if (File.Exists(outFname))
|
||||
{
|
||||
if (forceOverwrite)
|
||||
File.Delete(outFname);
|
||||
else
|
||||
return null;
|
||||
}
|
||||
|
||||
using (Stream fs = File.OpenRead(sourceFile),
|
||||
output = File.Create(outFname),
|
||||
decompressor = new Ionic.BZip2.BZip2InputStream(fs))
|
||||
Pump(decompressor, output);
|
||||
|
||||
return outFname;
|
||||
}
|
||||
|
||||
private static void Pump(Stream src, Stream dest)
|
||||
{
|
||||
byte[] buffer = new byte[2048];
|
||||
int n;
|
||||
while ((n = src.Read(buffer, 0, buffer.Length)) > 0)
|
||||
dest.Write(buffer, 0, n);
|
||||
}
|
||||
#endif
|
||||
|
||||
//these methods were made so we dont have to do shit like false.ToString() or 0.ToString().
|
||||
//will still use ToString for converting variables, but converting values didn't feel right.
|
||||
|
||||
public static string BoolValue(bool value)
|
||||
{
|
||||
return value.ToString();
|
||||
}
|
||||
|
||||
public static string IntValue(int value)
|
||||
{
|
||||
return value.ToString();
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
#endregion
|
||||
|
|
|
|||
|
|
@ -1,3 +1,22 @@
|
|||
EDGE Snapshot v23.8544.14774.1
|
||||
Enhancements:
|
||||
- The Config System now has support for default values!
|
||||
- Missing values will now be replaced with default values, making the system more reliable.
|
||||
|
||||
Fixes:
|
||||
- The Award Badge API is now functional again.
|
||||
----------------------------------------------------------------------------
|
||||
EDGE Snapshot v23.8543.15186.1
|
||||
Enhancements:
|
||||
- Customization is now fixed and available.
|
||||
- You may have to delete your config/config_customization.ini in order for Novetus to save the proper default settings.
|
||||
|
||||
Fixes:
|
||||
- Fixed a bug where Hat #2 reports as Hat #1 in the character customization menu.
|
||||
|
||||
Known Issues:
|
||||
- The Hair O' Snow will not work with clients below 2010L due to it being saved with version 2 instead of version 1.0.
|
||||
----------------------------------------------------------------------------
|
||||
EDGE Snapshot v23.8542.41029.1
|
||||
Notes:
|
||||
- This snapshot begins the introduction of EDGE builds, snapshots with heavily unpolished, work-in-progress features coming to Novetus. The EDGE features will be listed in each EDGE snapshot.
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ public class AwardBadge : IWebProxyExtension
|
|||
void AddBadgeToDB(BadgeData data, bool Awarded = false)
|
||||
{
|
||||
CreateBadgeDatabaseIfNeeded();
|
||||
string BaseMapName = GlobalVars.UserConfiguration.MapPathSnip.Replace(@"maps\\", "").Replace(".rbxl", "").Replace(".rbxlx", "").Replace(".bz2", "");
|
||||
string BaseMapName = GlobalVars.UserConfiguration.ReadSetting("MapPathSnip").Replace(@"maps\\", "").Replace(".rbxl", "").Replace(".rbxlx", "").Replace(".bz2", "");
|
||||
string BadgeName = BaseMapName + "_" + data.BadgeId.ToString() + "_" + (data.BadgeName.Replace(" ", "-")) + "_" + data.BadgeCreatorName;
|
||||
ini.IniWriteValue(BadgeDatabaseSection, BadgeName, Awarded.ToString());
|
||||
}
|
||||
|
|
@ -61,7 +61,7 @@ public class AwardBadge : IWebProxyExtension
|
|||
result.BadgeId = BadgeID;
|
||||
result.BadgeName = BadgeID.ToString();
|
||||
result.BadgeCreatorName = "Unknown";
|
||||
string metaFile = (GlobalVars.UserConfiguration.MapPath.Replace(".rbxl", "").Replace(".rbxlx", "").Replace(".bz2", "") + MetadataFileExtension);
|
||||
string metaFile = (GlobalVars.UserConfiguration.ReadSetting("MapPath").Replace(".rbxl", "").Replace(".rbxlx", "").Replace(".bz2", "") + MetadataFileExtension);
|
||||
|
||||
if (GlobalVars.GameOpened == ScriptType.EasterEgg)
|
||||
{
|
||||
|
|
@ -95,7 +95,7 @@ public class AwardBadge : IWebProxyExtension
|
|||
return "0";
|
||||
}
|
||||
|
||||
return GlobalVars.UserConfiguration.PlayerName + " won " + creatorName + "'s \"" + badgeName + "\" award!";
|
||||
return GlobalVars.UserConfiguration.ReadSetting("PlayerName") + " won " + creatorName + "'s \"" + badgeName + "\" award!";
|
||||
}
|
||||
|
||||
public override string Name()
|
||||
|
|
|
|||
Loading…
Reference in New Issue