public Tooltip(Texture2D tooltip_texture, Font font_style, int[] font_sizes, Rect base_dimens, IconType tooltip_type, TooltipDetails tooltip_details) { type = tooltip_type; details = tooltip_details; tooltip_bubbleStyle.normal.background = tooltip_texture; // Base GUIStyle Font settings here name_style.normal.textColor = details.NameColor; name_style.font = font_style; name_style.fontSize = font_sizes[0]; stat_style.font = font_style; stat_style.fontSize = font_sizes[1]; detail_style.font = font_style; detail_style.fontSize = font_sizes[2]; // End Base Settings details.Dimensions = new Rect(base_dimens.x + base_dimens.width, base_dimens.y, name_style.CalcSize(new GUIContent(details.Name)).x, name_style.CalcSize(new GUIContent(details.Name)).y); Rect determinedDimensions = determineDimensions(details); if (details.Dimensions.x + determinedDimensions.width > Screen.width) { details.Dimensions = new Rect(details.Dimensions.x - (determinedDimensions.width + base_dimens.width), details.Dimensions.y, details.Dimensions.width, details.Dimensions.height); } if (details.Dimensions.y + determinedDimensions.height > Screen.height) { details.Dimensions = new Rect(details.Dimensions.x, details.Dimensions.y - ((details.Dimensions.y + determinedDimensions.height) - Screen.height), details.Dimensions.width, details.Dimensions.height); } }
private Rect determineDimensions(TooltipDetails details) { Rect determined_dimens = new Rect(); if (determined_dimens.width < name_style.CalcSize(new GUIContent(details.Name)).x) { determined_dimens.width = name_style.CalcSize(new GUIContent(details.Name)).x; } determined_dimens.height += name_style.CalcSize(new GUIContent(details.Name)).y; for (int i = 0; i < details.StatisticalDetails.Length; i++) { if (determined_dimens.width < stat_style.CalcSize(new GUIContent(details.StatisticalDetails[i])).x) { determined_dimens.width = stat_style.CalcSize(new GUIContent(details.StatisticalDetails[i])).x; } determined_dimens.height += stat_style.CalcSize(new GUIContent(details.StatisticalDetails[i])).y; } for (int i = 0; i < details.DescriptiveDetails.Length; i++) { if (determined_dimens.width < detail_style.CalcSize(new GUIContent(details.DescriptiveDetails[i])).x) { determined_dimens.width = detail_style.CalcSize(new GUIContent(details.DescriptiveDetails[i])).x; } determined_dimens.height += detail_style.CalcSize(new GUIContent(details.DescriptiveDetails[i])).y; } determined_dimens.x = details.Dimensions.x; determined_dimens.y = details.Dimensions.y; return(determined_dimens); }
// used to retrieve details from a specific file with the associated type and name TooltipDetails RetrieveDetails(IconType type, string name) { TooltipDetails details = new TooltipDetails(); details.Name = name; Stream stream; StreamReader reader; if (type.Equals(IconType.Item) && previousIconType != IconType.Item) { objectInfoFile = (TextAsset)Resources.Load("ObjectDetails/item_info"); previousIconType = IconType.Item; } else if (type.Equals(IconType.Skill) && previousIconType != IconType.Skill) { objectInfoFile = (TextAsset)Resources.Load("ObjectDetails/skill_info"); previousIconType = IconType.Skill; } else if (type.Equals(IconType.GameObject) && previousIconType != IconType.GameObject) { objectInfoFile = (TextAsset)Resources.Load("ObjectDetails/object_info"); previousIconType = IconType.GameObject; } try { stream = new MemoryStream(objectInfoFile.bytes); reader = new StreamReader(stream); string desired = "[" + determineIconToken(type) + "]" + name; string read_in = ""; while (!read_in.Equals(desired)) { string data = reader.ReadLine(); if (data.Length >= desired.Length) { read_in = data.Substring(0, desired.Length); } else { read_in = "NULL"; } if (read_in.Equals(desired)) { int extra_char_counter = 0; for (int i = desired.Length; i < data.Length; i++) { if (data[i] != '[') { extra_char_counter++; } else { break; } } details.NameColor = determineNameColor(data.Substring(desired.Length + extra_char_counter, data.Length - (desired.Length + extra_char_counter))); data = reader.ReadLine(); details.ID = int.Parse(data.Substring("[id]".Length, data.Length - "[id]".Length)); string[] CombinedDetails = determineDetails(reader); List <Color> colors = new List <Color>(); details.StatisticalDetails = placeDetails(CombinedDetails, 's', colors); details.StatisticalColors = colors.ToArray(); colors.Clear(); details.DescriptiveDetails = placeDetails(CombinedDetails, 'd', colors); details.DescriptiveColors = colors.ToArray(); colors.Clear(); break; } } reader.Close(); stream.Close(); } catch (IOException ex) { Debug.Log(ex.Message); } return(details); }
void Start() { tooltip = this; HideTooltip(); }