public static void LeaveGame(Game g, string uname) { if (g.IsFinished) return; var p = g.GetPlayer(uname); if (p == null) return; if (g.Players.Count > 2) { foreach (var cell in g.Map.CellsByUser(p.Id)) { cell.Owner = null; cell.HousesCount = 0; } g.Tlog("Game.LeaveGame.PlayerLeaveGame", "@p{0} покинул игру", "@p{0} leave Game ", p.Id); //g.Players.Remove(p); p.Deleted = true; g.pcount--; g.OnLeave(p.Name, false); } else if (g.Players.Count == 2) { g.Winner = g.Players.First(x => x.Id != p.Id); g.Tlog("Game.LeaveGame.PlayerIsWinner", "@p{0} ПОБЕДИТЕЛЬ", "@p{0} is WINNER ", g.Winner.Id); g.SetState(GameState.FinishGame); g.OnLeave(p.Name, false); g.OnLeave(g.Winner.Name, true); } }