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
				IdGenerater.AppId = startConfig.AppId;

25
				LogManager.Configuration.Variables["appType"] = startConfig.AppType.ToString();
26
				LogManager.Configuration.Variables["appId"] = startConfig.AppId.ToString();
27 28 29

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

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

33
				InnerConfig innerConfig = startConfig.GetComponent<InnerConfig>();
34
				Game.Scene.AddComponent<NetInnerComponent, string, int>(innerConfig.Host, innerConfig.Port);
35
				Game.Scene.AddComponent<MessageDispatherComponent, AppType>(startConfig.AppType);
36

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

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