private void OnDestroy()
        {
            m_serializer = null;
            if (m_gState != null)
            {
                m_gState.SetValue("LocalGameServer.m_replay", null);
            }

            if (m_players != null)
            {
                m_players.Remove(m_neutralPlayer.Id);
            }

            if (m_room != null)
            {
                m_room.Players.Remove(m_neutralPlayer.Id);
            }

            if (m_bots != null)
            {
                for (int i = 0; i < m_bots.Length; ++i)
                {
                    IBotController bot = m_bots[i];
                    if (bot != null)
                    {
                        MatchFactory.DestroyBotController(bot);
                    }
                }
            }

            if (m_engine != null)
            {
                MatchFactory.DestroyMatchEngine(m_engine);
            }
        }
        private void Update()
        {
            for (int i = 0; i < m_taskRunners.Length; ++i)
            {
                ITaskRunner taskRunner = m_taskRunners[i];
                if (taskRunner != null)
                {
                    taskRunner.Update();
                }
            }

            for (int i = 0; i < m_pathFinders.Length; ++i)
            {
                IPathFinder pathFinder = m_pathFinders[i];
                if (pathFinder != null)
                {
                    pathFinder.Update();
                }
            }

            if (m_bots != null)
            {
                for (int i = 0; i < m_bots.Length; ++i)
                {
                    IBotController bot = m_bots[i];
                    if (bot != null)
                    {
                        bot.Update(Time.realtimeSinceStartup);
                    }
                }
            }
        }
Exemple #3
0
        static void Main(string[] args)
        {
            var logger = LogManager.GetCurrentClassLogger();

            AppDomain.CurrentDomain.ProcessExit += CurrentDomain_ProcessExit;
            try
            {
                var arguments = GetArguments(args);
                var startup   = new Startup(arguments);

                _botController = startup.ServiceProvider.GetService <IBotController>();
                _botController.Start();

                Console.WriteLine("Press ANY key to exit");
                Console.ReadKey();
            }
            catch (Exception ex)
            {
                logger.Error(ex, "Stopped program because of exception");
                throw;
            }
            finally
            {
                LogManager.Shutdown();
            }
        }
Exemple #4
0
 public MessageController(IVkApi vkApi)
 {
     _vkApi       = vkApi;
     _controller  = new VkBotController();
     _anekManager = new AnekManager(_controller);
     _sender      = new MessageSender(_vkApi);
 }
        public SinglePlayGame(PlayGameInitData playGameInitData)
        {
            var playerMeleeAttackEntity = Object.Instantiate(playGameInitData.meleeAttackPrefab);

            playerMeleeAttackEntity.gameObject.layer = LayerMask.NameToLayer("PlayerBullet");

            var enemyMeleeAttackEntity = Object.Instantiate(playGameInitData.meleeAttackPrefab);

            enemyMeleeAttackEntity.gameObject.layer = LayerMask.NameToLayer("EnemyBullet");

            playerBotController = new PlayerBotController(
                playGameInitData.botEntityPrefab,
                playGameInitData.tileMapInfo,
                playGameInitData.bulletPrefab,
                playGameInitData.cameraFollower,
                playGameInitData.playerHpPresenter,
                playGameInitData.runButtonEvent,
                playGameInitData.scriptText,
                playGameInitData.errorMsg,
                playGameInitData.soundManager,
                playerMeleeAttackEntity,
                playGameInitData.processScrollViewPresenter,
                playGameInitData.eventSystemWatcher
                );

            enemyBotController = new CpuBotController(
                playGameInitData.botEntityPrefab2P,
                playGameInitData.tileMapInfo,
                playGameInitData.bulletPrefab,
                playGameInitData.soundManager,
                enemyMeleeAttackEntity,
                playGameInitData.eventSystemWatcher
                );
        }
Exemple #6
0
        static void Main(string[] args)
        {
            ConfigureServices();

            botController = container.GetInstance <IBotController>();

            bot.OnMessage += botController.StartBot;
            bot.StartReceiving();
            Console.WriteLine("Bot Started");
            Console.ReadKey();
        }
