private static void OnReserveEnvironmentItemRequest(ref ReserveEnvironmentItemMsg msg, MyNetworkClient sender) { if (!Sync.IsServer) { return; } MyTransportMessageEnum responseState = MyTransportMessageEnum.Success; ReservedEntityData entityData; var entityId = new KeyValuePair <long, long>(msg.EntityId, msg.LocalId); 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, LocalId = msg.LocalId, 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 RequestEnvironmentItemReservation(long entityId, int localId, long reservationTimeMs, int senderSerialId) { var msg = new ReserveEnvironmentItemMsg() { EntityId = entityId, LocalId = localId, ReservationTimeMs = reservationTimeMs, SenderSerialId = senderSerialId }; Sync.Layer.SendMessageToServer(ref msg, MyTransportMessageEnum.Request); }
private static void OnReserveEnvironmentItemFailure(ref ReserveEnvironmentItemMsg msg, MyNetworkClient sender) { if (OnReservationResult != null) { var reservationData = new ReservedEntityData() { Type = MyReservedEntityType.ENVIRONMENT_ITEM, EntityId = msg.EntityId, LocalId = msg.LocalId, ReserverId = new MyPlayer.PlayerId(0, msg.SenderSerialId) }; OnReservationResult(ref reservationData, false); } }
private static void OnReserveEnvironmentItemRequest(ref ReserveEnvironmentItemMsg msg, MyNetworkClient sender) { if (!Sync.IsServer) return; MyTransportMessageEnum responseState = MyTransportMessageEnum.Success; ReservedEntityData entityData; var entityId = new KeyValuePair<long, long>(msg.EntityId, msg.LocalId); 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, LocalId = msg.LocalId, ReservationTimer = Stopwatch.GetTimestamp() + Stopwatch.Frequency * msg.ReservationTimeMs / 1000, ReserverId = new MyPlayer.PlayerId(sender.SteamUserId, msg.SenderSerialId) }); Sync.Layer.SendMessage(ref msg, sender.SteamUserId, responseState); }