Program.cs 2.1 KB
Newer Older
1 2 3
using System;
using Base;
using Model;
4
using NLog;
5 6 7 8
using Object = Base.Object;

namespace App
{
T
tanghai 已提交
9
	internal static class Program
10
	{
T
tanghai 已提交
11
		private static void Main(string[] args)
12 13 14
		{
			try
			{
15 16
				BsonClassMapRegister.Register();

17
				Object.ObjectManager.Register("Base", typeof(Game).Assembly);
T
tanghai 已提交
18
				Object.ObjectManager.Register("Model", typeof(ErrorCode).Assembly);
19
				Object.ObjectManager.Register("Controller", DllHelper.GetController());
T
tanghai 已提交
20

21
				StartConfig startConfig = Game.Scene.AddComponent<StartConfigComponent, string[]>(args).MyConfig;
22 23 24 25 26
				LogManager.Configuration.Variables["appType"] = startConfig.Options.AppType;
				LogManager.Configuration.Variables["appId"] = startConfig.Options.Id.ToString("D4");

				Log.Info("server start........................");

T
tanghai 已提交
27 28
				Game.Scene.AddComponent<EventComponent>();
				Game.Scene.AddComponent<TimerComponent>();
29 30 31 32 33

				InnerConfig innerConfig = startConfig.Config.GetComponent<InnerConfig>();
				Game.Scene.AddComponent<NetInnerComponent, string, int>(innerConfig.Host, innerConfig.Port);
				Game.Scene.AddComponent<MessageDispatherComponent, string>(startConfig.Options.AppType);

T
tanghai 已提交
34
				// 根据不同的AppType添加不同的组件
35 36
				OuterConfig outerConfig = startConfig.Config.GetComponent<OuterConfig>();
				switch (startConfig.Options.AppType)
T
tanghai 已提交
37
				{
38
					case AppType.Manager:
39
						Game.Scene.AddComponent<NetOuterComponent, string, int>(outerConfig.Host, outerConfig.Port);
40 41 42
						Game.Scene.AddComponent<AppManagerComponent>();
						break;
					case AppType.Realm:
43
						Game.Scene.AddComponent<NetOuterComponent, string, int>(outerConfig.Host, outerConfig.Port);
44
						Game.Scene.AddComponent<RealmGateAddressComponent>();
T
tanghai 已提交
45
						break;
46
					case AppType.Gate:
47
						Game.Scene.AddComponent<NetOuterComponent, string, int>(outerConfig.Host, outerConfig.Port);
48
						Game.Scene.AddComponent<GateSessionKeyComponent>();
T
tanghai 已提交
49 50
						break;
					default:
51
						throw new Exception($"命令行参数没有设置正确的AppType: {startConfig.Options.AppType}");
T
tanghai 已提交
52 53
				}

54 55 56 57 58 59 60 61 62 63 64 65
				while (true)
				{
					Object.ObjectManager.Update();
				}
			}
			catch (Exception e)
			{
				Log.Error(e.ToString());
			}
		}
	}
}