private static bool IconStatus(string icon, TargetStatus targetState, out int iconLevel) { bool display; switch (icon) { case "speed": display = targetState.Speed > -1; iconLevel = !display ? 0 : targetState.Speed; break; case "size": display = targetState.Size > -1; iconLevel = !display ? 0 : targetState.Size; break; case "threat": display = targetState.ThreatLvl > -1; iconLevel = !display ? 0 : targetState.ThreatLvl; break; case "shield": display = targetState.ShieldHealth > -1; iconLevel = !display ? 0 : targetState.ShieldHealth; break; case "engagement": display = targetState.Engagement > -1; iconLevel = !display ? 0 : targetState.Engagement; break; case "distance": display = targetState.Distance > -1; iconLevel = !display ? 0 : targetState.Distance; break; default: display = false; iconLevel = 0; break; } return(display); }
private bool TargetTextStatus(int slot, TargetStatus targetState, float scale, Vector2 localOffset, bool shielded, bool details, out string textStr, out Vector2 textOffset) { var showAll = details && shielded; var minimal = !details; var skipShield = !showAll && !minimal; var skip = minimal && slot != 1 && slot != 2 && slot != 10 || skipShield && slot > 5 && slot != 10; if (skip) { textStr = string.Empty; textOffset = Vector2.Zero; return(false); } textOffset = localOffset; var aspectScale = (2.37037f / _session.AspectRatio); var xOdd = 0.3755f * scale; var xEven = 0.07f * scale; var xCenter = 0.19f * scale; var yStart = 0.9f * scale; var yStep = 0.151f * scale; switch (slot) { case 0: textStr = $"SIZE: {targetState.SizeExtended}"; textOffset.X -= xOdd * aspectScale; textOffset.Y += yStart; break; case 1: var inKm = targetState.RealDistance >= 1000; var unit = inKm ? "km" : "m"; var measure = inKm ? targetState.RealDistance / 1000 : targetState.RealDistance; textStr = $"RANGE: {measure:#.0} {unit}"; textOffset.X += xEven * aspectScale; textOffset.Y += yStart; break; case 2: var threatLvl = targetState.ThreatLvl > 0 ? targetState.ThreatLvl : 0; textStr = $"THREAT: {threatLvl}"; textOffset.X -= xOdd * aspectScale; if (minimal) { textOffset.Y += yStart; } else { textOffset.Y += yStart - (yStep * 1); } break; case 3: if (targetState.Engagement == 0) { textStr = "INTERCEPT"; } else if (targetState.Engagement == 1) { textStr = "RETREATING"; } else if (targetState.Speed < 1) { textStr = "STATIONARY"; } else { textStr = "PARALLEL"; } textOffset.X += xEven * aspectScale; textOffset.Y += yStart - (yStep * 1); break; case 4: var speed = MathHelper.Clamp(targetState.Speed, 0, int.MaxValue); textStr = $"SPEED: {speed}"; textOffset.X -= xOdd * aspectScale; textOffset.Y += yStart - (yStep * 2); break; case 5: textStr = targetState.Aware.ToString(); textOffset.X += xEven * aspectScale; textOffset.Y += yStart - (yStep * 2); break; case 6: var hp = targetState.ShieldHealth < 0 ? 0 : targetState.ShieldHealth; textStr = $"SHIELD HP: {hp}%"; textOffset.X -= xOdd * aspectScale; textOffset.Y += yStart - (yStep * 3); break; case 7: var type = targetState.ShieldMod > 0 ? "ENERGY" : targetState.ShieldMod < 0 ? "KINETIC" : "NEUTRAL"; var value = !MyUtils.IsZero(targetState.ShieldMod) ? Math.Round(1 / (2 - targetState.ShieldMod), 1) : 1; textStr = $"{type}: {value}x"; textOffset.X += xEven * aspectScale; textOffset.Y += yStart - (yStep * 3); break; case 8: textStr = ShieldSides(targetState.ShieldFaces); textOffset.X -= xOdd * aspectScale; textOffset.Y += yStart - (yStep * 4); break; case 9: var reduction = ExpChargeReductions[targetState.ShieldHeat]; textStr = $"CHARGE RATE: {Math.Round(1f / reduction, 1)}x"; textOffset.X += xEven * aspectScale; textOffset.Y += yStart - (yStep * 4); break; case 10: textStr = targetState.Name; textOffset.X -= xCenter * aspectScale; if (minimal) { textOffset.Y += yStart - (yStep * 1); } else if (shielded) { textOffset.Y += yStart - (yStep * 5); } else { textOffset.Y += yStart - (yStep * 3); } break; default: textStr = string.Empty; textOffset = Vector2.Zero; return(false); } return(true); }
private static bool TextStatus(int slot, TargetStatus targetState, Vector2 localOffset, out string textStr, out Vector2 textOffset) { bool display; textOffset = localOffset; switch (slot) { case 0: display = targetState.Size > -1; textStr = !display ? string.Empty : $"SIZE: {targetState.Size}"; textOffset += 0.1f; break; case 1: Log.Line("1"); display = targetState.RealDistance > -1; textStr = !display ? string.Empty : $"RANGE: {targetState.RealDistance:#.0}"; textOffset += 0.1f; break; case 2: display = targetState.ThreatLvl > -1; textStr = !display ? string.Empty : $"THREAT: {targetState.ThreatLvl}"; textOffset += 0.1f; break; case 3: display = targetState.Engagement > -1; textStr = !display ? string.Empty : $"ENGAGEMENT: {targetState.Engagement}"; textOffset += 0.1f; break; case 4: display = targetState.Speed > -1; textStr = !display ? string.Empty : $"SPEED: {targetState.Speed}"; textOffset += 0.1f; break; case 5: display = targetState.ShieldHealth > -1; textStr = !display ? string.Empty : $"SHIELD HP: {targetState.ShieldHealth}"; textOffset += 0.1f; break; case 6: display = targetState.Distance > -1; textStr = !display ? string.Empty : $"EMPTY: {targetState.Distance}"; textOffset += 0.1f; break; case 7: display = targetState.Distance > -1; textStr = !display ? string.Empty : $"EMPTY: {targetState.Distance}"; textOffset += 0.1f; break; case 8: display = targetState.Distance > -1; textStr = !display ? string.Empty : $"EMPTY: {targetState.Distance}"; textOffset += 0.1f; break; default: display = false; textStr = string.Empty; textOffset = Vector2.Zero; break; } return(display); }