private void genJumps(Gameboard gb, Fairway fw) { int x, y; TreeNode root = fw.Queen ? genQueJumpTree(gb, fw) : genWalJumpTree(gb, fw); fw.Ranks = new List <int>(); fw.Dests = new List <string>(); fw.Overs = new List <string>(); List <string> routes = root.allRoutes(root); foreach (var route in routes) { var r = new List <string>(route.Split('-')); r.RemoveAll(c => c.Equals("")); int rank = 0; string dest = ""; string over = ""; for (int i = 0; i < r.Count; i += 2) { x = Convert.ToInt32(r[i].Substring(1)) - 1; y = Convert.ToInt32(r[i][0]) - 'A'; rank += gb.Board[x, y].Queen ? 3 : 2; if (over == "") { over = r[i]; } else { over = over + "-" + r[i]; } if (dest == "") { dest = r[i + 1]; } else { dest = dest + "-" + r[i + 1]; } } if (rank > 0 && dest != "" && over != "") { fw.Ranks.Add(rank); fw.Dests.Add(dest); fw.Overs.Add(over); } } fw.Jump = fw.Ranks.Count > 0 ? true : false; }