public bool Matches(string name)
 {
     return(Nickname != null &&
            (Nickname.Contains(name, StringComparison.OrdinalIgnoreCase) ||
             NormalizedNickname.Contains(name, StringComparison.OrdinalIgnoreCase)) ||
            Username.Contains(name, StringComparison.OrdinalIgnoreCase) ||
            NormalizedUsername.Contains(name, StringComparison.OrdinalIgnoreCase));
 }
예제 #2
0
        /// <summary>
        /// Erstellt ein neues ircMessage Objekt um eine IRC Nachricht dazustellen
        /// </summary>
        /// <param name="data">Die Ausgangsdaten</param>
        /// <param name="serverConnetion">Die ServerConnetion von dem die Nachricht kommt</param>
        public IrcMessage(IrcMessageData data, ServerConnection serverConnetion)
        {
            Contract.Requires(data != null && serverConnetion != null);

            Data             = data;
            ServerConnetion  = serverConnetion;
            Nickname         = Data.Nick;
            Source           = Data.Channel ?? Data.Nick;
            Answered         = false;
            UnloggedMessages = new Queue <LogEvent>(3);
            List <string> MessageTmp = Data.MessageArray.Where(x => !String.IsNullOrEmpty(x)).ToList();

            Message = MessageTmp.Join(" ");
            if (Nickname.Contains("#") || Nickname.Contains(".") || ServerConnetion.IrcClient.IsMe(Nickname) || Nickname.Equals("freenode-connect", StringComparison.OrdinalIgnoreCase) || Nickname.Equals("nickserv", StringComparison.OrdinalIgnoreCase) || Nickname.Equals("chanserv", StringComparison.OrdinalIgnoreCase) || Data.Message.Contains("[Global Notice]"))
            {
                IsIgnored = true;
            }
            else
            {
                IsIgnored = false;
            }
            IsPrivate = data.Type.In(ReceiveType.QueryAction, ReceiveType.QueryMessage, ReceiveType.QueryNotice);
            if (Message.Length > 0)
            {
                IsCommand = Message[0] == '!';
            }
            else
            {
                IsCommand = false;
            }
            if (IsCommand)
            {
                CommandArgs = MessageTmp.Skip(1).ToList();
                CommandLine = CommandArgs.Join(" ");
                CommandName = MessageTmp[0].TrimStart('!');
            }
            else
            {
                CommandArgs = MessageTmp;
                CommandLine = Message;
                CommandName = "";
            }
            HasArgs = CommandArgs.Count > 0;
        }
        private static void SaveHighscore()
        {
            ///Shrnutí
            ///Tato metoda uloží Highscore do tabulky se zvolenou přezdívkou
            PositionedText nickname = new PositionedText("Enter your Nickname: ", ConsoleColor.Black, (Console.WindowWidth - 40) / 2, 21); //Grafika vyzve hráče, aby zapsal přezdívku, pod kterou bude skóre v tabulce uloženo

            nickname.Print(true, Reprint);
            do
            {
                Console.SetCursorPosition(Console.WindowWidth / 2 + 1, 21);             //Umistí kurzor na pozici, kam se bude brzy psát název
                Console.Write(new string(' ', 50));                                     //Vymaže následujících 50 charů, aby hráč mohl psát na volné místo
                Console.SetCursorPosition(Console.WindowWidth / 2 + 1, 21);             //Znovu umistí kurzor na pozici
                Console.CursorVisible   = true;                                         //Zviditelní kurzor, aby bylo jasné, že se očekává zadávání textu
                Console.ForegroundColor = ConsoleColor.White;                           //Nastaví se barva textu na bílou bvarvou
                Nickname = Console.ReadLine();                                          //Přečte zadaný text a uloží jej do fieldu Nickname
                if (Nickname.Contains("   ") || Nickname.Length > 20 || Nickname == "") //Pokud je přezdívka příliš dlouhá nebo příliš krátká a nebo obsahuje tři mezery (kterými se odděluje přezdívka od skóre), tak je uživateli zobrazeno, že přezdívka je neplatná a pokusí se jii zadat znovu
                {
                    (new PositionedText("Invalid or too long nickname!", ConsoleColor.Black, Console.WindowWidth / 2 - 9, 23)).Print(false, Reprint);
                    Nickname = "";
                }
            } while (Nickname == "");                                                                                                                                                           //Tato metoda trvá dokud není zadána validní přezdívka
            Console.CursorVisible = false;                                                                                                                                                      //Znovu se skryje text, protože už se žádný text zadávat nebude
            try                                                                                                                                                                                 //Pokusíme se upravit seznam nejlepší výkonů
            {
                int[]         gameParameters     = GameControls.PlayedGame.GetParameters();                                                                                                     //Získáme parametry dohrané hry
                string        entry              = $"{Nickname}   {Score}   {gameParameters[0]}×{gameParameters[1]} minefield with {gameParameters[2]} mines in {GameControls.CompletionTime}"; //Ty se společně s Přezdívkou a skóre zapíší do stringu, který se bude zapisovat do tabulky
                List <string> currentLeaderboard = new List <string>(File.ReadAllLines(Path));                                                                                                  //Nejprve se získá současný seznam
                currentLeaderboard.Insert(Position - 1, entry);                                                                                                                                 //Na správnou pozici se vloží tento string
                if (currentLeaderboard.Count == 11)                                                                                                                                             //Pokud přesáhne počet zapsaných výkonů 10
                {
                    currentLeaderboard = currentLeaderboard.GetRange(0, 10);                                                                                                                    //Tak se odstraní poslední výkon
                }
                File.WriteAllLines(Path, currentLeaderboard);                                                                                                                                   //Nový seznam se zapíše zpátky do souboru
                Program.ShowLeaderboards();                                                                                                                                                     //Po zapsání do tabulky zobrazíme hráči nově vypadající tabulku nejlepších výkonů
            }
            catch (Exception e)                                                                                                                                                                 //Pokud dojde k chybě, informujeme uživatele
            {
                Console.WriteLine($"The file {Path} couldn't be changed. Please check your acces-rights");
                Console.WriteLine("Your score couldn't be saved");
                Console.WriteLine(e.Message);
            }
            return;
        }