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
				LogManager.Configuration.Variables["appType"] = startConfig.AppType;
				LogManager.Configuration.Variables["appId"] = startConfig.AppId.ToString();
25 26 27

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

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

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

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

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