mirror of
https://github.com/Lendaia/oe-alga-feladatok.git
synced 2026-04-23 04:16:32 +01:00
44 lines
1.4 KiB
C#
44 lines
1.4 KiB
C#
namespace OE.ALGA.Engine
|
|
{
|
|
public interface IBillentyuLenyomasKezelo
|
|
{
|
|
void BillentyuLenyomas(ConsoleKey billentyu);
|
|
}
|
|
|
|
public class BillentyuzetKezelo : IOrajelFogado
|
|
{
|
|
private readonly List<IBillentyuLenyomasKezelo> billentyuLenyomasKezelok = new List<IBillentyuLenyomasKezelo>();
|
|
|
|
public void BillentyuLenyomasKezeloFelvetele(IBillentyuLenyomasKezelo kezelo)
|
|
{
|
|
billentyuLenyomasKezelok.Add(kezelo);
|
|
}
|
|
|
|
public void BillentyuLenyomasKezeloEltavolitasa(IBillentyuLenyomasKezelo kezelo)
|
|
{
|
|
billentyuLenyomasKezelok.Remove(kezelo);
|
|
}
|
|
|
|
private readonly Dictionary<ConsoleKey, Action> billentyuAkciok = new Dictionary<ConsoleKey, Action>();
|
|
|
|
public void BillentyuAkcioFelvetele(ConsoleKey billentyu, Action akcio)
|
|
{
|
|
billentyuAkciok.Add(billentyu, akcio);
|
|
}
|
|
|
|
public void Orajel(int ido)
|
|
{
|
|
while (Console.KeyAvailable)
|
|
{
|
|
ConsoleKey billentyu = Console.ReadKey(true).Key;
|
|
foreach (IBillentyuLenyomasKezelo kezelo in billentyuLenyomasKezelok)
|
|
{
|
|
kezelo.BillentyuLenyomas(billentyu);
|
|
}
|
|
if (billentyuAkciok.TryGetValue(billentyu, out Action? value))
|
|
value();
|
|
}
|
|
}
|
|
}
|
|
}
|