Beispiel #1
0
 private static void LoadModule(ModuleCollectionInfo info, List <Module> modules)
 {
     WebHelper.DownloadStringASync(info.url, delegate(string data)
     {
         Module new_module           = new Module();
         new_module.url              = info.url;
         new_module.author           = info.author;
         new_module.id               = info.id;
         new_module.available_module = Parser.ParseToObject <ModuleInfo>(data);
         bool module_installed       = LoadModuleLocationData(new_module);
         if (module_installed)
         {
             InitInstalledModule(new_module);
         }
         else if (Helper.ClassExists(new_module.available_module.classname))
         {
             CheckForUnregisteredInstall(new_module);
         }
         if (new_module.available_module.requirement != null)
         {
             new_module.available_requirement_fullfilled = new_module.available_module.requirement.Test();
         }
         if (new_module.available_requirement_fullfilled && new_module.installed_module != null && Helper.compareVersions(new_module.installed_module.version, new_module.available_module.version) == 1)
         {
             new_module.update_available = true;
         }
         modules.Add(new_module);
         UnityHelper.RepaintEditorWindow(typeof(Settings));
     });
 }
Beispiel #2
0
        //TODO save location data on install
        //     delete location data on remove
        //     destingish between public and private modules

        private static void InitInstalledModule(Module m)
        {
            bool remove = false;

            if (Helper.ClassExists(m.location_data.classname))
            {
                m.path = GetModuleDirectory(m);
                if (m.path != null)
                {
                    m.installed_module = Parser.ParseToObject <ModuleInfo>(FileHelper.ReadFileIntoString(FindModuleFilePath(m.path)));
                    string calced_guid = AssetDatabase.AssetPathToGUID(m.path);
                    if (m.location_data.guid != calced_guid)
                    {
                        SaveModuleLocationData(m, calced_guid);
                    }
                }
                else
                {
                    remove = true;
                }
            }
            if (remove)
            {
                FileHelper.RemoveValueFromFile(m.id, PATH.MODULES_LOCATION__DATA);
                m.location_data = null;
            }
        }
 public static void InstallRemoveModule(ModuleHeader module, bool install)
 {
     if (install && !Helper.ClassExists(module.available_module.classname))
     {
         InstallModule(module);
     }
     else if (!install && Helper.ClassExists(module.available_module.classname))
     {
         RemoveModule(module);
     }
 }
 private static void InitInstalledModule(ModuleHeader m)
 {
     if (Helper.ClassExists(m.available_module.classname))
     {
         string path = GetModuleDirectoryPath(m) + "/module.json";
         if (File.Exists(path))
         {
             m.installed_module = Parser.ParseToObject <ModuleInfo>(Helper.ReadFileIntoString(path));
         }
     }
 }
Beispiel #5
0
 private static void CheckForUnregisteredInstall(Module module)
 {
     if (Helper.ClassExists(module.available_module.classname))
     {
         module.path = ResolveFilesToDirectory(module.available_module.files.ToArray());
         if (module.path != null)
         {
             module.installed_module = Parser.ParseToObject <ModuleInfo>(FileHelper.ReadFileIntoString(FindModuleFilePath(module.path)));
             SaveModuleLocationData(module, AssetDatabase.AssetPathToGUID(module.path));
         }
     }
 }
Beispiel #6
0
        private void GUIModulesInstalation()
        {
            if (ModuleHandler.GetModules() == null)
            {
                return;
            }
            if (ModuleHandler.GetModules().Count > 0)
            {
                GUILayout.Label("Extra Modules", EditorStyles.boldLabel);
            }
            bool disabled = false;

            foreach (ModuleHeader module in ModuleHandler.GetModules())
            {
                if (module.is_being_installed_or_removed)
                {
                    disabled = true;
                }
            }
            EditorGUI.BeginDisabledGroup(disabled);
            foreach (ModuleHeader module in ModuleHandler.GetModules())
            {
                EditorGUILayout.BeginHorizontal();
                EditorGUI.BeginDisabledGroup(!module.available_requirement_fullfilled);
                EditorGUI.BeginChangeCheck();
                bool is_installed     = Helper.ClassExists(module.available_module.classname);
                bool update_available = is_installed;
                if (module.installed_module != null)
                {
                    update_available = Helper.compareVersions(module.installed_module.version, module.available_module.version) == 1;
                }
                string displayName = module.available_module.name;
                if (module.installed_module != null)
                {
                    displayName += " v" + module.installed_module.version;
                }

                bool install = GUILayout.Toggle(is_installed, new GUIContent(displayName, module.available_module.description), GUILayout.ExpandWidth(false));
                if (EditorGUI.EndChangeCheck())
                {
                    ModuleHandler.InstallRemoveModule(module, install);
                }
                if (update_available)
                {
                    if (GUILayout.Button("update to v" + module.available_module.version, GUILayout.ExpandWidth(false)))
                    {
                        ModuleHandler.UpdateModule(module);
                    }
                }
                EditorGUI.EndDisabledGroup();
                if (module.available_module.requirement != null && (update_available || !is_installed))
                {
                    GUIStyle requirementStyle = new GUIStyle(EditorStyles.label);
                    requirementStyle.normal.textColor = greenStyle.normal.textColor;
                    if (!module.available_requirement_fullfilled)
                    {
                        requirementStyle.normal.textColor = redInfostyle.normal.textColor;
                    }
                    GUILayout.Label("Requirements: " + module.available_module.requirement.ToString(), requirementStyle);
                }
                EditorGUILayout.EndHorizontal();
            }
            EditorGUI.EndDisabledGroup();
        }