private void RemoveDependencies(AgentManifest mans) { if (mans.hasResources()) { ResFolder resfolder = new ResFolder(mans.ResFolder); resfolder.ClearHierarchyFrom(Manifest.ResFolder); } ResFolder libfolder = new ResFolder(mans.LibraryFolder); libfolder.ClearHierarchyFrom(Manifest.LibsFolder); foreach (ManifestMetaData mmd in mans.MetaData) { if (manifest.application.hasMetaData(mmd.name)) { manifest.application.meta_data.Remove(manifest.application.getMetaData(mmd.name)); } } }
public ResFolder(ResFolder parent, string name) { this.parent = parent; this.name = name; string path = FilePath; string[] filespath = Directory.GetFiles(path); files = new string[filespath.Length]; for (int i = 0; i < files.Length; i++) files[i] = filespath[i].Substring(path.Length); string[] dirs = Directory.GetDirectories(path); folders = new ResFolder[dirs.Length]; for (int i = 0; i < folders.Length; i++) folders[i] = new ResFolder(this, dirs[i].Substring(path.Length)); }
public ResFolder(string path) { parent = null; name = path; string[] filespath = Directory.GetFiles(path); files = new string[filespath.Length]; for (int i = 0; i < files.Length; i++) files[i] = filespath[i].Substring(path.Length); string[] dirs = Directory.GetDirectories(path); folders = new ResFolder[dirs.Length]; for (int i = 0; i < folders.Length; i++) folders[i] = new ResFolder(this, dirs[i].Substring(path.Length)); }
private void RemoveDependencies(AgentManifest mans) { if (mans.hasResources()) { ResFolder resfolder = new ResFolder(mans.ResFolder); resfolder.ClearHierarchyFrom(Manifest.ResFolder); } ResFolder libfolder = new ResFolder(mans.LibraryFolder); libfolder.ClearHierarchyFrom(Manifest.LibsFolder); foreach (ManifestMetaData mmd in mans.MetaData) { if (manifest.application.hasMetaData(mmd.name)) manifest.application.meta_data.Remove(manifest.application.getMetaData(mmd.name)); } }
private void AddPluginDependencies(AgentVersion plug) { foreach (ManifestMetaData source in plug.MetaData) { if (!manifest.application.hasMetaData(source.name)) manifest.application.addMetaData().name = source.name; manifest.application.getMetaData(source.name).value = source.value; if (source.resource != "NOT SET") manifest.application.getMetaData(source.name).resource = source.resource; } foreach (ManifestActivity act in plug.ManifestSource.Activity) { if (!manifest.application.hasActivity(act.name)) manifest.application.addActivity().name = act.name; CopyActivityData(act, manifest.application.getActivity(act.name)); } foreach (ManifestMetaData hardmmd in plug.ManifestSource.MetaData) { if (ManifestResource.isResourceString(hardmmd.value)) { if (!manifest.application.hasMetaData(hardmmd.name)) manifest.application.addMetaData().name = hardmmd.name; manifest.application.getMetaData(hardmmd.name).value = hardmmd.value; if (hardmmd.resource != "NOT SET") manifest.application.getMetaData(hardmmd.name).resource = hardmmd.resource; } } foreach (ManifestPermission perm in plug.ManifestSource.Permission) { if (!manifest.hasPermission(perm.name)) manifest.addPermission().name = perm.name; } for (int i = 0; i < plug.ManifestSource.Strings.Count; i++) { if (strings.hasName(plug.Strings.strings[i].name)) strings.setValue(plug.Strings.strings[i].name, plug.Strings.strings[i]); else strings.addString(plug.Strings.strings[i].name, plug.Strings.strings[i]); } if (!System.IO.Directory.Exists(Manifest.LibsFolder)) System.IO.Directory.CreateDirectory(Manifest.LibsFolder); CopyLibraryFiles(System.IO.Directory.GetFiles(plug.ManifestSource.LibraryFolder)); if (plug.ManifestSource.hasResources()) { ResFolder resfolder = new ResFolder(plug.ManifestSource.ResFolder); resfolder.CopyHierarchyTo(Manifest.ResFolder); } }
private void AddPluginDependencies(AgentVersion plug) { foreach (ManifestMetaData source in plug.MetaData) { if (!manifest.application.hasMetaData(source.name)) { manifest.application.addMetaData().name = source.name; } manifest.application.getMetaData(source.name).value = source.value; if (source.resource != "NOT SET") { manifest.application.getMetaData(source.name).resource = source.resource; } } foreach (ManifestActivity act in plug.ManifestSource.Activity) { if (!manifest.application.hasActivity(act.name)) { manifest.application.addActivity().name = act.name; } CopyActivityData(act, manifest.application.getActivity(act.name)); } foreach (ManifestMetaData hardmmd in plug.ManifestSource.MetaData) { if (ManifestResource.isResourceString(hardmmd.value)) { if (!manifest.application.hasMetaData(hardmmd.name)) { manifest.application.addMetaData().name = hardmmd.name; } manifest.application.getMetaData(hardmmd.name).value = hardmmd.value; if (hardmmd.resource != "NOT SET") { manifest.application.getMetaData(hardmmd.name).resource = hardmmd.resource; } } } foreach (ManifestPermission perm in plug.ManifestSource.Permission) { if (!manifest.hasPermission(perm.name)) { manifest.addPermission().name = perm.name; } } for (int i = 0; i < plug.ManifestSource.Strings.Count; i++) { if (strings.hasName(plug.Strings.strings[i].name)) { strings.setValue(plug.Strings.strings[i].name, plug.Strings.strings[i]); } else { strings.addString(plug.Strings.strings[i].name, plug.Strings.strings[i]); } } if (!System.IO.Directory.Exists(Manifest.LibsFolder)) { System.IO.Directory.CreateDirectory(Manifest.LibsFolder); } CopyLibraryFiles(System.IO.Directory.GetFiles(plug.ManifestSource.LibraryFolder)); if (plug.ManifestSource.hasResources()) { ResFolder resfolder = new ResFolder(plug.ManifestSource.ResFolder); resfolder.CopyHierarchyTo(Manifest.ResFolder); } }
//必须约束T继承自UnityEngine.Object,当然由于没有歧义性,没有引用System,只写Object也行 public T Load <T>(ResFolder folder, string path, bool toHash = false, bool isOneScene = false) where T : Object { StringBuilder totalPath = new StringBuilder(); Hashtable resHash = new Hashtable(); if (isOneScene) { resHash = ResHashScene; } else { resHash = ResHashScenes; } switch (folder) { case ResFolder.Forge: totalPath.Append("Forge/"); break; case ResFolder.Res: totalPath.Append("Bag/Res/"); break; case ResFolder.Sword: totalPath.Append("Bag/Sword/"); break; case ResFolder.Skill: totalPath.Append("Bag/Skill/"); break; case ResFolder.SkillAnd: totalPath.Append("Bag/SkillAnd/"); break; case ResFolder.Ornament: totalPath.Append("Bag/Ornament/"); break; case ResFolder.Item: totalPath.Append("Bag/Item/"); break; case ResFolder.SelectSword: totalPath.Append("SelectSword/"); break; case ResFolder.SelectSwordSlim: totalPath.Append("SelectSwordSlim/"); break; case ResFolder.Head: totalPath.Append("Head/"); break; case ResFolder.RankingList: totalPath.Append("RankingList/"); break; case ResFolder.SwordFull: totalPath.Append("Bag/SwordFull/"); break; case ResFolder.Team: totalPath.Append("TeamSword/"); break; case ResFolder.TeamMark: totalPath.Append("Bag/TeamMark/"); break; } totalPath.Append(path); if (!resHash.Contains(path)) { T t = Resources.Load <T>(totalPath.ToString()); if (toHash) { resHash[path] = t; } return(t); } else { return(resHash[path] as T); } }