/// <summary> /// Gets the tooltip text for the given skill /// </summary> /// <param name="skill"></param> private string GetTooltip(Skill skill) { int sp = skill.SkillPoints; int nextLevel = Math.Min(5, skill.Level + 1); int nextLevelSP = skill.StaticData.GetPointsRequiredForLevel(nextLevel); int pointsLeft = skill.GetLeftPointsRequiredToLevel(nextLevel); string remainingTimeText = skill.GetLeftTrainingTimeToLevel(nextLevel).ToDescriptiveText( DescriptiveTextOptions.IncludeCommas | DescriptiveTextOptions.UppercaseText); if (sp < skill.StaticData.GetPointsRequiredForLevel(1)) { // Training hasn't got past level 1 yet StringBuilder untrainedToolTip = new StringBuilder(); untrainedToolTip.AppendFormat(CultureConstants.DefaultCulture, "Not yet trained to Level I ({0}%)\n", Math.Floor(skill.PercentCompleted)); untrainedToolTip.AppendFormat(CultureConstants.DefaultCulture, "Next level I: {0:#,##0} skill points remaining\n", pointsLeft); untrainedToolTip.AppendFormat(CultureConstants.DefaultCulture, "Training time remaining: {0}", remainingTimeText); AddSkillBoilerPlate(untrainedToolTip, skill); return untrainedToolTip.ToString(); } // So, it's a left click on a skill, we display the tool tip // Partially trained skill ? if (skill.IsPartiallyTrained) { StringBuilder partiallyTrainedToolTip = new StringBuilder(); partiallyTrainedToolTip.AppendFormat(CultureConstants.DefaultCulture, "Partially Completed ({0}%)\n", Math.Floor(skill.PercentCompleted)); partiallyTrainedToolTip.AppendFormat(CultureConstants.DefaultCulture, "Training to level {0}: {1:#,##0} skill points remaining\n", Skill.GetRomanForInt(nextLevel), pointsLeft); partiallyTrainedToolTip.AppendFormat(CultureConstants.DefaultCulture, "Training time remaining: {0}", remainingTimeText); AddSkillBoilerPlate(partiallyTrainedToolTip, skill); return partiallyTrainedToolTip.ToString(); } // We've completed all the skill points for the current level if (!skill.IsPartiallyTrained) { if (skill.Level != 5) { StringBuilder levelCompleteToolTip = new StringBuilder(); levelCompleteToolTip.AppendFormat(CultureConstants.DefaultCulture, "Completed Level {0}: {1:#,##0}/{2:#,##0}\n", Skill.GetRomanForInt(skill.Level), sp, nextLevelSP); levelCompleteToolTip.AppendFormat(CultureConstants.DefaultCulture, "Next level {0}: {1:#,##0} skill points required\n", Skill.GetRomanForInt(nextLevel), pointsLeft); levelCompleteToolTip.AppendFormat(CultureConstants.DefaultCulture, "Training Time: {0}", remainingTimeText); AddSkillBoilerPlate(levelCompleteToolTip, skill); return levelCompleteToolTip.ToString(); } // Lv 5 completed StringBuilder lv5ToolTip = new StringBuilder(); lv5ToolTip.AppendFormat(CultureConstants.DefaultCulture, "Level V Complete: {0:#,##0}/{1:#,##0}\n", sp, nextLevelSP); lv5ToolTip.Append("No further training required\n"); AddSkillBoilerPlate(lv5ToolTip, skill); return lv5ToolTip.ToString(); } // Error in calculating SkillPoints StringBuilder calculationErrorToolTip = new StringBuilder(); calculationErrorToolTip.AppendLine("Partially Trained (Could not cacluate all skill details)"); calculationErrorToolTip.AppendFormat(CultureConstants.DefaultCulture, "Next level {0}: {1:#,##0} skill points remaining\n",nextLevel, pointsLeft); calculationErrorToolTip.AppendFormat(CultureConstants.DefaultCulture, "Training time remaining: {0}", remainingTimeText); AddSkillBoilerPlate(calculationErrorToolTip, skill); return calculationErrorToolTip.ToString(); }