// checks that another pearl isn't already queued. If one of the same type is already // in the queue this method just returns false. If a conflicting pearl is in the queue // this method removes it and returns false, so we don't end up with, for example, // a 'keep it up' message in a block that contains a 'your lap times are worsening' message private Boolean checkPearlOfWisdomValid(PearlsOfWisdom.PearlType newPearlType) { Boolean isValid = true; if (queuedClips != null && queuedClips.Count > 0) { List <String> pearlsToPurge = new List <string>(); foreach (String eventName in queuedClips.Keys) { if (clipIsPearlOfWisdom(eventName)) { Console.WriteLine("There's already a pearl in the queue, can't add another"); isValid = false; if (eventName != PearlsOfWisdom.getMessageFolder(newPearlType)) { pearlsToPurge.Add(eventName); } } } foreach (String pearlToPurge in pearlsToPurge) { queuedClips.Remove(pearlToPurge); Console.WriteLine("Queue contains a pearl " + pearlToPurge + " which conflicts with " + newPearlType); } } return(isValid); }
public void playMessage(QueuedMessage queuedMessage, PearlsOfWisdom.PearlType pearlType, double pearlMessageProbability) { if (queuedMessage.canBePlayed) { lock (queuedClips) { if (queuedClips.Contains(queuedMessage.messageName)) { Console.WriteLine("Clip for event " + queuedMessage.messageName + " is already queued, ignoring"); return; } else { PearlsOfWisdom.PearlMessagePosition pearlPosition = PearlsOfWisdom.PearlMessagePosition.NONE; if (pearlType != PearlsOfWisdom.PearlType.NONE && checkPearlOfWisdomValid(pearlType)) { pearlPosition = pearlsOfWisdom.getMessagePosition(pearlMessageProbability); } if (pearlPosition == PearlsOfWisdom.PearlMessagePosition.BEFORE) { QueuedMessage pearlQueuedMessage = new QueuedMessage(queuedMessage.abstractEvent); pearlQueuedMessage.dueTime = queuedMessage.dueTime; queuedClips.Add(PearlsOfWisdom.getMessageFolder(pearlType), pearlQueuedMessage); } queuedClips.Add(queuedMessage.messageName, queuedMessage); if (pearlPosition == PearlsOfWisdom.PearlMessagePosition.AFTER) { QueuedMessage pearlQueuedMessage = new QueuedMessage(queuedMessage.abstractEvent); pearlQueuedMessage.dueTime = queuedMessage.dueTime; queuedClips.Add(PearlsOfWisdom.getMessageFolder(pearlType), pearlQueuedMessage); } } } } }
private Boolean clipIsPearlOfWisdom(String eventName) { foreach (PearlsOfWisdom.PearlType pearlType in Enum.GetValues(typeof(PearlsOfWisdom.PearlType))) { if (pearlType != PearlsOfWisdom.PearlType.NONE && PearlsOfWisdom.getMessageFolder(pearlType) == eventName) { return(true); } } return(false); }
public void setPearlsOfWisdom(PearlsOfWisdom pearlsOfWisdom) { this.pearlsOfWisdom = pearlsOfWisdom; }
public void setPearlsOfWisdom(PearlsOfWisdom pearlsOfWisdom) { this.pearlsOfWisdom = pearlsOfWisdom; }