protected override void parseDataMessageFromClient(NetIncomingMessage rawMessage) { // add hook to call multiplayer core NetConnection peer = rawMessage.SenderConnection; using IncomingMessage message = new IncomingMessage(); using Stream readStream = new NetBufferReadStream(rawMessage); using BinaryReader reader = new BinaryReader(readStream); while (rawMessage.LengthBits - rawMessage.Position >= 8) { message.Read(reader); NetConnection connection = rawMessage.SenderConnection; // don't pass rawMessage into context because it gets reused this.OnProcessingMessage(message, outgoing => this.sendMessage(connection, outgoing), () => { if (this.peers.ContainsLeft(message.FarmerID) && this.peers[message.FarmerID] == peer) { this.gameServer.processIncomingMessage(message); } else if (message.MessageType == StardewValley.Multiplayer.playerIntroduction) { NetFarmerRoot farmer = this.Multiplayer.readFarmer(message.Reader); this.gameServer.checkFarmhandRequest("", this.getConnectionId(rawMessage.SenderConnection), farmer, msg => this.sendMessage(peer, msg), () => this.peers[farmer.Value.UniqueMultiplayerID] = peer); } }); } }
private void parseDataMessageFromClient(NetIncomingMessage dataMsg) { NetConnection peer = dataMsg.SenderConnection; using (IncomingMessage message = new IncomingMessage()) { using (NetBufferReadStream bufferReadStream = new NetBufferReadStream((NetBuffer)dataMsg)) { using (BinaryReader reader = new BinaryReader((Stream)bufferReadStream)) { while ((long)dataMsg.LengthBits - dataMsg.Position >= 8L) { message.Read(reader); if (this.peers.ContainsLeft(message.FarmerID) && this.peers[message.FarmerID] == peer) { this.gameServer.processIncomingMessage(message); } else if ((int)message.MessageType == 2) { NetFarmerRoot farmer = ModCore.multiplayer.readFarmer(message.Reader); this.gameServer.checkFarmhandRequest("", farmer, (msg => this.sendMessage(peer, msg)), (Action)(() => this.peers[farmer.Value.UniqueMultiplayerID] = peer)); } } } } } }
private void parseDataMessageFromServer(NetIncomingMessage dataMsg) { using (IncomingMessage message = new IncomingMessage()) { using (NetBufferReadStream bufferReadStream = new NetBufferReadStream((NetBuffer)dataMsg)) { using (BinaryReader reader = new BinaryReader((Stream)bufferReadStream)) { while ((long)dataMsg.LengthBits - dataMsg.Position >= 8L) { message.Read(reader); this.processIncomingMessage(message); } } } } }