示例#1
0
文件: AppStart_Init.cs 项目: liws/ETX
        public override async ETTask Run(EventType.AppStart args)
        {
            Game.Scene.AddComponent <ConfigComponent>();

            StartProcessConfig processConfig = StartProcessConfigCategory.Instance.Get(Game.Options.Process);

            Game.Scene.AddComponent <TimerComponent>();
            Game.Scene.AddComponent <OpcodeTypeComponent>();
            Game.Scene.AddComponent <MessageDispatcherComponent>();
            Game.Scene.AddComponent <CoroutineLockComponent>();
            // 发送普通actor消息
            Game.Scene.AddComponent <ActorMessageSenderComponent>();
            // 发送location actor消息
            Game.Scene.AddComponent <ActorLocationSenderComponent>();
            // 访问location server的组件
            Game.Scene.AddComponent <LocationProxyComponent>();
            Game.Scene.AddComponent <ActorMessageDispatcherComponent>();
            // 数值订阅组件
            Game.Scene.AddComponent <NumericWatcherComponent>();

            Game.Scene.AddComponent <NetInnerComponent, IPEndPoint>(processConfig.InnerIPPort);

            var processScenes = StartSceneConfigCategory.Instance.GetByProcess(Game.Options.Process);

            foreach (StartSceneConfig startConfig in processScenes)
            {
                await SceneFactory.Create(Game.Scene, startConfig.SceneId, startConfig.Zone, startConfig.Name, startConfig.Type, startConfig);
            }
        }
示例#2
0
        protected override async ETTask Run(EventType.AppStart args)
        {
            Game.Scene.AddComponent <ConfigComponent>();
            await ConfigComponent.Instance.LoadAsync();

            StartProcessConfig processConfig = StartProcessConfigCategory.Instance.Get(Game.Options.Process);

            Game.Scene.AddComponent <TimerComponent>();
            Game.Scene.AddComponent <OpcodeTypeComponent>();
            Game.Scene.AddComponent <MessageDispatcherComponent>();
            Game.Scene.AddComponent <SessionStreamDispatcher>();
            Game.Scene.AddComponent <CoroutineLockComponent>();
            // 发送普通actor消息
            Game.Scene.AddComponent <ActorMessageSenderComponent>();
            // 发送location actor消息
            Game.Scene.AddComponent <ActorLocationSenderComponent>();
            // 访问location server的组件
            Game.Scene.AddComponent <LocationProxyComponent>();
            Game.Scene.AddComponent <ActorMessageDispatcherComponent>();
            // 数值订阅组件
            Game.Scene.AddComponent <NumericWatcherComponent>();

            Game.Scene.AddComponent <NetThreadComponent>();

            Game.Scene.AddComponent <NavmeshComponent, Func <string, byte[]> >(RecastFileReader.Read);

            switch (Game.Options.AppType)
            {
            case AppType.Server:
            {
                Game.Scene.AddComponent <NetInnerComponent, IPEndPoint, int>(processConfig.InnerIPPort, SessionStreamDispatcherType.SessionStreamDispatcherServerInner);

                var processScenes = StartSceneConfigCategory.Instance.GetByProcess(Game.Options.Process);
                foreach (StartSceneConfig startConfig in processScenes)
                {
                    await SceneFactory.Create(Game.Scene, startConfig.Id, startConfig.InstanceId, startConfig.Zone, startConfig.Name,
                                              startConfig.Type, startConfig);
                }

                break;
            }

            case AppType.Watcher:
            {
                StartMachineConfig startMachineConfig = WatcherHelper.GetThisMachineConfig();
                WatcherComponent   watcherComponent   = Game.Scene.AddComponent <WatcherComponent>();
                watcherComponent.Start(Game.Options.CreateScenes);
                Game.Scene.AddComponent <NetInnerComponent, IPEndPoint, int>(NetworkHelper.ToIPEndPoint($"{startMachineConfig.InnerIP}:{startMachineConfig.WatcherPort}"), SessionStreamDispatcherType.SessionStreamDispatcherServerInner);
                break;
            }

            case AppType.GameTool:
                break;
            }

            if (Game.Options.Console == 1)
            {
                Game.Scene.AddComponent <ConsoleComponent>();
            }
        }
示例#3
0
 public override void EndInit()
 {
     for (int i = 0; i < list.Count; i++)
     {
         StartProcessConfig config = list[i];
         config.EndInit();
         this.dict.Add(config.Id, config);
     }
     this.AfterEndInit();
 }
