/// <inheritdoc /> public void ShowResult <TSource>(IActionResult <TSource> result) { if (result.TargetProtected) { ShowMessage(result.DescribeProtected()); } else { switch (result) { case BuffActionResult <TSource> br: var buffDescription = br.Describe(); if (buffDescription is not null) { ShowMessage(buffDescription); } break; case DamageActionResult <TSource> dr: var damageDescription = dr.Describe(); if (damageDescription is not null) { ShowMessage(damageDescription); } break; case HealActionResult <TSource> hr: var healDescription = hr.Describe(); if (healDescription is not null) { ShowMessage(healDescription); } break; case ProtectLimitChangeActionResult <TSource> plcr: var plcrDescription = plcr.Describe(); if (plcrDescription is not null) { ShowMessage(plcrDescription); } break; case ProtectActionResult <TSource> pr: var protectDescription = pr.Describe(); if (protectDescription is not null) { ShowMessage(protectDescription); } break; } } }