Example #1
0
 void CarryInput()
 {
     if (!Input.GetKeyDown(KeyCode.K))
     {
         return;
     }
     if (_canCarry)
     {
         // Carry
         _canCarry           = false;
         _carrying           = true;
         _stateHandler.state = PlayerState.Carrying;
         _objectCanCarried.Carry(carrier, _spriteRenderer);
         _objectCollider.isTrigger = true;
         _carriedObject            = _objectCanCarried;
         _player.speed            -= _deltaWeight;
         _objectCanCarried         = null;
     }
     else if (_carrying)
     {
         // Throw
         _carrying = false;
         _carriedObject.transform.SetParent(null);
         var carriedObjRigid = _carriedObject.GetComponent <Rigidbody2D>();
         _carriedObject.startDirection = _directionGetter.direction;
         _carriedObject.Throw(_directionGetter.direction, throwingForce);
         // _objectCollider.isTrigger = false;
         _stateHandler.state = PlayerState.Walking;
         _player.speed      += _deltaWeight;
         _carriedObject      = null;
         _objectCollider     = null;
     }
 }
Example #2
0
    public void Grab()
    {
        carriedObject       = null;
        leftHand.isGripped  = true;
        rightHand.isGripped = true;

        CarryableObject objectCarried = null;

        if (leftHand.objectToTarget == null && rightHand.objectToTarget != null)
        {
            objectCarried = rightHand.objectToTarget;
        }
        else if (rightHand.objectToTarget == null && leftHand.objectToTarget != null)
        {
            objectCarried = leftHand.objectToTarget;
        }
        else if (leftHand.objectToTarget != null && leftHand.objectToTarget == rightHand.objectToTarget)
        {
            objectCarried = leftHand.objectToTarget;
        }

        if (objectCarried != null)
        {
            carriedObject = objectCarried;
            carriedObject.AttachTo(this);
        }
    }
    public CarryableObject PickUp()
    {
        CarryableObject res = co;

        co = null;
        return(res);
    }
Example #4
0
    public void ConfirmEnd(CarryableObject co)
    {
        if (co == null)
        {
            return;
        }

        AudioManager.PlayConfirmedObjectSound();
        Destroy(co.gameObject);
        finishedObjects++;

        if (finishedObjects == currentGoal)
        {
            if (DayTimer.Instance.DayNewTasksEnd > DayTimer.Instance.elapsedTime)
            {
                currentGoal += levelData.AdditionalObjects;
                AudioManager.Instance.SwitchMusic(AudioManager.MusicMode.Heavy);
            }
            else
            {
                DayTimer.Instance.DayHasEnded();
                dialogReader.Read(winDialog, ActionsRunner.RunFunctionAsEnumerator(GameManager.GoToNextScene), false);
            }
        }
        GoalInformations.UpdateAll();
    }
 protected void OnTriggerEnter(Collider other)
 {
     if (other.CompareTag(CarryableObject.commonTag))
     {
         CarryableObject co = other.GetComponent <CarryableObject>();
         co.CurrentConveyorBeltPart = this;
     }
 }
Example #6
0
    public void ResendToPool(CarryableObject co)
    {
        if (co == null)
        {
            return;
        }

        Destroy(co.gameObject);
        spawnedObjects--;
    }
    private void GenerateObject()
    {
        CarryableObject co = LevelManager.Instance.RequireSpawn();

        if (co == null)
        {
            return;
        }

        co.transform.SetPositionAndRotation(CarryablesAnchor, Quaternion.identity);
    }
Example #8
0
    public void Ungrab()
    {
        leftHand.isGripped  = false;
        rightHand.isGripped = false;

        if (carriedObject != null)
        {
            carriedObject.Detach(this);
            carriedObject = null;
        }
    }
