Пример #1
0
 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);
 }
Пример #2
0
        private static string GetDataFileExtension(RGSS_VERSION Version)
        {
            switch (Version)
            {
            case RGSS_VERSION.VA:
                return("rvdata2");

            case RGSS_VERSION.VX:
                return("rvdata");

            default:
                return("rxdata");
            }
        }
Пример #3
0
        private static string GetInitFuncName(RGSS_VERSION Version)
        {
            switch (Version)
            {
            case RGSS_VERSION.VA:
                return("RGSSInitialize3");

            case RGSS_VERSION.VX:
                return("RGSSInitialize2");

            default:
                return("RGSSInitialize");
            }
        }
Пример #4
0
 public RGSS(string path)
 {
     ProjectPath = path;
     Version     = LastRgssVersion;
     Refresh();
 }
Пример #5
0
        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);
        }