void CardTapAsSingleGameStarter(MifareClassicISO1443ACardDetectedEventArg e)
 {
     if (MainConfig.ServerMode == ServerMode.NoServerDemoMode || MainConfig.CardModeMode == CardModeMode.NoCardNeededDemoMode)
     {
         Logger.WriteLog($"\nCard Detected starting in {MainConfig.ServerMode}:{MainConfig.CardModeMode} mode. Serverless Demo Started {DateTime.UtcNow}\nCardInfo\n\tAir Protocol:{e.CardInfo.AirProtocalID}\n\tAntennaID:{e.CardInfo.AntennaID}\n\tTagID:{e.CardInfo.TagID}\n\tUID:{BitConverter.ToString(e.CardInfo.UID, 0, e.CardInfo.UIDlen)}\n\tDSFID:{e.CardInfo.DSFID}");
         GameMenu.NotifyOfCardTap();
     }
     else
     {
         GameMenu.NotifyOfCardTap();
     }
 }
        private void CardDetected(object sender, MifareClassicISO1443ACardDetectedEventArg e)
        {
            if (!Disabled)
            {
                switch (MainConfig.StarterMode)
                {
                case GameStartMode.SingleGameStarter:
                    CardTapAsSingleGameStarter(e);
                    break;

                case GameStartMode.MultiSocketStarterSlave:
                    CardTapAsMultiSocketStarterSlave(e);
                    break;

                case GameStartMode.MultiSocketStarterMaster:
                    CardTapAsMultiSocketStarterMaster(e);
                    break;

                case GameStartMode.AttendantChargeDeskOnly:
                    CardTapAsAttendantChargeDeskOnly();
                    break;
                }
            }
        }
 void CardTapAsMultiSocketStarterSlave(MifareClassicISO1443ACardDetectedEventArg e)
 {
     if (MainConfig.ServerMode == ServerMode.NoServerDemoMode || MainConfig.CardModeMode == CardModeMode.NoCardNeededDemoMode)
     {
         Logger.WriteLog($"\nCard Detected starting in {MainConfig.ServerMode}:{MainConfig.CardModeMode} mode. Serverless Demo Started {DateTime.UtcNow}\nCardInfo\n\tAir Protocol:{e.CardInfo.AirProtocalID}\n\tAntennaID:{e.CardInfo.AntennaID}\n\tTagID:{e.CardInfo.TagID}\n\tUID:{BitConverter.ToString(e.CardInfo.UID, 0, e.CardInfo.UIDlen)}\n\tDSFID:{e.CardInfo.DSFID}");
         SlaveClient.NotifyServerOfTappedCard();
     }
     else
     {
         CanPlayTransactionReturn Data = ArcadeGameStartAndStopService.NFCReader.Card.CanPlayGameTransactionWithServer(SlaveClient.GameGUID).Data;
         if (Data.CanPlay)
         {
             Logger.WriteLog($"\nCard Detected starting in {MainConfig.ServerMode}:{MainConfig.CardModeMode} mode. Serverless Demo Started {DateTime.UtcNow}\nCardInfo\n\tAir Protocol:{e.CardInfo.AirProtocalID}\n\tAntennaID:{e.CardInfo.AntennaID}\n\tTagID:{e.CardInfo.TagID}\n\tUID:{BitConverter.ToString(e.CardInfo.UID, 0, e.CardInfo.UIDlen)}\n\tDSFID:{e.CardInfo.DSFID}");
             ArcadeGameStartAndStopService.LastCardGUID = Data.CardGUID;
             ArcadeGameStartAndStopService.LastCheckKey = Data.NewCheckKey;
             SlaveClient.NotifyServerOfTappedCard();
         }
         else
         {
             ArcadeGameStartAndStopService.LastCardGUID = null;
             ArcadeGameStartAndStopService.LastCheckKey = null;
         }
     }
 }
 void CardTapAsMultiSocketStarterMaster(MifareClassicISO1443ACardDetectedEventArg e)
 {
     Logger.WriteLog("Card tap detected but in MultiSocketStarterMaster. Tap has been ignored");
 }