Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
 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);
     }
 }
		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);
		}