1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- using CommonAI.Zone;
- using CommonAI.ZoneServer;
- using CommonLang.IO;
- using CommonLang.Log;
- using MPQ.FileSystem;
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Reflection;
- using System.Windows.Forms;
- namespace CommonAIServer.Connector
- {
- public abstract class TestClientLoader
- {
- public TestClientLoader()
- {
- }
- public void Init(DirectoryInfo mpq_path)
- {
- LoadDlls();
- Resource.SetLoader(new ResourceLoader(mpq_path));
- }
- public abstract CreateUnitInfoR2B GenUnitInfoR2B(int unitID);
- public abstract Type ZoneFactoryType { get; }
- public class ResourceLoader : DefaultResourceLoader
- {
- private Logger log = LoggerFactory.GetLogger("ResourceLoader");
- private MPQFileSystem mFileSystem;
- public ResourceLoader(DirectoryInfo dir)
- {
- mFileSystem = new MPQFileSystem();
- mFileSystem.init(dir);
- }
- public override byte[] LoadData(string path)
- {
- byte[] ret = mFileSystem.getData(path);
- if (ret == null)
- {
- ret = base.LoadData(path);
- }
- return ret;
- }
- public override bool ExistData(string path)
- {
- if (mFileSystem.findEntry(path) != null)
- {
- return true;
- }
- return base.ExistData(path);
- }
- }
- public static void LoadDlls()
- {
- AppDomain domain = AppDomain.CurrentDomain;
- FileInfo exefile = new FileInfo(Application.ExecutablePath);
- foreach (FileInfo file in exefile.Directory.GetFiles())
- {
- if (file.Extension.ToLower().Equals(".dll"))
- {
- try
- {
- Assembly asm = Assembly.ReflectionOnlyLoadFrom(file.FullName);
- //Assembly asm = Assembly.ReflectionOnlyLoad(File.ReadAllBytes(file.FullName));
- if (!ExistAssembly(domain, asm.FullName))
- {
- domain.Load(asm.FullName);
- }
- }
- catch (Exception err) { }
- }
- }
- }
- private static bool ExistAssembly(AppDomain domain, string name)
- {
- foreach (Assembly asm in domain.GetAssemblies())
- {
- if (asm.FullName.Equals(name))
- {
- return true;
- }
- }
- return false;
- }
- }
- }
|