コード例 #1
0
    protected virtual void StartSpawned()
    {
        Msf.Server.Spawners.RegisterSpawnedProcess(Msf.Args.SpawnId, Msf.Args.SpawnCode, (controller, error) =>
        {
            if (controller == null)
            {
                logger.Error("Failed to register a spawned process: " + error);
                throw new Exception("Failed to register a spawned process: " + error);
            }

            // Set the static object, so that it can be used when creating a room
            IOGamesRoom.SpawnTaskController = controller;

            if (Msf.Args.IsProvided(Msf.Args.Names.WebGl))
            {
                networkManager.useWebSockets = true;
            }

            var prop = controller.Properties;
            // Use the assigned port from cmd args
            networkManager.networkPort = Msf.Args.AssignedPort;

            // Setup game rules/configs
            var ioGamesModule            = FindObjectOfType <IOGamesModule>();
            BaseNetworkGameRule gameRule = null;
            if (prop.ContainsKey(IOGamesModule.GameRuleNameKey))
            {
                gameRule = ioGamesModule.GetGameRule(prop[IOGamesModule.GameRuleNameKey]);
                if (gameRule != null)
                {
                    gameRule.ReadConfigs(prop);
                }
            }
            networkManager.gameRule = gameRule;

            if (prop.ContainsKey(MsfDictKeys.MaxPlayers))
            {
                networkManager.maxConnections = int.Parse(prop[MsfDictKeys.MaxPlayers]);
            }

            // Start the server
            networkManager.StartServerAndQuitIfCannotListen();
        });
        return;
    }