private void HandleServerCommand(ServerCommand command) { switch (command.Type) { case ServerCommandType.PRI: HandlePrivateMessage(command, command.Value <string>("character")); break; case ServerCommandType.MSG: case ServerCommandType.LRP: HandleChannelMessage(command, command.Value <string>("character")); break; case ServerCommandType.RLL: var rll = command.Payload.ToObject <ServerRll>(); if (rll.channel == null) { HandlePrivateMessage(command, rll.character); } else { HandleChannelMessage(command, rll.character); } break; case ServerCommandType.TPN: var tpn = command.Payload.ToObject <ServerTpn>(); characterManager.GetCharacter(tpn.character).TypingStatus = tpn.status; break; } }
private void OnCommandReceived(ServerCommand command) { switch (command.Type) { case ServerCommandType.JCH: var jch = command.Payload.ToObject <ServerJch>(); if (jch.character.identity == chatManager.OwnCharacterName) { var memberList = new ObservableKeyedList <Character, Channel.Member>(x => x.Character); var newChannel = new Channel(jch.channel, jch.title, memberList); members.Add(newChannel, memberList); joinedChannels.Add(newChannel); SetIsJoined(newChannel, true); return; } break; case ServerCommandType.ICH: case ServerCommandType.CDS: case ServerCommandType.CBU: case ServerCommandType.CKU: case ServerCommandType.COA: case ServerCommandType.COL: case ServerCommandType.COR: case ServerCommandType.CSO: case ServerCommandType.CTU: case ServerCommandType.LCH: case ServerCommandType.RMO: break; case ServerCommandType.FLN: var flnCharacter = command.Value <string>("character"); foreach (var item in joinedChannels.ToList()) { members[item].Remove(characterManager.GetCharacter(flnCharacter)); } return; case ServerCommandType.CHA: publicChannels.Reset(command.Payload.GetValue("channels").Select(x => { var name = x.Value <string>("name"); var item = new ChannelListItem(name, name, x.Value <int>("characters")); item.IsJoined = JoinedChannels.ContainsKey(item.Id); return(item); })); return; case ServerCommandType.ORS: privateChannels.Reset(command.Payload.GetValue("channels").Select(x => { var item = new ChannelListItem(x.Value <string>("name"), x.Value <string>("title"), x.Value <int>("characters")); item.IsJoined = JoinedChannels.ContainsKey(item.Id); return(item); })); return; default: return; } HandleChannelMessage(joinedChannels[command.Value <string>("channel")], command); }
private void OnCommandReceived(ServerCommand command) { switch (command.Type) { case ServerCommandType.BRO: var bro = command.Payload.ToObject <ServerBro>(); AddEvent(new BroadcastEvent(characterManager.GetCharacter(bro.character), bro.message, command.Time)); break; case ServerCommandType.ERR: var err = command.Payload.ToObject <ServerErr>(); AddEvent(new ErrorEvent(err.message, command.Time)); break; case ServerCommandType.STA: var sta = command.Payload.ToObject <ServerSta>(); var character = characterManager.GetCharacter(sta.character); AddEvent(new StatusEvent(character, sta.status, sta.statusmsg, command.Time)); break; case ServerCommandType.RTB: var rtb = command.Payload.ToObject <ServerRtb>(); switch (rtb.type) { case ServerRtb.Type.note: AddEvent(new NoteEvent(characterManager.GetCharacter(command.Value <string>("sender")), command.Value <string>("id"), command.Value <string>("subject"))); break; case ServerRtb.Type.friendadd: case ServerRtb.Type.friendremove: case ServerRtb.Type.friendrequest: case ServerRtb.Type.trackadd: case ServerRtb.Type.trackrem: break; default: AddEvent(new RtbEvent(rtb.type, command.Value <string>("id"), characterManager.GetCharacter(rtb.name), command.Payload)); break; } break; case ServerCommandType.CIU: var ciu = command.Payload.ToObject <ServerCiu>(); var channel = (ciu.name == ciu.title ? channelManager.PublicChannels : channelManager.PrivateChannels)[ciu.name]; AddEvent(new InviteEvent(characterManager.GetCharacter(ciu.sender), channel)); break; case ServerCommandType.SYS: var chan = command.Value <string>("channel"); AddEvent(new SysEvent(command.Value <string>("message"), channelManager.JoinedChannels.ContainsKey(chan) ? channelManager.JoinedChannels[chan] : null)); break; case ServerCommandType.ZZZ: AddEvent(new SysEvent("Debug: " + command.Value <string>("message"), null)); break; } }
private Message DoRead(Stream stream) { var time = stream.ReadByte() << 24 | stream.ReadByte() << 16 | stream.ReadByte() << 8 | stream.ReadByte(); var date = new DateTime((long)time * 10000000 + Helpers.UnixEpoch.Ticks); var type = (Message.Type)stream.ReadByte(); var length = stream.ReadByte(); var bytes = new byte[length]; stream.Read(bytes, 0, length); var sender = Encoding.UTF8.GetString(bytes, 0, length); length = stream.ReadByte() << 8 | stream.ReadByte(); bytes = new byte[length]; stream.Read(bytes, 0, length); var text = Encoding.UTF8.GetString(bytes, 0, length); return(new Message(type, characterManager.GetCharacter(sender), date, text)); }
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { return(new Channel.Member(characterManager.GetCharacter((string)reader.Value))); }
public CharacterViewModel GetCharacterViewModel(string character) => GetCharacterViewModel(characterManager.GetCharacter(character));
public GameCharacter GetCharacter(int characterId) { var result = _characterManager.GetCharacter(characterId); return(result); }