public TechField getNextField() { TechField field = currentResearchField; if (nextResearchField == NextResearchField.SameField) { field = currentResearchField; } else if (nextResearchField != NextResearchField.LowestField) { field = (TechField)Enum.Parse(typeof(TechField), nextResearchField.ToString(), true); } int nextLevel = techLevels.level(field); if (nextLevel >= Consts.maxTechLevel || nextResearchField == NextResearchField.LowestField) { field = techLevels.lowest(); } return(field); }