Exemple #7
0
        public void llExecCharacterCmd(LSL_Integer command, LSL_List options)
        {
            IBotManager botManager = World.RequestModuleInterface <IBotManager>();

            if (botManager != null)
            {
                IBotController controller = botManager.GetCharacterManager(m_host.ParentEntity.UUID);
                if (controller != null)
                {
                    if (command == ScriptBaseClass.CHARACTER_CMD_JUMP)
                    {
                        controller.Jump();
                    }
                    if (command == ScriptBaseClass.CHARACTER_CMD_STOP)
                    {
                        controller.StopMoving(false, true);
                    }
                }
            }
        }
        private void Start()
        {
            LocalPlayerIndex = m_viewport.LocalPlayerIndex;

            int playerIndex = m_gameState.LocalToPlayerIndex(LocalPlayerIndex);

            m_cameraController = Dependencies.GameView.GetCameraController(LocalPlayerIndex);

            m_locationPicker = Dependencies.GameView.GetLocationPicker(LocalPlayerIndex);

            m_playersBot = MatchFactoryCli.CreateBotController(m_gameState.GetPlayer(playerIndex), m_engine.GetClientTaskEngine(playerIndex), new PlayerStrategy());
            m_playersBot.Init();

            SerializedTask[] taskTemplates = m_gameState.GetTaskTemplates(playerIndex);
            SerializedNamedTaskLaunchInfo[] taskTemplatesData = m_gameState.GetTaskTemplateData(playerIndex);
            for (int i = 0; i < taskTemplates.Length; ++i)
            {
                TaskTemplateType coreTaskType = taskTemplatesData[i].Type;
                m_playersBot.RegisterTask(coreTaskType, taskTemplates[i]);
            }
        }
Exemple #9
0
        public ClientMultiPlayGame(PlayGameInitData playGameInitData, MultiGameInfo multiGameInfo)
        {
            gameSignalingClient = new GameSignalingClient(multiGameInfo.myTcpClient);
            gameSignalingClient.ReceivedBattleResult += CheckDeath;

            var playerMeleeAttackEntity = Object.Instantiate(playGameInitData.meleeAttackPrefab);

            playerMeleeAttackEntity.gameObject.layer = LayerMask.NameToLayer("PlayerBullet");

            var enemyMeleeAttackEntity = Object.Instantiate(playGameInitData.meleeAttackPrefab);

            enemyMeleeAttackEntity.gameObject.layer = LayerMask.NameToLayer("EnemyBullet");

            playerBotController = new ClientBotController(
                playGameInitData.botEntityPrefab2P,
                playGameInitData.tileMapInfo,
                playGameInitData.bulletPrefab,
                playGameInitData.cameraFollower,
                playGameInitData.playerHpPresenter,
                playGameInitData.runButtonEvent,
                playGameInitData.scriptText,
                playGameInitData.errorMsg,
                playGameInitData.soundManager,
                gameSignalingClient,
                playerMeleeAttackEntity,
                playGameInitData.processScrollViewPresenter,
                playGameInitData.eventSystemWatcher
                );
            enemyBotController = new RemoteHostBotController(
                playGameInitData.botEntityPrefab,
                playGameInitData.tileMapInfo,
                playGameInitData.bulletPrefab,
                playGameInitData.soundManager,
                gameSignalingClient,
                enemyMeleeAttackEntity,
                playGameInitData.eventSystemWatcher
                );
            gameSignalingClient.ReceivedClientPos += playerBotController.SetPos;
            gameSignalingClient.ReceivedHostPos   += enemyBotController.SetPos;
        }
