private static string GetAppName(string path) { foreach (KeyValuePair <string, RGSS_VERSION> kv in ProjectExtensions) { if (File.Exists(Path.Combine(path, kv.Key))) { LastRgssVersion = kv.Value; return(Path.GetFileNameWithoutExtension(kv.Key)); } } LastRgssVersion = RGSS_VERSION.Error; return(String.Empty); }
private static string GetDataFileExtension(RGSS_VERSION Version) { switch (Version) { case RGSS_VERSION.VA: return("rvdata2"); case RGSS_VERSION.VX: return("rvdata"); default: return("rxdata"); } }
private static string GetInitFuncName(RGSS_VERSION Version) { switch (Version) { case RGSS_VERSION.VA: return("RGSSInitialize3"); case RGSS_VERSION.VX: return("RGSSInitialize2"); default: return("RGSSInitialize"); } }
public RGSS(string path) { ProjectPath = path; Version = LastRgssVersion; Refresh(); }
public static bool IsValidProject(string path) { Reason = ErrorReason.NoError; LastRgssVersion = RGSS_VERSION.Error; if (!Directory.Exists(path)) { Reason = ErrorReason.NotDirectory; return(false); } string AppName = GetAppName(path); if (LastRgssVersion == RGSS_VERSION.Error) { Reason = ErrorReason.NotFoundProj; return(false); } string IniFilePath = Path.Combine(path, $"{AppName}.ini"); if (!File.Exists(IniFilePath)) { Reason = ErrorReason.NotFoundIni; LastRgssVersion = RGSS_VERSION.Error; return(false); } string DllFile = ReadIni("Game", "Library", IniFilePath); string DllFilePath = Path.Combine(path, DllFile); if (!File.Exists(DllFilePath)) { Reason = ErrorReason.NotFoundDll; LastRgssVersion = RGSS_VERSION.Error; return(false); } IntPtr DllHandle = LoadLibrary(DllFilePath); if (DllHandle == IntPtr.Zero) { Reason = ErrorReason.ErrorLoadDll; LastRgssVersion = RGSS_VERSION.Error; return(false); } IntPtr addr = GetProcAddress(DllHandle, GetInitFuncName(LastRgssVersion)); if (addr == IntPtr.Zero) { Reason = ErrorReason.ErrorLoadDll; LastRgssVersion = RGSS_VERSION.Error; DllHandle = IntPtr.Zero; return(false); } string DataFolder = Path.Combine(path, "Data"); string MapInfosFile = Path.Combine(DataFolder, $"MapInfos.{GetDataFileExtension(LastRgssVersion)}"); string SystemFile = Path.Combine(DataFolder, $"System.{GetDataFileExtension(LastRgssVersion)}"); if (!(File.Exists(MapInfosFile) && File.Exists(SystemFile))) { Reason = ErrorReason.NotFoundData; LastRgssVersion = RGSS_VERSION.Error; return(false); } return(true); }