Example #9
0
 public CarryableObject RequireSpawn()
 {
     if (currentGoal > spawnedObjects)
     {
         spawnedObjects++;
         GameObject      toSpawn = levelData.SpawnedObjectsPrefabs[Random.Range(0, levelData.SpawnedObjectsPrefabs.Count)];
         CarryableObject co      = Instantiate(toSpawn, CarryableObjectsDefaultParent).GetComponent <CarryableObject>();
         return(co);
     }
     return(null);
 }
    private void PickUp(CarryableObject co)
    {
        if (carriedObjects.Count >= capacity)
        {
            return;
        }

        co.gameObject.transform.SetParent(transform);
        carriedObjects.Push(co);
        co.gameObject.transform.SetPositionAndRotation(transform.position + Vector3.up * (carriedObjects.Count + 1) * .75f, transform.rotation);
        co.OnPickup();
    }
    public bool Dispose(CarryableObject co)
    {
        if (this.co == null && co != null)
        {
            this.co = co;
            co.transform.SetParent(LevelManager.Instance.CarryableObjectsDefaultParent);
            co.transform.SetPositionAndRotation(CarryablesAnchor, Quaternion.identity);
            return(true);
        }

        return(false);
    }
Example #12
0
 public override void TouchAction() {
     if (seed_object == null) {
         return;
     }
     if (seed_object.is_aloft)
     {
         audioSource.Play();
         isEnabled = true;
         DestroyObject(seed_object.gameObject);
         seed_object = null;
         Invoke("SetReady", duration);
     }
 }
    protected virtual void OnTriggerExit(Collider other)
    {
        if (other.CompareTag(CarryableObject.commonTag))
        {
            CarryableObject co = other.GetComponent <CarryableObject>();
            if (co.CurrentConveyorBeltPart != this)
            {
                return;
            }

            co.CurrentConveyorBeltPart = null;
        }
    }
Example #14
0
    public void LoadItem(CarryableObject item)
    {
        itemHeld = item;
        item.transform.parent   = transform;
        item.transform.position = this.transform.position;
        //StartCoroutine(StartHover());

        /*
         * if (this.gameObject.GetComponent<HeldItemRotator>()) {
         *  this.gameObject.GetComponent<HeldItemRotator>().cube = itemHeld.transform;
         *  this.gameObject.GetComponent<HeldItemRotator>().startStartStart();
         *
         * }
         */
    }
Example #15
0
    void OnCollisionEnter2D(Collision2D other)
    {
        var obstacleObj = other.gameObject.GetComponent <CarryableObject>();

        if (obstacleObj != null && obstacleObj is Object && !obstacleObj.Equals(null))
        {
            // be able carrying
            if (_carriedObject != null && _carriedObject is Object && !_carriedObject.Equals(null))
            {
                return;
            }
            _canCarry         = obstacleObj.canCarry;
            _objectCanCarried = obstacleObj;
            _objectCollider   = other.collider;
        }
    }
    private void Update()
    {
        selector.transform.position = CubeFrontPosition + selectorOffset;

        if (Input.GetKeyDown(interactionKey) || Input.GetMouseButtonDown(0))
        {
            List <Collider> foundObjects = new List <Collider>(Physics.OverlapSphere(CubeFrontPosition, .1f));

            CarryableObject foundCarryableObject = null;

            var it = foundObjects.GetEnumerator();
            while (it.MoveNext())
            {
                if (it.Current.CompareTag(CarryableObject.commonTag) && foundCarryableObject == null)
                {
                    foundCarryableObject = it.Current.GetComponent <CarryableObject>();
                }

                if (it.Current.CompareTag(ConveyorBelt.commonTag))
                {
                    InteractWithConveyorBelt(it.Current.GetComponent <ConveyorBeltPart>());
                    return;
                }

                if (it.Current.CompareTag(ObjectsHolder.commonTag))
                {
                    InteractWithObjectsHolder(it.Current.GetComponent <ObjectsHolder>());
                    return;
                }

                if (it.Current.CompareTag(Phone.commonTag))
                {
                    it.Current.GetComponent <Phone>().InteractWith();
                    return;
                }
            }

            if (foundCarryableObject != null)
            {
                PickUp(foundCarryableObject);
            }
            else if (it.Current == null)
            {
                Dispose(CubeFrontPosition);
            }
        }
    }
    void releaseObject()
    {
        /* if(heldByPlayerID != PhotonNetwork.player.ID) {
         *      return;
         * }*/
        if (carrying == null)
        {
            return;
        }

        heldByPlayerID = -1;

        if (carrying.childCount > 0)
        {
            carrying.GetChild(0).SendMessage("playerDropped", SendMessageOptions.DontRequireReceiver);
        }

        if (!sliding)
        {
            //Check to see if carried object has a special script attatched for dropping it
            CarryableObject carryableObject = carrying.GetChild(0).GetComponent <CarryableObject>();

            //if it does, then execute it
            if (carryableObject != null)
            {
                RaycastHit hit;
                Physics.Raycast(new Ray(transform.position, transform.forward), out hit);
                carryableObject.dropObject(hit);
            }
            //otherwise just drop it
            else
            {
                carrying.GetChild(0).GetComponent <Collider>().enabled      = true;
                carrying.GetChild(0).GetComponent <Rigidbody>().isKinematic = wasObjectKinematic; //Turn inertia and gravity back on
                carrying.GetChild(0).transform.parent = carrying.GetChild(0).transform.parent.parent;
            }
            Destroy(carrying.gameObject); // accumulates new GO's without this
        }
        else
        {
            carrying.GetComponent <Rigidbody>().isKinematic = wasObjectKinematic;
        }
        carrying = null;
        sliding  = false;

        setEmAbility(true);
    }
    private void InteractWithObjectsHolder(ObjectsHolder oh)
    {
        if (carriedObjects.Count > 0 && oh.Dispose(carriedObjects.Peek()))
        {
            carriedObjects.Pop();

            return;
        }
        else
        {
            CarryableObject co = oh.PickUp();
            if (co != null)
            {
                PickUp(co);
            }
        }
    }
    private void Dispose(Vector3 disposePosition)
    {
        if (carriedObjects.Count == 0 || CubeFrontPosition == CubePosition)
        {
            return;
        }

        CarryableObject co = carriedObjects.Pop();

        if (co == null)
        {
            Dispose(disposePosition);
            return;
        }
        co.gameObject.transform.SetParent(LevelManager.Instance.CarryableObjectsDefaultParent);
        co.transform.SetPositionAndRotation(disposePosition, Quaternion.identity);
        co.OnDispose();
    }
