cards/CardKey.cs
using Sandbox;
using System.Threading.Tasks;
public class CardKey : Card
{
//public override bool ShouldHandleEvent( EventType eventType )
//{
// return eventType == EventType.Mismatch && Manager.Instance.ChosenCards.Contains(this) || eventType == EventType.Match && Manager.Instance.ChosenCards[1] == this;
//}
//public override async Task HandleEventAsync( EventType eventType )
//{
// if ( eventType == EventType.Mismatch )
// {
// var key = Manager.Instance.ChosenCards[0].CardType == CardType.Key ? Manager.Instance.ChosenCards[0] : Manager.Instance.ChosenCards[1];
// var otherCard = Manager.Instance.ChosenCards[0].CardType == CardType.Key ? Manager.Instance.ChosenCards[1] : Manager.Instance.ChosenCards[0];
// if ( key.IsLocked || !otherCard.IsLocked )
// return;
// Manager.Instance.PushEventMessage( this, eventType );
// await Task.DelayRealtime( 50 );
// Manager.Instance.PlayCardSfxBetween( "key", Manager.Instance.ChosenCards[0], Manager.Instance.ChosenCards[1], volume: 1.5f, pitch: Game.Random.Float( 0.9f, 1.1f ) );
// await Task.DelayRealtime( 50 );
// await Manager.Instance.UnlockCard( otherCard );
// await Task.DelayRealtime( 900 );
// Manager.Instance.PopEventMessage();
// }
// else if (eventType == EventType.Match)
// {
// Manager.Instance.PushEventMessage( this, eventType );
// await Task.DelayRealtime( 50 );
// var lockedCards = Manager.Instance.Cards.Where( x => x.IsLocked ).ToList();
// if ( lockedCards.Count == 0 )
// {
// await Task.DelayRealtime( 800 );
// Manager.Instance.PopEventMessage();
// return;
// }
// Manager.Instance.PlayCardSfxBetween( "key", Manager.Instance.ChosenCards[0], Manager.Instance.ChosenCards[1], volume: 1.5f, pitch: Game.Random.Float( 0.9f, 1.1f ) );
// await Task.DelayRealtime( 50 );
// foreach ( var card in lockedCards )
// {
// await Manager.Instance.UnlockCard( card );
// }
// await Task.DelayRealtime( 1000 );
// Manager.Instance.PopEventMessage();
// }
//}
//public override string GetEventText( EventType eventType )
//{
// if ( eventType == EventType.Mismatch )
// {
// return "❌Mismatch: unlock other card";
// }
// else
// {
// return "✅Match: unlock all cards";
// }
//}
}