예제 #1
0
 // first you start the server passing the engine
 public void StartServer(IJUMPGameServerEngine gameServerEngine, List <IJUMPBot> bots, bool isOfflinePlayMode)
 {
     GameServerEngine  = gameServerEngine;
     Bots              = bots;
     IsOfflinePlayMode = isOfflinePlayMode;
     Players           = new List <IJUMPPlayer>();
 }
예제 #2
0
        private void DoStartGameServer()
        {
            LogInfo(() => FormatLogMessage("JUMP.DoStartGameServer. Offline:{0}", IsOfflinePlayMode));

            if (!IsOfflinePlayMode && !PhotonNetwork.isMasterClient)
            {
                LogError(() => FormatLogMessage("Trying to start a game server not on the master client"));
                return;
            }

            LogInfo(() => FormatLogMessage("Starting a game server with Server of class: {0} and bots of class {1}", GameServerEngineTypeName, BotTypeName));
            if (!CheckType <IJUMPGameServerEngine>(GameServerEngineTypeName, "GameServerEngineTypeName"))
            {
                return;
            }
            if (!CheckType <IJUMPBot>(BotTypeName, "BotTypeName"))
            {
                return;
            }

            // Create the Engine
            IJUMPGameServerEngine serverEngineInstance = Activator.CreateInstance(Type.GetType(GameServerEngineTypeName)) as IJUMPGameServerEngine;

            List <IJUMPBot> bots = new List <IJUMPBot>();

            if (IsOfflinePlayMode)
            {
                // And create the Bots
                bots = System.Linq.Enumerable.Repeat(Activator.CreateInstance(Type.GetType(BotTypeName)) as IJUMPBot, JUMPOptions.NumPlayers - 1).ToList();
                bots.ForEach(x =>
                {
                    x.Engine = serverEngineInstance;
                });
            }

            // Start the server
            GameServer.StartServer(serverEngineInstance, bots, IsOfflinePlayMode);
        }