예제 #1
0
 public void Initialize(LocatorFlow locator)
 {
     locator.DevAuthToken = settingsProviders
                            .Select(provider => provider.GetDevAuthToken())
                            .FilterOption()
                            .FirstOrDefault() ?? string.Empty;
 }
        protected virtual IConnectionHandlerBuilder GetConnectionHandlerBuilder()
        {
            IConnectionFlow connectionFlow;
            var             connectionParams = CreateConnectionParameters(WorkerUtils.UnityClient);
            var             workerId         = CreateNewWorkerId(WorkerUtils.UnityClient);

            if (Application.isEditor)
            {
                connectionFlow = new ReceptionistFlow(workerId);
            }
            else
            {
                var initializer = new CommandLineConnectionFlowInitializer();

                switch (initializer.GetConnectionService())
                {
                case ConnectionService.Receptionist:
                    connectionFlow = new ReceptionistFlow(workerId, initializer);
                    break;

                case ConnectionService.Locator:
                    connectionParams.Network.UseExternalIp = true;
                    connectionFlow = new LocatorFlow(initializer);
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }

            return(new SpatialOSConnectionHandlerBuilder()
                   .SetConnectionFlow(connectionFlow)
                   .SetConnectionParameters(connectionParams));
        }
        public void Initialize_alpha_locator_flow_correctly()
        {
            var initializer = new CommandLineConnectionFlowInitializer(GetBaseArgs());
            var flow        = new LocatorFlow(initializer);

            Assert.AreEqual(GetBaseArgs()[RuntimeConfigNames.LocatorHost], flow.LocatorHost);
            Assert.AreEqual(GetBaseArgs()[RuntimeConfigNames.LoginToken], flow.LoginToken);
            Assert.AreEqual(GetBaseArgs()[RuntimeConfigNames.PlayerIdentityToken], flow.PlayerIdentityToken);
        }
        protected override IConnectionHandlerBuilder GetConnectionHandlerBuilder()
        {
            var connectionParams = new ConnectionParameters
            {
                DefaultComponentVtable = new ComponentVtable(),
                WorkerType             = WorkerUtils.UnityClient
            };

            var builder = new SpatialOSConnectionHandlerBuilder()
                          .SetConnectionParameters(connectionParams);

            if (UseSessionFlow)
            {
                connectionParams.Network.UseExternalIp = true;
                builder.SetConnectionFlow(new ChosenDeploymentAlphaLocatorFlow(deployment,
                                                                               new SessionConnectionFlowInitializer(new CommandLineConnectionFlowInitializer())));
            }
            else if (Application.isEditor)
            {
                builder.SetConnectionFlow(new ReceptionistFlow(CreateNewWorkerId(WorkerUtils.UnityClient)));
            }
            else
            {
                var initializer = new CommandLineConnectionFlowInitializer();

                switch (initializer.GetConnectionService())
                {
                case ConnectionService.Receptionist:
                    var rec = new ReceptionistFlow(CreateNewWorkerId(WorkerUtils.UnityClient),
                                                   initializer);

                    connectionParams.Network.UseExternalIp = true;
                    rec.ReceptionistHost = "192.168.20.238";

                    builder.SetConnectionFlow(rec);
                    break;

                case ConnectionService.Locator:
                    connectionParams.Network.UseExternalIp = true;
                    var loc = new LocatorFlow(initializer);
                    builder.SetConnectionFlow(loc);
                    break;

                case ConnectionService.AlphaLocator:
                    connectionParams.Network.UseExternalIp = true;
                    builder.SetConnectionFlow(new AlphaLocatorFlow(initializer));
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }

            return(builder);
        }
        public void Initialize_locator_sets_dev_auth_flow_correctly()
        {
            {
                var initializer = new CommandLineConnectionFlowInitializer(GetBaseArgs());
                var flow        = new LocatorFlow(initializer);
                Assert.IsFalse(flow.UseDevAuthFlow);
            }

            {
                var args = GetBaseArgs();
                args.Remove(RuntimeConfigNames.PlayerIdentityToken);
                args.Remove(RuntimeConfigNames.LoginToken);

                var initializer = new CommandLineConnectionFlowInitializer(args);
                var flow        = new LocatorFlow(initializer);
                Assert.IsTrue(flow.UseDevAuthFlow);
            }
        }