private static void OnReserveEntityRequest(ref ReserveEntityMsg msg, MyNetworkClient sender) { if (!Sync.IsServer) { return; } MyTransportMessageEnum responseState = MyTransportMessageEnum.Success; ReservedEntityData entityData; var entityId = new KeyValuePair <long, long>(msg.EntityId, 0); if (m_reservedEntities.TryGetValue(entityId, out entityData)) { if (entityData.ReserverId == new MyPlayer.PlayerId(sender.SteamUserId, msg.SenderSerialId)) { entityData.ReservationTimer = Stopwatch.GetTimestamp() + Stopwatch.Frequency * msg.ReservationTimeMs / 1000; } else { responseState = MyTransportMessageEnum.Failure; } } else { m_reservedEntities.Add(entityId, new ReservedEntityData() { EntityId = msg.EntityId, ReservationTimer = Stopwatch.GetTimestamp() + Stopwatch.Frequency * msg.ReservationTimeMs / 1000, ReserverId = new MyPlayer.PlayerId(sender.SteamUserId, msg.SenderSerialId) }); } Sync.Layer.SendMessage(ref msg, sender.SteamUserId, responseState); }
public void RequestEntityReservation(long entityId, long reservationTimeMs, int senderSerialId) { var msg = new ReserveEntityMsg() { EntityId = entityId, ReservationTimeMs = reservationTimeMs, SenderSerialId = senderSerialId, }; Sync.Layer.SendMessageToServer(ref msg, MyTransportMessageEnum.Request); }
private static void OnReserveEntityFailure(ref ReserveEntityMsg msg, MyNetworkClient sender) { if (OnReservationResult != null) { var reservationData = new ReservedEntityData() { Type = MyReservedEntityType.ENTITY, EntityId = msg.EntityId, ReserverId = new MyPlayer.PlayerId(0, msg.SenderSerialId) }; OnReservationResult(ref reservationData, false); } }
private static void OnReserveEntityRequest(ref ReserveEntityMsg msg, MyNetworkClient sender) { if (!Sync.IsServer) return; MyTransportMessageEnum responseState = MyTransportMessageEnum.Success; ReservedEntityData entityData; var entityId = new KeyValuePair<long, long>(msg.EntityId, 0); if (m_reservedEntities.TryGetValue(entityId, out entityData)) { if (entityData.ReserverId == new MyPlayer.PlayerId(sender.SteamUserId, msg.SenderSerialId)) entityData.ReservationTimer = Stopwatch.GetTimestamp() + Stopwatch.Frequency * msg.ReservationTimeMs / 1000; else responseState = MyTransportMessageEnum.Failure; } else m_reservedEntities.Add(entityId, new ReservedEntityData() { EntityId = msg.EntityId, ReservationTimer = Stopwatch.GetTimestamp() + Stopwatch.Frequency * msg.ReservationTimeMs / 1000, ReserverId = new MyPlayer.PlayerId(sender.SteamUserId, msg.SenderSerialId) }); Sync.Layer.SendMessage(ref msg, sender.SteamUserId, responseState); }