Example #20
0
    void OnTriggerEnter(Collider collision)
    {
        if (isGripped)
        {
            return;
        }
        if (objectToTarget != null)
        {
            return;
        }

        if (collision.gameObject.tag == "Carryable")
        {
            CarryableObject co = collision.gameObject.GetComponentInParent <CarryableObject>();
            Debug.Log($"{gameObject.name} Can carry a {co.name}");
            objectToTarget = co;
        }
    }
Example #21
0
    void OnTriggerExit(Collider collision)
    {
        if (isGripped)
        {
            return;
        }

        if (collision.gameObject.tag == "Carryable")
        {
            CarryableObject co = collision.gameObject.GetComponentInParent <CarryableObject>();
            Debug.Log($"{gameObject.name} is out of range of {co.name}");

            if (objectToTarget == co)
            {
                objectToTarget = null;
            }
        }
    }
    protected void OnTriggerStay(Collider other)
    {
        if (other.CompareTag(CarryableObject.commonTag))
        {
            CarryableObject co = other.GetComponent <CarryableObject>();
            if (co.CurrentConveyorBeltPart != this)
            {
                return;
            }

            if (IsAlignedAlongAxis(co.gameObject))
            {
                co.Move(transform.forward, ParentConveyorBelt.Speed);
            }
            else
            {
                co.MoveToAlign(CarryablesAnchor, ParentConveyorBelt.Speed);
            }
        }
    }
