Beispiel #1
0
 public override void Load(LoadInfo info)
 {
     base.Load(info);
     if (info.msg.marketTerminal == null)
     {
         return;
     }
     _customerSteamId         = info.msg.marketTerminal.customerSteamId;
     _customerName            = info.msg.marketTerminal.customerName;
     _timeUntilCustomerExpiry = info.msg.marketTerminal.timeUntilExpiry;
     _marketplace             = new EntityRef <Marketplace>(info.msg.marketTerminal.marketplaceId);
     if (pendingOrders == null)
     {
         pendingOrders = Facepunch.Pool.GetList <ProtoBuf.MarketTerminal.PendingOrder>();
     }
     if (pendingOrders.Count > 0)
     {
         foreach (ProtoBuf.MarketTerminal.PendingOrder pendingOrder in pendingOrders)
         {
             ProtoBuf.MarketTerminal.PendingOrder obj = pendingOrder;
             Facepunch.Pool.Free(ref obj);
         }
         pendingOrders.Clear();
     }
     foreach (ProtoBuf.MarketTerminal.PendingOrder order in info.msg.marketTerminal.orders)
     {
         ProtoBuf.MarketTerminal.PendingOrder item = order.Copy();
         pendingOrders.Add(item);
     }
 }
Beispiel #2
0
 private void ClearRestriction()
 {
     if (_customerSteamId != 0L)
     {
         _customerSteamId         = 0uL;
         _customerName            = null;
         _timeUntilCustomerExpiry = 0f;
         SendNetworkUpdateImmediate();
     }
 }
Beispiel #3
0
        private void DoMovementToEnd()
        {
            _distance = Vector3.Distance(MoverTransform.position, end);

            if (_distance > stoppingDistamce)
            {
                if (smoothMovement)
                {
                    MoverTransform.position = Vector3.Lerp(MoverTransform.position, end, moveSpeed * Time.deltaTime);
                }
                else
                {
                    MoverTransform.position = Vector3.MoveTowards(MoverTransform.position, end, moveSpeed * Time.deltaTime);
                }
            }
            else
            {
                if (!_startedTimer)
                {
                    _startedTimer = true;
                    _timeUntil    = delay;
                }

                if (_startedTimer && _timeUntil <= 0)
                {
                    if (interactionType == InteractionType.Always)
                    {
                        if (loopType == LoopType.OneLoop || loopType == LoopType.PingPong)
                        {
                            _moverState = MoverState.GoToStart;
                        }
                    }

                    if (interactionType == InteractionType.Activate /*&& _canMove*/)
                    {
                        if (loopType == LoopType.OneLoop || loopType == LoopType.PingPong)
                        {
                            if (staysOpenLikeDoor)
                            {
                                return;
                            }
                            if (!staysOpenLikeDoor)
                            {
                                _moverState = MoverState.GoToStart;
                            }
                        }
                    }

                    _startedTimer = false;
                }
            }
        }
Beispiel #4
0
        private void DoMovementToStart()
        {
            _distance = Vector3.Distance(MoverTransform.position, start);

            if (_distance > stoppingDistamce)
            {
                if (smoothMovement)
                {
                    MoverTransform.position = Vector3.Lerp(MoverTransform.position, start, moveSpeed * Time.deltaTime);
                }
                else
                {
                    MoverTransform.position = Vector3.MoveTowards(MoverTransform.position, start, moveSpeed * Time.deltaTime);
                }
            }
            else
            {
                if (!_startedTimer)
                {
                    _startedTimer = true;
                    _timeUntil    = delay;
                }

                if (_startedTimer && _timeUntil <= 0)
                {
                    /*
                     * if(loopType == LoopType.PingPong)
                     *      _moverState = MoverState.CompletedLoop;
                     * _startedTimer = false;
                     */

                    if (interactionType == InteractionType.Always)
                    {
                        if (loopType == LoopType.OneLoop || loopType == LoopType.PingPong)
                        {
                            _moverState = MoverState.CompletedLoop;
                        }
                    }

                    if (interactionType == InteractionType.Activate && _canMove)
                    {
                        if (loopType == LoopType.OneLoop || loopType == LoopType.PingPong)
                        {
                            _moverState = MoverState.CompletedLoop;
                        }
                    }

                    _startedTimer = false;
                }
            }
        }
Beispiel #5
0
	public void UpdateMovement()
	{
		if ((float)nextPlayerCheck <= 0f)
		{
			nextPlayerCheck = Random.Range(0.5f, 1f);
			junkpileWaterWorkQueue.Add(this);
		}
		if (isSinking || !hasPlayersNearby)
		{
			return;
		}
		float height = WaterSystem.GetHeight(base.transform.position);
		base.transform.position = new Vector3(base.transform.position.x, height, base.transform.position.z);
		if (buoyancyPoints != null && buoyancyPoints.Length >= 3)
		{
			Vector3 position = base.transform.position;
			Vector3 localPosition = buoyancyPoints[0].localPosition;
			Vector3 localPosition2 = buoyancyPoints[1].localPosition;
			Vector3 localPosition3 = buoyancyPoints[2].localPosition;
			Vector3 vector = localPosition + position;
			Vector3 vector2 = localPosition2 + position;
			Vector3 vector3 = localPosition3 + position;
			vector.y = WaterSystem.GetHeight(vector);
			vector2.y = WaterSystem.GetHeight(vector2);
			vector3.y = WaterSystem.GetHeight(vector3);
			Vector3 position2 = new Vector3(position.x, vector.y - localPosition.y, position.z);
			Vector3 rhs = vector2 - vector;
			Vector3 vector4 = Vector3.Cross(vector3 - vector, rhs);
			Vector3 eulerAngles = Quaternion.LookRotation(new Vector3(vector4.x, vector4.z, vector4.y)).eulerAngles;
			Quaternion quaternion = Quaternion.Euler(0f - eulerAngles.x, 0f, 0f - eulerAngles.y);
			if (first)
			{
				baseRotation = Quaternion.Euler(0f, base.transform.rotation.eulerAngles.y, 0f);
				first = false;
			}
			base.transform.SetPositionAndRotation(position2, quaternion * baseRotation);
		}
	}
Beispiel #6
0
 private void RestrictToPlayer(BasePlayer player)
 {
     if (_customerSteamId == player.userID)
     {
         _timeUntilCustomerExpiry = lockToCustomerDuration;
         SendNetworkUpdate();
         return;
     }
     if (_customerSteamId != 0L)
     {
         Debug.LogError("Overwriting player restriction! It should be cleared first.", this);
     }
     _customerSteamId         = player.userID;
     _customerName            = player.displayName;
     _timeUntilCustomerExpiry = lockToCustomerDuration;
     SendNetworkUpdateImmediate();
     ClientRPC(null, "Client_CloseMarketUI", _customerSteamId);
     RemoveAnyLooters();
     if (IsOpen())
     {
         Debug.LogError("Market terminal's inventory is still open after removing looters!", this);
     }
 }
Beispiel #7
0
 public void UpdateDropToGroundForDuration(float duration)
 {
     dropUntilTime = duration;
 }