Esempio n. 1
0
        private static void StartParser(string ip)
        {
            var gamestate = new GameStateListener("127.0.0.1");
            var combatlog = new CombatLogListener(CombatLogFilePath);

            var eyeTcpClient = new EyeTcpClient(gamestate, combatlog, ip, _token);

            eyeTcpClient.Connected    += (sender, entry) => Trace.WriteLine(LogFormat("Парсер запущен!"));
            eyeTcpClient.Disconnected += (sender, entry) =>
            {
                gamestate.Stop();
                StartParser(ip);
            };
            combatlog.DataReceived += (sender, entry) =>
            {
                var gs = entry as CombatLogEntryGameState;
                if (gs == null || gs.State != (int)Map.GameState.DOTA_GAMERULES_STATE_POST_GAME)
                {
                    return;
                }

                gamestate.Stop();
                combatlog.Stop();

                while (IsFileLocked(new FileInfo(CombatLogFilePath)))
                {
                    Thread.Sleep(1000);
                }
                File.Delete(CombatLogFilePath);

                StartParser(ip);
            };
            eyeTcpClient.Connect();
        }
Esempio n. 2
0
        public EyeTcpClient(GameStateListener gameStateListener, CombatLogListener combatLogListener, string ip, string token)
        {
            _gameStateListener = gameStateListener;
            _combatLogListener = combatLogListener;
            _token             = token;

            _gameStateListener.RawDataReceived += GameStateRawDataReceived;
            _combatLogListener.DataReceived    += CombatLogDataReceived;

            Configuration.Host       = ip;
            Configuration.Port       = 8765;
            Configuration.BufferSize = 1024 * 128;
            Configuration.TimeOut    = 5000;
            Configuration.RetryMode  = NetClientRetryOptions.Infinite;
        }
Esempio n. 3
0
        static void Main(string[] args)
        {
            //Console.SetWindowPosition(1920 + 200, 200);
            //Console.SetWindowSize(Console.LargestWindowWidth, Console.LargestWindowHeight);

            var gsl = new GameStateListener();
            var cll = new CombatLogListener(@"C:\Program Files (x86)\Steam\steamapps\common\dota 2 beta\game\dota\combat.log");

            _eyeStateIntegrator   = new EyeStateIntegrator(gsl, cll);
            _eyeStateEventManager = new EyeStateEventManager(_eyeStateIntegrator);

            _eyeStateIntegrator.Start();

            Console.ReadLine();
        }