public void Initialize_Input_Serializers() { // arrange var serializer = new InputSerializer(); // act var resolver = new ValueSerializerCollection( new IValueSerializer[] { serializer }.ToDictionary(t => t.Name)); // assert Assert.True(serializer.IsInitialized); }
public void Initialize_Input_Serializers() { // arrange var serializer = new InputSerializer(); // act var resolver = new ValueSerializerResolver( new IValueSerializer[] { serializer }); // assert Assert.True(serializer.IsInitialized); }
public void IniSerialize_Test() { var serializer = new IniConfigurationSerializer(new BooleanMapping("true", "false"), "nul"); string _mapping = TestUtilities.GetStringResource("InputMappings.DirectInput.XINPUT_DEVICE.json"); IInputMapping mapping = JsonConvert.DeserializeObject <InputMapping>(_mapping); var testmappings = new StoneProvider().Controllers.First().Value; var realmapping = JsonConvert.DeserializeObject <ControllerLayout>( TestUtilities.GetStringResource("InputMappings.xinput_device.json")); var mapcol = ControllerElementMappings.GetDefaultMappings(realmapping, testmappings); var template = new InputTemplate <IRetroArchInput>(mapcol, 0); string serializedValue = new InputSerializer(serializer).Serialize(template, mapping) .Replace(Environment.NewLine, string.Empty); Assert.Equal( TestUtilities.GetStringResource("Configurations.ExampleInput.ini") .Replace(Environment.NewLine, string.Empty), serializedValue); }
// 송신. void SendInputData() { PlayerInfo info = PlayerInfo.GetInstance(); int playerId = info.GetPlayerId(); int count = inputBuffer[playerId].Count; InputData inputData = new InputData(); inputData.count = count; inputData.flag = suspendSync; inputData.datum = new MouseData[bufferNum]; //string str1 = "Count :" + count; //Debug.Log(str1); for (int i = 0; i < count; ++i) { inputData.datum[i] = inputBuffer[playerId][i]; //str1 = "Send mouse data => id:" + i + " - " + inputBuffer[playerId][i].frame; //Debug.Log(str1); } // 구조체를 byte 배열로 변환합니다. InputSerializer serializer = new InputSerializer(); bool ret = serializer.Serialize(inputData); if (ret) { byte[] data = serializer.GetSerializedData(); // 데이터를 송신합니다. m_transport.Send(data, data.Length); } // 상태를 갱신. if (syncState == SyncState.NotStarted) { syncState = SyncState.WaitSynchronize; } }
// 수신. public void ReceiveInputData() { byte[] data = new byte[1400]; // 데이터를 송신합니다. int recvSize = m_transport.Receive(ref data, data.Length); if (recvSize < 0) { // 입력정보를 수신하지 않았으므로 다음 프레임을 처리할 수 없습니다. return; } string str = System.Text.Encoding.UTF8.GetString(data); if (requestData.CompareTo(str.Trim('\0')) == 0) { // 접속 요청 패킷 . return; } // byte 배열을 구조체로 변환합니다. InputData inputData = new InputData(); InputSerializer serializer = new InputSerializer(); serializer.Deserialize(data, ref inputData); // 수신한 입력 정보를 설정합니다. //PlayerInfo info = PlayerInfo.GetInstance(); //int playerId = info.GetPlayerId(); int playerId = 0; int opponent = (playerId == 0) ? 1 : 0; for (int i = 0; i < inputData.count; ++i) { int frame = inputData.datum[i].frame; //Debug.Log("Set inputdata"+i+"[" + recvFrame + "][" + frame + "]:" + (recvFrame + 1 == frame)); if (recvFrame + 1 == frame) { mouseInputBuffer[opponent].Add(inputData.datum[i]); ++recvFrame; } } //Debug.Log("recvFrame:" + recvFrame); // 접속 종료 플래그를 감시. bit1:접속 종료 응답, bit0: 접속 종료 요구. if ((inputData.flag & 0x03) == 0x03) { // 접속 종료 플래그 수신. suspendSync = 0x03; Debug.Log("Receive SuspendSync."); } if ((inputData.flag & 1) > 0 && (suspendSync & 1) > 0) { suspendSync |= 0x02; Debug.Log("Receive SuspendSync." + inputData.flag); } if (isConnected && suspendSync == 0x03) { // 서로 접속 종료 상태가 되었으므로 상대에게의 접속 종료 플래그를 보내기위한. // 유예기간을 두고 조금 후에 접속종료합니다. ++disconnectCount; if (disconnectCount > 10) { m_transport.Disconnect(); Debug.Log("Disconnect because of suspendSync."); } } // 상태 갱신. if (syncState == SyncState.NotStarted) { syncState = SyncState.WaitSynchronize; } //loopCounter = 0; }
// 수신. public void ReceiveInputData() { byte[] data = new byte[1400]; // 데이터를 송신합니다. int recvSize = m_transport.Receive(ref data, data.Length); if (recvSize < 0) { // 입력정보를 수신하지 않았으므로 다음 프레임을 처리할 수 없습니다. return; } string str = System.Text.Encoding.UTF8.GetString(data); if (requestData.CompareTo(str.Trim('\0')) == 0) { // 접속 요청 패킷 . return; } // byte 배열을 구조체로 변환합니다. InputData inputData = new InputData(); InputSerializer serializer = new InputSerializer(); serializer.Deserialize(data, ref inputData); // 수신한 입력 정보를 설정합니다. PlayerInfo info = PlayerInfo.GetInstance(); int playerId = info.GetPlayerId(); int opponent = (playerId == 0)? 1 : 0; for (int i = 0; i < inputData.count; ++i) { int frame = inputData.datum[i].frame; //Debug.Log("Set inputdata"+i+"[" + recvFrame + "][" + frame + "]:" + (recvFrame + 1 == frame)); if (recvFrame + 1 == frame) { inputBuffer[opponent].Add(inputData.datum[i]); ++recvFrame; } } //Debug.Log("recvFrame:" + recvFrame); // 접속 종료 플래그를 감시. bit1:접속 종료 응답, bit0: 접속 종료 요구. if ((inputData.flag & 0x03) == 0x03) { // 접속 종료 플래그 수신. suspendSync = 0x03; Debug.Log("Receive SuspendSync."); } if ((inputData.flag & 1) > 0 && (suspendSync & 1) > 0) { suspendSync |= 0x02; Debug.Log("Receive SuspendSync." + inputData.flag); } if (isConnected && suspendSync == 0x03) { // 서로 접속 종료 상태가 되었으므로 상대에게의 접속 종료 플래그를 보내기위한. // 유예기간을 두고 조금 후에 접속종료합니다. ++disconnectCount; if (disconnectCount > 10) { m_transport.Disconnect(); Debug.Log("Disconnect because of suspendSync."); } } // 상태 갱신. if (syncState == SyncState.NotStarted) { syncState = SyncState.WaitSynchronize; } //loopCounter = 0; }