private void CheckInGame(bool first = false) { var pPlayer = GetPlayerUnit(); var check = pPlayer != 0; try { if (check) { using (var suspender = new GameSuspender(this)) { RefreshUnitPosition(); } } if (check == InGame && !first) { return; } if (check) { using (var suspender = new GameSuspender(this)) { PlayerName = GetPlayerName(); } } else { PlayerName = ""; } InGame = check; if (InGame) { EnteredGame(); } else { ExitedGame(); } try { overlay.Invoke((MethodInvoker) delegate { overlay.InGameStateChanged(InGame); }); } catch { } } catch { } }
public bool Install() { if (!Exists()) { return(false); } try { pd = new ProcessDebugger(process.Id); pd.Run(); var now = DateTime.Now; while (!pd.WaitForComeUp(50) && now.MSecToNow() < 1000) { } foreach (ProcessThread pT in process.Threads) { if (pd.GetThreadStartAddress(pT.Id) == pd.GetAddress(D2Pointers.Game.mainThread)) { mainThreadId = pT.Id; break; } } ApplySettings(); } catch { return(false); } CheckInGame(true); overlay = new OverlayWindow(); overlay.game = this; overlay.PostCreate(); overlay.InGameStateChanged(InGame); AutoTeleport = new AutoTeleHandler(this); Pickit = new Pickit(this); PlayerInfo = new PlayerInfo(this); MapHandler = new MapHandler(this); syncTimer.Start(); gameCheckTimer.Start(); selectedUnitTimer.Start(); return(true); }