public void InitGameCommandTest() { var command1 = new JoinCharacterCommand { CharacterId = Guid.NewGuid(), SessionId = Guid.NewGuid() }; var command2 = (JoinCharacterCommand)CommandBase.Parse(command1.Serialize()); Assert.AreEqual(command1.SessionId, command2.SessionId); Assert.AreEqual(command1.CharacterId, command2.CharacterId); }
void MainWindow_Loaded(object sender, RoutedEventArgs e) { DI.Set<ILoginControl>(() => new LoginWindow { Owner = this }); DI.Set<ICharactersControl>(() => new CharactersWindow { Owner = this }); DI.Set<ICreateCharacterControl>(() => new CreateCharacterWindow { Owner = this }); DI.Set<IGetStringControl>(() => new GetStringWindow()); _clientContext.Connector.DataReceived += OnDataReceived; App.MainController.SelectCharacter(character => { var command = new JoinCharacterCommand { CharacterId = character.Id, SessionId = App.MainController.PersonSessionId.GetValueOrDefault() }; _clientContext.Connector.Send(command); var timer = new DispatcherTimer(TimeSpan.FromSeconds(0.02), DispatcherPriority.Normal, ((o, args) => { TimerTick(); }), Dispatcher); timer.Start(); }); Tune(); }
public static CommandBase Parse(byte[] data) { using (var stream = new MemoryStream(data)) using (var reader = new BinaryReader(stream)) { CommandBase command; switch ((CommandType)reader.ReadUInt16()) { case CommandType.JoinCharacter: command = new JoinCharacterCommand(); break; case CommandType.CharacterJoined: command = new CharacterJoinedCommand(); break; case CommandType.CharacterDetected: command = new CharacterDetectedCommand(); break; case CommandType.KeyPressed: command = new KeyPressedCommand(); break; case CommandType.PositionChanged: command = new PositionChangedCommand(); break; default: throw new NotImplementedException(); } command.Token = reader.ReadUInt16(); command.Deserialize(reader); return command; } }