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)); }
/// <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; }