CreateRobotConsoleHandler.cs 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. using System;
  2. using System.Collections.Generic;
  3. using CommandLine;
  4. namespace ET.Server
  5. {
  6. [ConsoleHandler(ConsoleMode.CreateRobot)]
  7. public class CreateRobotConsoleHandler: IConsoleHandler
  8. {
  9. public async ETTask Run(ModeContex contex, string content)
  10. {
  11. switch (content)
  12. {
  13. case ConsoleMode.CreateRobot:
  14. Log.Console("CreateRobot args error!");
  15. break;
  16. default:
  17. CreateRobotArgs options = null;
  18. Parser.Default.ParseArguments<CreateRobotArgs>(content.Split(' '))
  19. .WithNotParsed(error => throw new Exception($"CreateRobotArgs error!"))
  20. .WithParsed(o => { options = o; });
  21. // 获取当前进程的RobotScene
  22. using (ListComponent<StartSceneConfig> thisProcessRobotScenes = ListComponent<StartSceneConfig>.Create())
  23. {
  24. List<StartSceneConfig> robotSceneConfigs = StartSceneConfigCategory.Instance.Robots;
  25. foreach (StartSceneConfig robotSceneConfig in robotSceneConfigs)
  26. {
  27. if (robotSceneConfig.Process != Options.Instance.Process)
  28. {
  29. continue;
  30. }
  31. thisProcessRobotScenes.Add(robotSceneConfig);
  32. }
  33. // 创建机器人
  34. for (int i = 0; i < options.Num; ++i)
  35. {
  36. int index = i % thisProcessRobotScenes.Count;
  37. StartSceneConfig robotSceneConfig = thisProcessRobotScenes[index];
  38. Scene robotScene = ServerSceneManagerComponent.Instance.Get(robotSceneConfig.Id);
  39. RobotManagerComponent robotManagerComponent = robotScene.GetComponent<RobotManagerComponent>();
  40. Scene robot = await robotManagerComponent.NewRobot(Options.Instance.Process * 10000 + i);
  41. robot.AddComponent<AIComponent, int>(1);
  42. Log.Console($"create robot {robot.Zone}");
  43. await TimerComponent.Instance.WaitAsync(2000);
  44. }
  45. }
  46. break;
  47. }
  48. contex.Parent.RemoveComponent<ModeContex>();
  49. await ETTask.CompletedTask;
  50. }
  51. }
  52. }