private void Look(Packet packet) { string response = packet.Client.Room.GetName(), names = string.Empty, name = string.Empty; packet.Client.Send("".NewLine(), false); packet.Client.Send(response.Ansi(Style.cyan).NewLine()); response = packet.Client.Room.GetDesciption(); packet.Client.Send(response.Ansi(Style.white).WordWrap(), false); int i = 0, count = packet.Client.Room.Exits.Count; foreach(Exit exit in packet.Client.Room.Exits) { names = names + exit.DoorLabel; if (i != count) { names = names + ", "; } if (i == count) { names = names + "."; } i++; } if (names != string.Empty) response = "Obvious exits: " + names; else response = "No obvious exits."; packet.Client.Send(response.Ansi(Style.green).NewLine()); names = string.Empty; if (packet.Client.Room.Players.Count > 1) { names = Function.GetOtherNames(packet.Client.Room.Players.ToArray(), packet.Client.Name); if (names != string.Empty) packet.Client.Send("You see:" + names.Ansi(true, Style.cyan, Style.boldOn).WordWrap().NewLine()); } names = Function.GetNames(packet.Client.Room.Mobs.ToArray()); if (names != string.Empty) packet.Client.Send("You see:" + names.Ansi(Style.green).NewLine()); // add items }
public bool InvokeCommand(string verb, Packet packet) { if (List.ContainsKey(verb)) { List[verb](packet); return true; } return false; }
public void InvokeCommand(string verb, Packet packet) { if (RoomCommands.Keys.Any(key => key.StartsWith(verb, System.StringComparison.CurrentCulture))) { RoomCommands.InvokeCommand(verb, packet); return; } if (PlayerCommands.Keys.Any(key => key.StartsWith(verb, System.StringComparison.CurrentCulture))) { PlayerCommands.InvokeCommand(verb, packet); return; } }
private Packet Parse(string message, Connection player) { Packet packet = new Packet(string.Empty, string.Empty, player); message = message.TrimStart(' '); message = message.StripExtraSpaces(); if (message.FirstChar() == '\'') { message = message.Remove(0, 1).Insert(0, "say ").StripExtraSpaces(); packet.known = true; } else { bool error = false; if (message.FirstWordIsSingleChar()) { char ch = message.FirstChar(); switch (ch) { case 'l': message = message.Remove(0, 1).Insert(0, "look"); packet.known = true; break; case 'i': message = message.Remove(0, 1).Insert(0, "inventory"); packet.known = true; break; case '?': message = message.Remove(0, 1).Insert(0, "help"); packet.known = true; break; default: packet.parameter = packet.verb; packet.verb = ch.ToString(); error = true; break; } } if (error) return packet; } packet.verb = message.FirstWord(); packet.parameter = message.StripFirstWord(); if (Commands.IsCommand(packet.verb)) { packet.known = true; } if (!packet.known) { string verb = packet.verb; packet = Function.ContainsExit(player.Room.Exits.ToArray(), packet); if (packet.verb != verb) { packet.known = true; } } return packet; }
private void Hide(Packet packet) { DontKnowYet(packet); }
private void Get(Packet packet) { DontKnowYet(packet); }
private void Close(Packet packet) { DontKnowYet(packet); }
public void DontKnowYet(Packet packet) { packet.Client.Send(Resource.DontKnowHow(packet.verb, packet.Client)); }
public void Push(Packet packet) { queue.Enqueue(packet); OnEventReceived(this, packet); }
private void Talk(Packet packet) { DontKnowYet(packet); }
private void Say(Packet packet) { try { if (packet.parameter.IsNullOrWhiteSpace()) { packet.Client.Send("Say what?".Ansi(Style.yellow, Style.white).NewLine()); return; } if (!packet.parameter.HasLastCharPunctuation()) { packet.parameter += "."; } string message = "\"" + packet.parameter + "\"".NewLine().Ansi(Style.white); foreach (Connection player in packet.Client.Room.Players) { if (player.Name == packet.Client.Name) { player.Send("You say, ".Ansi(Style.white) + message.Ansi(Style.white)); } else { player.Send(packet.Client.Name + " says, ".Ansi(Style.white) + message.Ansi(Style.white)); } } } catch (Exception e) { Common.Settings.SystemMessageQueue.Push(e.ToString()); } }
private void Quit(Packet packet) { Common.Settings.Players.Remove(packet.Client.Name, "Player has left."); packet.Client.Send("See you again soon!".Ansi(Style.white).NewLine().NewLine()); packet.Client.Room.Players.Remove(packet.Client.Name); SystemEventPacket eventPacket = new SystemEventPacket(EventType.disconnect, packet.Client.Name + " has left.", packet.Client); Common.Settings.SystemEventQueue.Push(eventPacket); packet.Client.Shutdown(); packet.Client.Dispose(); }
private void Pick(Packet packet) { DontKnowYet(packet); }
private void Open(Packet packet) { DontKnowYet(packet); }
private void MoveTo(Packet packet) { string names = string.Empty; int results = Function.GetSameNameCount(packet.Client.Room.Exits.ToArray(), packet.parameter); if (results > 1) { packet.Client.Send("Too ambiguous.".Ansi(Style.yellow).NewLine()); return; } Exit exit = packet.Client.Room.Exits.Find(e => (e.DoorLabel.StartsWith(packet.parameter, StringComparison.OrdinalIgnoreCase))); if (exit == null) { DontKnowYet(packet); return; } Room nextRoom = exit.Room; packet.Client.Room.RemovePlayer(packet.Client, exit.Name); nextRoom.AddPlayer(packet.Client); }
private void Whisper(Packet packet) { DontKnowYet(packet); }
private void Statistics(Packet packet) { packet.Client.Send("I don't know how to ".Ansi(Style.yellow) + packet.verb.Ansi(Style.white) + " yet. But I hope to soon.".Ansi(Style.yellow, Style.white).NewLine()); }
private void Yell(Packet packet) { DontKnowYet(packet); }
private void Messages_OnPlayerEventReceived(object myObject, Packet packet) { Packet message = Messages.Pop(); if (message == null) message = packet; Common.Settings.SystemMessageQueue.Push("Room received: " + message); }
public void DontKnowHow(Packet command) { RoomCommands.DontKnowYet(command); }