private void DrawTargetInfo(BattleChara actor, Vector2 cursorPos, float castScale, float offsetX, string actionName, string interruptedText, bool drawCast, bool castInterrupted, bool castInterruptible, bool isRight) { var hpScale = (float)actor.CurrentHp / actor.MaxHp * 100f; DrawBar(cursorPos, offsetX, hpScale / 100f, _pluginConfiguration.HpColorAlpha, isRight); var actorName = $"{actor.Name}\n({hpScale:F2})%"; var actorNameSize = TextExtension.CalcTextSize(actorName, _pluginConfiguration.FontScale * _pluginConfiguration.Scale); TextExtension.DrawOutlineText( new Vector2(isRight ? cursorPos.X + _pluginConfiguration.BarImage.Width * _pluginConfiguration.Scale + offsetX + actorNameSize.Y : cursorPos.X - offsetX - actorNameSize.Y, cursorPos.Y + _pluginConfiguration.BarBackgroundImage.Height / 2f * _pluginConfiguration.Scale - actorNameSize.X / 2f), _pluginConfiguration.CastTextColorAlpha, _pluginConfiguration.CastTextOutlineColorAlpha, actorName, _pluginConfiguration.FontScale * _pluginConfiguration.Scale, 2, true, isRight); if (!drawCast) { return; } var castStringSize = TextExtension.CalcTextSize(actionName, _pluginConfiguration.FontScale * _pluginConfiguration.Scale); TextExtension.DrawOutlineText( new Vector2(isRight ? cursorPos.X + _pluginConfiguration.BarImage.Width * _pluginConfiguration.Scale + offsetX + actorNameSize.Y + castStringSize.Y: cursorPos.X - offsetX - actorNameSize.Y - castStringSize.Y, cursorPos.Y + _pluginConfiguration.BarBackgroundImage.Height / 2f * _pluginConfiguration.Scale - castStringSize.X / 2f), _pluginConfiguration.CastTextColorAlpha, _pluginConfiguration.CastTextOutlineColorAlpha, actionName, _pluginConfiguration.FontScale * _pluginConfiguration.Scale, 2, true, isRight); if (castInterrupted) { var castInterruptedStringSize = TextExtension.CalcTextSize(interruptedText, _pluginConfiguration.FontScale * _pluginConfiguration.Scale); TextExtension.DrawOutlineText( new Vector2(isRight ? cursorPos.X + _pluginConfiguration.BarImage.Width * _pluginConfiguration.Scale + offsetX + actorNameSize.Y + castStringSize.Y + castInterruptedStringSize.Y : cursorPos.X - offsetX - actorNameSize.Y - castStringSize.Y - castInterruptedStringSize.Y, cursorPos.Y + _pluginConfiguration.BarBackgroundImage.Height / 2f * _pluginConfiguration.Scale - castInterruptedStringSize.X / 2f), _pluginConfiguration.CastTextColorAlpha, _pluginConfiguration.CastTextOutlineColorAlpha, interruptedText, _pluginConfiguration.FontScale * _pluginConfiguration.Scale, 2, true, isRight); } DrawCastBar(cursorPos, offsetX, castScale, castInterrupted ? _pluginConfiguration.CastInterruptColorAlpha : castInterruptible?_pluginConfiguration.CastInterruptColorAlpha: _pluginConfiguration.CastColorAlpha, isRight, true); }
public static Character?Convert(GameObject?actor) { if (actor == null) { return(null); } return(actor switch { PlayerCharacter p => p, BattleChara b => b, _ => actor.ObjectKind switch { ObjectKind.BattleNpc => Character(actor.Address), ObjectKind.Companion => Character(actor.Address), ObjectKind.Retainer => Character(actor.Address), ObjectKind.EventNpc => Character(actor.Address), _ => null, }, });