Exemplo n.º 1
0
        private static void CreateThread(IRCMessage pMessageInfo)
        {
            Sync synth = null;

            try
            {
                var text     = pMessageInfo.message;
                var username = pMessageInfo.userName;

                if (text.Length > 230)
                {
                    var split = text.Split(' ').ToList().Distinct().ToArray();
                    text = String.Join(" ", split);
                }

                bool speakUserName = false;
                while (true)
                {
                    if (_readyStateSyncQueue.Count > 0)
                    {
                        lock (_readyStateSyncQueue)
                        {
                            if (_readyStateSyncQueue.Count > 0)
                            {
                                if (_lastUserName != username)
                                {
                                    _lastUserName = username;
                                    speakUserName = true;
                                }

                                if ((DateTime.Now - _lastUserNameDateTime).TotalMinutes > 2)
                                {
                                    speakUserName         = true;
                                    _lastUserNameDateTime = DateTime.Now;
                                }

                                synth = _readyStateSyncQueue.Dequeue();
                                break;
                            }
                        }
                    }

                    ResetEvent.WaitOne(1000);
                    ResetEvent.Reset();
                }


                //Clean out addresses.
                var words = text.Split(' ').ToArray();
                for (int i = 0; i < words.Length; i++)
                {
                    if (words[i].ToLower().Contains("http"))
                    {
                        words[i] = string.Empty;
                    }
                }
                text = string.Join(" ", words);
                //CLEAN TEXT

                synth.SetRate(username, text);
                if (speakUserName)
                {
                    synth.Synth.Speak(username);
                }
                synth.RandomVoice(username);

                // Speak a string.
                synth.Speak(text);
            }
            catch (Exception ex)
            {
                Logger.Log(ex.ToString());
            }
            finally
            {
                if (synth != null)
                {
                    synth.Enqueue();
                }

                thread++;
            }
        }
Exemplo n.º 2
0
 public override void Send(INetPacket packet)
 {
     ResetEvent.Reset();
     base.Send(packet);
 }
Exemplo n.º 3
0
 public void Reset()
 {
     ResetEvent.Reset();
 }