BotFactory.cs 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. using DeepCore.Game3D.Slave;
  2. using DeepCore.GameData;
  3. using DeepCore.Reflection;
  4. using DeepMMO.Client.BotTest.Runner;
  5. using DeepMMO.Data;
  6. using System;
  7. using System.Collections.Generic;
  8. namespace DeepMMO.Client.BotTest
  9. {
  10. public abstract class BotFactory
  11. {
  12. public static BotFactory Instance { get; private set; }
  13. public BotFactory()
  14. {
  15. Instance = this;
  16. BotModule.InitRunnerModules();
  17. }
  18. public abstract ZoneSlaveFactory ZoneFactory { get; }
  19. public abstract ZoneDataFactory DataFactory { get; }
  20. public abstract RPGClientTemplateManager ClientTemplates { get; }
  21. public abstract RPGClientBattleManager BattleManager { get; }
  22. public abstract void Init(BotConfig config);
  23. public virtual AddBotConfig CreateAddBotConfig()
  24. {
  25. var ret = new AddBotConfig();
  26. return ret;
  27. }
  28. public virtual BotConfig CreateBotConfig()
  29. {
  30. return new BotConfig();
  31. }
  32. public virtual BotRunner CreateBotRunner(BotConfig cfg, AddBotConfig add, string account)
  33. {
  34. var c = new RPGClient(this.DataFactory.MessageCodec, new ClientInfo() { sdkName = "OneGame" });
  35. return new BotRunner(c, cfg, add, account);
  36. }
  37. public virtual List<Type> GetModuleTypes()
  38. {
  39. var ret = new List<Type>();
  40. foreach (var mt in ReflectionUtil.GetNoneVirtualSubTypes(typeof(BotModule), true))
  41. {
  42. ret.Add(mt);
  43. }
  44. return ret;
  45. }
  46. }
  47. }