示例#1
0
    private void FixedUpdate()
    {
        if (!isLocalPlayer)
        {
            return;
        }

        if (GameSettings.SettingOpenInventoryKey.IsDown())
        {
            if (!ContainerManager.IsOpen())
            {
                ContainerManager.OpenContainer(GameManager.singleton.PlayerInventoryPrefab, GetComponent <IStorage>());
            }
            else if (ContainerManager.IsOpen("Inventory"))
            {
                ContainerManager.CloseContainer();
            }
        }

        if (ContainerManager.IsOpen())
        {
            return;
        }

        if (GameSettings.SettingUseItemKey.IsDown())
        {
            GameObject item = Utils.GetEntityItemOverMouse();
            if (item == null)
            {
                return;
            }

            float distance = Vector3.Distance(item.transform.position, transform.position);
            if (distance > UseItemDistace)
            {
                return;
            }

            RaycastHit2D[] hit = Physics2D.RaycastAll(transform.position,
                                                      (item.transform.position - transform.position).normalized,
                                                      distance, LayerMask.GetMask("Room"));
            if (hit.Any(x => x.collider.name.Equals("Wall")))
            {
                return;
            }

            bool success = GetComponent <IStorage>().AddItemStack(item.GetComponent <EntityItemInfo>().Stack);
            if (success)
            {
                MessageManager.DestroyServerMessage.SendToServer(new NetworkIdentityMessage(item.GetComponent <NetworkIdentity>()));
            }
        }
    }