using System; using Base; using Model; using NLog; namespace App { internal static class Program { private static void Main(string[] args) { try { Game.ComponentEventManager.Register("Model", typeof(Game).Assembly); Game.ComponentEventManager.Register("Controller", DllHelper.GetController()); Options options = Game.Scene.AddComponent().Options; StartConfig startConfig = Game.Scene.AddComponent(options.Config, options.AppId).StartConfig; IdGenerater.AppId = options.AppId; LogManager.Configuration.Variables["appType"] = startConfig.AppType.ToString(); LogManager.Configuration.Variables["appId"] = startConfig.AppId.ToString(); Log.Info("server start........................"); Game.Scene.AddComponent(); Game.Scene.AddComponent(); Game.Scene.AddComponent(startConfig.AppType); // 根据不同的AppType添加不同的组件 OuterConfig outerConfig = startConfig.GetComponent(); InnerConfig innerConfig = startConfig.GetComponent(); ClientConfig clientConfig = startConfig.GetComponent(); switch (startConfig.AppType) { case AppType.Manager: Game.Scene.AddComponent(innerConfig.Host, innerConfig.Port); Game.Scene.AddComponent(outerConfig.Host, outerConfig.Port); Game.Scene.AddComponent(); break; case AppType.Realm: Game.Scene.AddComponent(innerConfig.Host, innerConfig.Port); Game.Scene.AddComponent(outerConfig.Host, outerConfig.Port); Game.Scene.AddComponent(); break; case AppType.Gate: Game.Scene.AddComponent(innerConfig.Host, innerConfig.Port); Game.Scene.AddComponent(outerConfig.Host, outerConfig.Port); Game.Scene.AddComponent(); break; case AppType.AllServer: Game.Scene.AddComponent(innerConfig.Host, innerConfig.Port); Game.Scene.AddComponent(outerConfig.Host, outerConfig.Port); Game.Scene.AddComponent(); Game.Scene.AddComponent(); Game.Scene.AddComponent(); break; case AppType.Benchmark: Game.Scene.AddComponent(); Game.Scene.AddComponent(clientConfig.Address); break; default: throw new Exception($"命令行参数没有设置正确的AppType: {startConfig.AppType}"); } while (true) { try { Game.ComponentEventManager.Update(); } catch (Exception e) { Log.Error(e.ToString()); } } } catch (Exception e) { Log.Error(e.ToString()); } } } }