[+] 接入ET8服务端

[+] 接入ET8服务端
This commit is contained in:
ALEXTANG
2023-07-13 12:23:48 +08:00
parent e0be062006
commit 336d4b2eb9
1316 changed files with 130657 additions and 626 deletions

View File

@@ -0,0 +1,69 @@
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
namespace ET
{
[EntitySystemOf(typeof(ConsoleComponent))]
[FriendOf(typeof(ConsoleComponent))]
[FriendOf(typeof(ModeContex))]
public static partial class ConsoleComponentSystem
{
[EntitySystem]
private static void Awake(this ConsoleComponent self)
{
self.Start().Coroutine();
}
private static async ETTask Start(this ConsoleComponent self)
{
self.CancellationTokenSource = new CancellationTokenSource();
while (true)
{
try
{
ModeContex modeContex = self.GetComponent<ModeContex>();
string line = await Task.Factory.StartNew(() =>
{
Console.Write($"{modeContex?.Mode ?? ""}> ");
return Console.In.ReadLine();
}, self.CancellationTokenSource.Token);
line = line.Trim();
switch (line)
{
case "":
break;
case "exit":
self.RemoveComponent<ModeContex>();
break;
default:
{
string[] lines = line.Split(" ");
string mode = modeContex == null? lines[0] : modeContex.Mode;
IConsoleHandler iConsoleHandler = ConsoleDispatcher.Instance.Get(mode);
if (modeContex == null)
{
modeContex = self.AddComponent<ModeContex>();
modeContex.Mode = mode;
}
await iConsoleHandler.Run(self.Fiber(), modeContex, line);
break;
}
}
}
catch (Exception e)
{
Log.Console(e.ToString());
}
}
}
}
}