Exemple #10
0
        public HostMultiPlayGame(PlayGameInitData playGameInitData, MultiGameInfo multiGameInfo)
        {
            gameSignalingHost =
                new GameSignalingHost(multiGameInfo.myTcpClient, SelectedStageData.GetSelectedStageKind());

            var playerMeleeAttackEntity = Object.Instantiate(playGameInitData.meleeAttackPrefab);

            playerMeleeAttackEntity.gameObject.layer = LayerMask.NameToLayer("PlayerBullet");

            var enemyMeleeAttackEntity = Object.Instantiate(playGameInitData.meleeAttackPrefab);

            enemyMeleeAttackEntity.gameObject.layer = LayerMask.NameToLayer("EnemyBullet");


            playerBotController = new HostBotController(
                playGameInitData.botEntityPrefab,
                playGameInitData.tileMapInfo,
                playGameInitData.bulletPrefab,
                playGameInitData.cameraFollower,
                playGameInitData.playerHpPresenter,
                playGameInitData.runButtonEvent,
                playGameInitData.scriptText,
                playGameInitData.errorMsg,
                playGameInitData.soundManager,
                gameSignalingHost,
                playerMeleeAttackEntity,
                playGameInitData.processScrollViewPresenter,
                playGameInitData.eventSystemWatcher
                );
            enemyBotController = new RemoteClientBotController(
                playGameInitData.botEntityPrefab2P,
                playGameInitData.tileMapInfo,
                playGameInitData.bulletPrefab,
                playGameInitData.soundManager,
                gameSignalingHost,
                enemyMeleeAttackEntity,
                playGameInitData.eventSystemWatcher
                );
        }
        public void llUpdateCharacter(LSL_List options)
        {
            IBotManager botManager = World.RequestModuleInterface <IBotManager>();

            if (botManager != null)
            {
                IBotController controller = botManager.GetCharacterManager(m_host.ParentEntity.UUID);
                if (controller == null)
                {
                    return;         // nothing to controll :(
                }
                for (int i = 0; i < options.Length; i += 2)
                {
                    LSL_Integer opt   = options.GetLSLIntegerItem(i);
                    LSL_Float   value = options.GetLSLFloatItem(i + 1);
                    if (opt == ScriptBaseClass.CHARACTER_DESIRED_SPEED)
                    {
                        controller.SetSpeedModifier((float)value.value);
                    }
                    else if (opt == ScriptBaseClass.CHARACTER_RADIUS)
                    {
                    }
                    else if (opt == ScriptBaseClass.CHARACTER_LENGTH)
                    {
                    }
                    else if (opt == ScriptBaseClass.CHARACTER_ORIENTATION)
                    {
                    }
                    else if (opt == ScriptBaseClass.CHARACTER_AVOIDANCE_MODE)
                    {
                    }
                    else if (opt == ScriptBaseClass.CHARACTER_TYPE)
                    {
                    }
                    else if (opt == ScriptBaseClass.TRAVERSAL_TYPE)
                    {
                    }
                    else if (opt == ScriptBaseClass.CHARACTER_MAX_ACCEL)
                    {
                    }
                    else if (opt == ScriptBaseClass.CHARACTER_MAX_DECEL)
                    {
                    }
                    else if (opt == ScriptBaseClass.CHARACTER_MAX_TURN_RADIUS)
                    {
                    }
                    else if (opt == ScriptBaseClass.CHARACTER_DESIRED_TURN_SPEED)
                    {
                    }
                    else if (opt == ScriptBaseClass.CHARACTER_MAX_SPEED)
                    {
                    }
                    else if (opt == ScriptBaseClass.CHARACTER_ACCOUNT_FOR_SKIPPED_FRAMES)
                    {
                    }
                    else if (opt == ScriptBaseClass.CHARACTER_STAY_WITHIN_PARCEL)
                    {
                    }
                }
            }
        }
 public void Setup()
 {
     _controller          = Substitute.For <IBotController>();
     _grindSessionHandler = Substitute.For <IGrindSessionHandler>();
     _grindSession        = new GrindSession(_controller, _grindSessionHandler);
 }
        private void ProcessRequest(ClientRequest request, Action <ClientRequest> callback)
        {
            Cmd cmd = request.Cmd;

            if (cmd != null)
            {
                if (cmd.Code == CmdCode.GrantBotCtrl)
                {
                    m_bots = new IBotController[m_game.PlayersCount];
                    for (int i = 0; i < m_bots.Length; ++i)
                    {
                        Player player = m_game.GetPlayer(i);
                        if (player.IsActiveBot)
                        {
                            IBotController bot = MatchFactoryCli.CreateBotController(player, m_taskEngines[i], new DefaultStrategy());
                            bot.Init();
                            m_bots[i] = bot;
                        }
                    }
                    callback(request);
                }
                else if (cmd.Code == CmdCode.DenyBotCtrl)
                {
                    m_bots = new IBotController[m_game.PlayersCount];
                    for (int i = 0; i < m_bots.Length; ++i)
                    {
                        IBotController bot = m_bots[i];
                        if (bot != null)
                        {
                            bot.Reset();
                        }
                    }
                    m_bots = null;
                    callback(request);
                }
                else
                {
                    IVoxelDataController dc = m_game.GetVoxelDataController(request.PlayerIndex, cmd.UnitIndex);
                    if (cmd.Code != CmdCode.Move || dc == null)
                    {
                        if (dc == null)
                        {
                            request.Cmd.ErrorCode = CmdResultCode.Fail_NoUnit;
                        }
                        else
                        {
                            request.Cmd.ErrorCode = CmdResultCode.Fail_NotSupported;
                        }

                        SubmitResponse(request);
                    }
                    else
                    {
                        CoordinateCmd coordinateCmd = (CoordinateCmd)cmd;
                        Debug.Assert(coordinateCmd.Coordinates.Length > 1);
                        IPathFinder pathFinder = m_pathFinders[request.PlayerIndex];
#warning PathFinder should igore dataController.ControlledVoxelData
                        pathFinder.Find(cmd.UnitIndex, -1, dc.Clone(), coordinateCmd.Coordinates, (unitIndex, path) =>
                        {
                            coordinateCmd.Coordinates = path;
                            request.Cmd = coordinateCmd;
                            callback(request);
                        }, null);
                    }
                }
            }
        }
 public GrindSession(IBotController botController, IGrindSessionHandler grindSessionHandler)
 {
     _botController       = botController;
     _grindSessionHandler = grindSessionHandler;
 }
