Exemplo n.º 1
0
        public async Task RunLadder(ISharkyBot bot, Race myRace, int gamePort, int startPort, String opponentID)
        {
            await Connect(gamePort);

            var playerId = await JoinGameLadder(myRace, startPort);

            await Run(bot, playerId, opponentID);
        }
Exemplo n.º 2
0
        public async Task RunSinglePlayer(ISharkyBot bot, string map, Race myRace, Race opponentRace, Difficulty opponentDifficulty, AIBuild aIBuild)
        {
            readSettings();
            StartSC2Instance(5678);
            await Connect(5678);
            await CreateGame(map, opponentRace, opponentDifficulty, aIBuild);

            var playerId = await JoinGame(myRace);

            await Run(bot, playerId, "test");
        }
Exemplo n.º 3
0
        public async Task RunLadder(ISharkyBot bot, Race myRace, string[] args)
        {
            var clargs = new CLArgs(args);

            await RunLadder(bot, myRace, clargs.GamePort, clargs.StartPort, clargs.OpponentID);
        }
Exemplo n.º 4
0
        public async Task Run(ISharkyBot bot, uint playerId, string opponentID)
        {
            var gameInfoReq = new Request();

            gameInfoReq.GameInfo = new RequestGameInfo();

            var gameInfoResponse = await Proxy.SendRequest(gameInfoReq);

            var gameDataRequest = new Request();

            gameDataRequest.Data            = new RequestData();
            gameDataRequest.Data.UnitTypeId = true;
            gameDataRequest.Data.AbilityId  = true;
            gameDataRequest.Data.BuffId     = true;
            gameDataRequest.Data.EffectId   = true;
            gameDataRequest.Data.UpgradeId  = true;

            var dataResponse = await Proxy.SendRequest(gameDataRequest);

            var pingResponse = await Ping();

            var start = true;

            var observationRequest = new Request
            {
                Observation = new RequestObservation()
            };

            var stepRequest = new Request
            {
                Step = new RequestStep {
                    Count = 1
                }
            };

            double totalTime = 0;
            int    frames    = 0;

            double specificTime = 0;
            int    actionCount  = 0;

            while (true)
            {
                var beginTotal = DateTime.UtcNow;

                if (!start)
                {
                    await Proxy.SendRequest(stepRequest);
                }
                var begin    = DateTime.UtcNow;
                var response = await Proxy.SendRequest(observationRequest);

                specificTime += (DateTime.UtcNow - begin).TotalMilliseconds;

                var observation = response.Observation;

                if (observation == null)
                {
                    bot.OnEnd(observation, Result.Undecided);
                    break;
                }
                if (response.Status == Status.Ended || response.Status == Status.Quit)
                {
                    bot.OnEnd(observation, observation.PlayerResult[(int)playerId - 1].Result);
                    break;
                }

                if (start)
                {
                    start = false;
                    bot.OnStart(gameInfoResponse.GameInfo, dataResponse.Data, pingResponse, observation, playerId, opponentID);
                }

                var actions = bot.OnFrame(observation);

                var actionRequest = new Request();
                actionRequest.Action = new RequestAction();
                actionRequest.Action.Actions.AddRange(actions);

                if (actionRequest.Action.Actions.Count > 0)
                {
                    await Proxy.SendRequest(actionRequest);

                    actionCount += actionRequest.Action.Actions.Count;
                }

                var frameTotal = (DateTime.UtcNow - beginTotal).TotalMilliseconds;
                totalTime += frameTotal;
                frames++;
            }
        }