示例#4
0
        protected override async ETTask Run(EventType.AppStart args)
        {
            Game.Scene.AddComponent <ConfigComponent>();

            ConfigComponent.GetAllConfigBytes = LoadConfigHelper.GetAllConfigBytes;
            ConfigComponent.GetOneConfigBytes = LoadConfigHelper.GetOneConfigBytes;
            await ConfigComponent.Instance.LoadAsync();

            StartProcessConfig processConfig = StartProcessConfigCategory.Instance.Get(Game.Options.Process);

            Game.Scene.AddComponent <TimerComponent>();
            Game.Scene.AddComponent <OpcodeTypeComponent>();
            Game.Scene.AddComponent <MessageDispatcherComponent>();
            Game.Scene.AddComponent <CoroutineLockComponent>();
            // 发送普通actor消息
            Game.Scene.AddComponent <ActorMessageSenderComponent>();
            // 发送location actor消息
            Game.Scene.AddComponent <ActorLocationSenderComponent>();
            // 访问location server的组件
            Game.Scene.AddComponent <LocationProxyComponent>();
            Game.Scene.AddComponent <ActorMessageDispatcherComponent>();
            // 数值订阅组件
            Game.Scene.AddComponent <NumericWatcherComponent>();

            Game.Scene.AddComponent <NetThreadComponent>();
            Game.Scene.AddComponent <NetInnerComponent, IPEndPoint>(processConfig.InnerIPPort);

            var processScenes = StartSceneConfigCategory.Instance.GetByProcess(Game.Options.Process);

            foreach (StartSceneConfig startConfig in processScenes)
            {
                await SceneFactory.Create(Game.Scene, startConfig.InstanceId, startConfig.Zone, startConfig.Name, startConfig.Type, startConfig);
            }

            switch (Game.Options.AppType)
            {
            case AppType.Server:
                break;

            case AppType.Watcher:
                break;
            }

            if (Game.Options.Console == 1)
            {
                Game.Scene.AddComponent <ConsoleComponent>();
            }
        }
示例#5
0
        public static Process StartProcess(int processId, int createScenes = 0)
        {
            StartProcessConfig startProcessConfig = StartProcessConfigCategory.Instance.Get(processId);
            const string       exe       = "dotnet";
            string             arguments = $"{startProcessConfig.AppName}.dll" +
                                           $" --Process={startProcessConfig.Id}" +
                                           $" --AppType={startProcessConfig.AppName}" +
                                           $" --Develop={Game.Options.Develop}" +
                                           $" --CreateScenes={createScenes}" +
                                           $" --LogLevel={Game.Options.LogLevel}";

            Log.Debug($"{exe} {arguments}");
            Process process = ProcessHelper.Run(exe, arguments);

            return(process);
        }
示例#6
0
        protected override async ETTask Run(EventType.AppStart args)
        {
            Game.Scene.AddComponent <ConfigComponent>();

            await ConfigComponent.Instance.LoadAsync();

            //读取StartProcessConfig中id为Game.Options.Process(这里值为1)的整行配置
            //ET6.0由于使用了protobuffer作为导表工具,所以请去Excel文件夹查看原数据
            StartProcessConfig processConfig = StartProcessConfigCategory.Instance.Get(GlobalDefine.Options.Process);

            Game.Scene.AddComponent <TimerComponent>();
            Game.Scene.AddComponent <OpcodeTypeComponent>();
            Game.Scene.AddComponent <MessageDispatcherComponent>();
            Game.Scene.AddComponent <CoroutineLockComponent>();
            // 发送普通actor消息
            Game.Scene.AddComponent <ActorMessageSenderComponent>();
            // 发送location actor消息
            Game.Scene.AddComponent <ActorLocationSenderComponent>();
            // 访问location server的组件
            Game.Scene.AddComponent <LocationProxyComponent>();
            Game.Scene.AddComponent <ActorMessageDispatcherComponent>();
            // 数值订阅组件
            Game.Scene.AddComponent <NumericWatcherComponent>();

            Game.Scene.AddComponent <NetThreadComponent>();

            //根据自身的类型来决定要添加的组件
            switch (GlobalDefine.Options.AppType)
            {
            case AppType.Server:
            {
                //是一个Sever就添加一个内网组件,用于内网通信
                Game.Scene.AddComponent <NetInnerComponent, IPEndPoint>(processConfig.InnerIPPort);

                //以GloabDefine.Options.Process为凭证获取自己要添加的Scene
                //注意在StartSceneConfig.xlsx中有两份配置,第一份是给Server用的,第二份是给Robot用的
                List <StartSceneConfig> processScenes = StartSceneConfigCategory.Instance.GetByProcess(GlobalDefine.Options.Process);
                foreach (StartSceneConfig startConfig in processScenes)
                {
                    await SceneFactory.Create(Game.Scene, startConfig.Id, startConfig.InstanceId, startConfig.Zone, startConfig.Name,
                                              startConfig.Type, startConfig);
                }

                break;
            }

            case AppType.Watcher:
            {
                //是一个守护进程就额外添加一个WatcherComponent,守护进程可以用来负责拉起和管理全部的进程
                StartMachineConfig startMachineConfig = WatcherHelper.GetThisMachineConfig();
                WatcherComponent   watcherComponent   = Game.Scene.AddComponent <WatcherComponent>();
                watcherComponent.Start(GlobalDefine.Options.CreateScenes);
                Game.Scene.AddComponent <NetInnerComponent, IPEndPoint>(NetworkHelper.ToIPEndPoint($"{startMachineConfig.InnerIP}:{startMachineConfig.WatcherPort}"));
                break;
            }

            case AppType.GameTool:
                break;
            }

            if (GlobalDefine.Options.Console == 1)
            {
                Game.Scene.AddComponent <ConsoleComponent>();
            }
        }