RPGServerManager.cs 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. 
  2. using DeepCore.Log;
  3. using DeepCore.Reflection;
  4. using DeepCrystal.RPC;
  5. namespace DeepMMO.Server
  6. {
  7. public abstract class RPGServerManager
  8. {
  9. //--------------------------------------------------------------------------------------
  10. #region Singleton
  11. private static readonly object lock_init = new object();
  12. private static bool init_done = false;
  13. private static RPGServerManager instance;
  14. public static bool IsInitDone { get { return init_done; } }
  15. public static RPGServerManager Instance
  16. {
  17. get
  18. {
  19. if (instance == null)
  20. {
  21. lock (lock_init)
  22. {
  23. if (!init_done)
  24. {
  25. var config = IService.GlobalConfig;
  26. instance = ReflectionUtil.CreateInterface<RPGServerManager>(GlobalConfig.RPGServerManager);
  27. instance.Init();
  28. init_done = true;
  29. }
  30. }
  31. }
  32. return instance;
  33. }
  34. }
  35. #endregion
  36. //--------------------------------------------------------------------------------------
  37. public virtual AccessPolicy Access { get; protected set; }
  38. public virtual ServerPassport Passport { get; protected set; }
  39. //--------------------------------------------------------------------------------------
  40. public RPGServerManager()
  41. {
  42. instance = this;
  43. }
  44. public virtual void Init()
  45. {
  46. GlobalConfig.LoadAll();
  47. this.Access = CreateAccessPolicy();
  48. this.Passport = CreatePassport();
  49. }
  50. public virtual AccessPolicy CreateAccessPolicy()
  51. {
  52. return new AccessPolicy();
  53. }
  54. public virtual ServerPassport CreatePassport()
  55. {
  56. return new ServerPassport();
  57. }
  58. // public virtual Persistence.AccountPersistenceOperator CreateAccountPersistenceOperator()
  59. // {
  60. // return new Persistence.AccountPersistenceOperator();
  61. // }
  62. // public virtual Persistence.RolePersistenceOperator CreateRolePersistenceOperator(string roleID)
  63. // {
  64. // return new Persistence.RolePersistenceOperator(roleID);
  65. // }
  66. }
  67. }