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(); }
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; }
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(); }