Exemple #15
0
 public BotHost(IBotController bot)
 {
     _bot = bot ?? throw new ArgumentNullException(nameof(bot));
 }
 public static void DestroyBotController(IBotController botController)
 {
     botController.Destroy();
 }
        private void OnDestroy()
        {
            if (Dependencies.RemoteGameServer != null)
            {
                Dependencies.RemoteGameServer.ConnectionStateChanged -= OnRemoteGameServerConnectionStateChanged;
            }

            if (m_matchServer != null)
            {
                m_matchServer.Tick                   -= OnTick;
                m_matchServer.ReadyToPlayAll         -= OnReadyToPlayAll;
                m_matchServer.Ping                   -= OnPing;
                m_matchServer.Paused                 -= OnPaused;
                m_matchServer.ConnectionStateChanged -= OnConnectionStateChanged;
            }

            if (m_taskEngines != null)
            {
                for (int i = 0; i < m_taskEngines.Length; ++i)
                {
                    ITaskEngine taskEngine = m_taskEngines[i];
                    if (taskEngine != null)
                    {
                        taskEngine.ClientRequest -= ProcessClientRequest;
                        MatchFactoryCli.DestroyTaskEngine(taskEngine);
                    }
                }
            }

            if (m_taskRunners != null)
            {
                for (int i = 0; i < m_taskRunners.Length; ++i)
                {
                    ITaskRunner taskRunner = m_taskRunners[i];
                    if (taskRunner != null)
                    {
                        MatchFactoryCli.DestroyTaskRunner(taskRunner);
                    }
                }
            }

            if (m_pathFinders != null)
            {
                for (int i = 0; i < m_pathFinders.Length; ++i)
                {
                    IPathFinder pathFinder = m_pathFinders[i];
                    if (pathFinder != null)
                    {
                        MatchFactoryCli.DestroyPathFinder(pathFinder);
                    }
                }
            }

            if (m_bots != null)
            {
                for (int i = 0; i < m_bots.Length; ++i)
                {
                    IBotController botController = m_bots[i];
                    if (botController != null)
                    {
                        MatchFactoryCli.DestroyBotController(botController);
                    }
                }
            }
        }
 public AnekManager(IBotController controller)
 {
     _controller = controller;
 }