Example #23
0
    /*
     * void FixedUpdate()
     * {
     *  if (!inCannonAimMode)
     *  {
     *      float moveX = Input.GetAxis("Horizontal");
     *      float moveZ = Input.GetAxis("Vertical");
     *      rb.velocity = (transform.TransformDirection(new Vector3(moveX, 0, moveZ) * currSpeed));
     *  }
     * }
     */
    #region Player Interaction
    void PlayerInteract()
    {
        //Sets the frame drop to false, so the script recognizes that it doesn't need to skip a frame in all if statements
        bool droppedThisFrame = false;

        ///If the player is holding an object and left clicks, while not looking at anything.
        ///The player sets their held object to null, turns off the parent to the held object, and throws it, resetting its held variables and letting the frame skip
        if (isHolding && Input.GetMouseButtonDown(0) && !isHoverHolding)
        {
            Transform objectHolding = hand.GetChild(0);
            currentlyHolding = null;
            Rigidbody tempRb = objectHolding.GetComponent <Rigidbody>();
            tempRb.constraints = RigidbodyConstraints.None;
            tempRb.AddForce(Camera.main.transform.forward * 10, ForceMode.Impulse);
            tempRb.detectCollisions = true;
            objectHolding.parent    = null;
            isHolding        = false;
            droppedThisFrame = true;
            isHoverHolding   = false;
        }

        //The game's raycast is set to a bool, hit
        RaycastHit hit;

        ///If the raycast hits something
        ///

        Debug.DrawRay(Camera.main.transform.position, Camera.main.transform.forward, Color.green);
        if (Physics.Raycast(Camera.main.transform.position, Camera.main.transform.forward, out hit, 500))
        {
            ///If the raycast hits a carryable object, and the player is not holding anything, or hasn't just thrown their object
            if (hit.collider.tag == "Carryable" && !isHolding && !droppedThisFrame)
            {
                CarryableObject tempObj = hit.collider.GetComponent <CarryableObject>();

                //textDisplay.text = "Pick up " + tempObj.carryableType;
                //crosshair.sprite = crossUse;

                ///If the player clicks while the raycast is hitting a carryable object, and the player isn't holding or hasn't thrown anything
                ///the object is childed to the player, and the player is now holding something.
                if (Input.GetMouseButtonDown(0))
                {
                    hit.transform.SetParent(hand, true);
                    hit.transform.position = hand.position;
                    currentlyHolding       = tempObj.GetComponent <CarryableObject>();
                    Rigidbody tempRb = hit.collider.GetComponent <Rigidbody>();
                    tempRb.constraints      = RigidbodyConstraints.FreezeAll;
                    tempRb.detectCollisions = false;
                    isHolding      = true;
                    isHoverHolding = false;
                }
            }
            ///If the raycast hits a zone that can hold an item and the player is holding an item
            else if (hit.collider.tag == "ItemZone" && isHolding)
            {
                if (currentlyHolding.thisST != Seatable.Nonseatable)
                {
                    ///The game declares that the player is hovering over something and holding an item
                    isHoverHolding = true;
                    //crosshair.sprite = crossUse;
                    //if (currentlyHolding.carryableType == CannonState.Ramrod || currentlyHolding.carryableType == CannonState.Cleaner)
                    //    textDisplay.text = "Use " + currentlyHolding.carryableType;
                    //else
                    //    textDisplay.text = "Load " + currentlyHolding.carryableType;
                    if (Input.GetMouseButtonDown(0))
                    {
                        #region
                        //CannonController tempCannon = hit.transform.parent.GetComponent<CannonController>();
                        //if (tempCannon.LoadItem(currentlyHolding))
                        //{
                        //    if (currentlyHolding.carryableType != CannonState.Ramrod && currentlyHolding.carryableType != CannonState.Cleaner)
                        //  {
                        //    isHoverHolding = false;
                        //  isHolding = false;
                        //currentlyHolding = null;
                        //}
                        //}
                        #endregion

                        Transform objectHolding = hand.GetChild(0);
                        #region
                        //Rigidbody tempRb = objectHolding.GetComponent<Rigidbody>();
                        //tempRb.constraints = RigidbodyConstraints.None;
                        //tempRb.detectCollisions = true;
                        //objectHolding.parent = null;
                        //hit.transform.SetParent(hand, true);

                        //objectHolding = tempObj.GetComponent<CarryableObject>();

                        //objectHolding.transform.position = hit.transform.position;
                        #endregion
                        objectHolding.parent = null;
                        //objectHolding.position = hit.transform.position;
                        hit.transform.GetComponent <ItemHolder>().LoadItem(currentlyHolding);
                        isHoverHolding   = false;
                        isHolding        = false;
                        currentlyHolding = null;
                        droppedThisFrame = true;
                    }
                }
            }
            else if (hit.collider.tag == "ItemZone" && !isHolding && !droppedThisFrame)
            {
                CarryableObject tempObj = hit.collider.GetComponent <ItemHolder>().itemHeld;

                if (Input.GetMouseButtonDown(0))
                {
                    try
                    {
                        Transform tempItem = hit.transform.GetChild(1);
                        //print(hit.transform.GetChild(0));
                        tempItem.transform.SetParent(hand, true);
                        tempItem.transform.position = hand.position;
                        currentlyHolding            = tempObj;
                        Rigidbody tempRb = tempObj.GetComponent <Rigidbody>();
                        tempRb.constraints = RigidbodyConstraints.FreezeAll;
                        hit.transform.GetComponent <ItemHolder>().itemHeld = null;
                        hit.transform.GetComponent <ItemHolder>().StopAllCoroutines();
                        tempRb.detectCollisions = false;
                        isHolding      = true;
                        isHoverHolding = true;
                    }
                    catch
                    {
                    }
                }
                #region


                /*
                 * else if (hit.collider.tag == "Fuse" && isHolding)
                 * {
                 *  if (currentlyHolding.carryableType == CannonState.Igniter)
                 *  {
                 *      isHoverHolding = true;
                 *      var tempCannon = hit.transform.parent.GetComponent<CannonController>();
                 *      if (tempCannon.currentState == CannonState.Igniter)
                 *      {
                 *          textDisplay.text = "Fire Cannon";
                 *          crosshair.sprite = crossUse;
                 *          if (Input.GetMouseButtonDown(0))
                 *          {
                 *              tempCannon.Fire();
                 *          }
                 *      }
                 *  }
                 * }
                 * else if (hit.collider.tag == "AimMode" && !isHolding)
                 * {
                 *  crosshair.sprite = crossUse;
                 *  textDisplay.text = "Aim Cannon.";
                 *  if (Input.GetMouseButtonDown(0))
                 *  {
                 *      var tempCannon = hit.transform.parent.GetComponent<CannonController>();
                 *      cam.enabled = false;
                 *      tempCannon.cam.enabled = true;
                 *      inCannonAimMode = true;
                 *      crosshair.enabled = false;
                 *      textDisplay.text = "Click again to leave Aim Mode.";
                 *      rb.constraints = RigidbodyConstraints.FreezeAll;
                 *      rb.detectCollisions = false;
                 *  }
                 * }
                 * else
                 * {
                 *  isHoverHolding = false;
                 *  crosshair.sprite = crossDefault;
                 *  textDisplay.text = "";
                 * }
                 */
                #endregion
            }
            else if (hit.collider.tag == "Button" && !isHolding && !droppedThisFrame)
            {
                if (Input.GetMouseButtonDown(0))
                {
                    //print(hit.transform);
                    //print(hit.transform.GetComponent<Button>());
                    //print(this.gameObject);
                    print(hit.transform.GetComponent <Button>().thisButton);
                    hit.transform.GetComponent <Button>().DoButtonStuff(gameObject);

                    droppedThisFrame = true;
                }
            }
            else if (hit.collider.tag == "Door" && !isHolding && !droppedThisFrame)
            {
                if (hit.transform.GetComponent <Door>().thisDoor == DoorType.Door)
                {
                    if (Input.GetMouseButton(0))
                    {
                        //if (hit.transform.GetComponent<Door>().doorClosed == true)
                        //{
                        //hit.transform.GetComponent<Door>().InteractDoor();
                        //}
                        //else {
                        //    hit.transform.GetComponent<Door>().CloseDoor();
                        //}
                    }
                }
            }
            ///If none of that is true, than they're obviously not hoverholding
            else
            {
                isHoverHolding = false;
                //crosshair.sprite = crossDefault;
                //textDisplay.text = "";
            }
        }
        #region

        /*
         * public IEnumerator<float> LeaveAimMode(CannonController cannon)
         * {
         *  rb.constraints = RigidbodyConstraints.FreezeRotation;
         *  rb.detectCollisions = true;
         *  cannon.cam.enabled = false;
         *  cam.enabled = true;
         *  textDisplay.text = "";
         *  crosshair.enabled = true;
         *  crosshair.sprite = crossDefault;
         *  yield return Timing.WaitForSeconds(0.1f);
         *  inCannonAimMode = false;
         * }
         */
        #endregion
        #endregion
    }
Example #24
0
 void OnCollisionExit2D(Collision2D other)
 {
     _canCarry         = false;
     _objectCollider   = null;
     _objectCanCarried = null;
 }