public override List <DulibaWaitor.Command> CanPlaceItem(Carryable item)
    {
        List <DulibaWaitor.Command> actions = new List <DulibaWaitor.Command>();

        if (CanAdd(item))
        {
            actions.Add(new DulibaWaitor.Command()
            {
                workTime   = 0.5f,
                actionType = DulibaWaitor.ActionType.Place,
                name       = "place " + item.data.name,
                image      = item.data.image,
                callback   = () =>
                {
                    pipeline.Add(item);
                    pipeline.recipe = GetRecipeForItem(item);
                },
                lateCallback = () =>
                {
                    OnWorkAreaUpdate?.Invoke(this);
                }
            });
        }

        return(actions);
    }
Esempio n. 2
0
    void Drag(RaycastHit p_hit)
    {
        Transform objHit = p_hit.transform;

        if (objHit.GetComponent <Pickable>() != null)
        {
            if (objHit.GetComponent <Usuable>())
            {
                if (objHit.GetComponent <Usuable>().Effect())
                {
                    Destroy(objHit.gameObject);
                }
            }

            else if (objHit.GetComponent <Carryable>())
            {
                if (m_ActualCarryable != null)
                {
                    Drop(p_hit);
                }
                m_ActualCarryable = objHit.GetComponent <Carryable>();
                m_ActualCarryable.EnableFeedback();
                m_ActualCarryable.m_activated = false;
            }
        }
    }
Esempio n. 3
0
 public void PickUp()
 {
     if (state.CurrentRoomIndex == 0)
     {
         GameObject targetedObject = carryableDetector.GetNearestCarryable();
         if (targetedObject != null)
         {
             Carryable carryable = targetedObject.GetComponent <Carryable>();
             if (carryable != null)
             {
                 GameObject carryableObject = carryable.GetCarryableObject();
                 if (carryableObject != null)
                 {
                     StartCarrying(carryableObject);
                 }
             }
             LaundromatBasket laundromatBasket = targetedObject.GetComponent <LaundromatBasket>();
             if (laundromatBasket != null)
             {
                 if (CustomerManager.CustomerServed != null)
                 {
                     CustomerManager.CustomerServed(laundromatBasket);
                 }
             }
         }
     }
 }
Esempio n. 4
0
    public override List <DulibaWaitor.Command> CanPlaceItem(Carryable carryable)
    {
        List <DulibaWaitor.Command> actions = new List <DulibaWaitor.Command>();

        if (pipeline.craftingCoroutine == null && carryable is Item item && pipeline.CanAdd())
        {
            actions.Add(new DulibaWaitor.Command()
            {
                workTime   = 0.5f,
                actionType = DulibaWaitor.ActionType.Place,
                name       = "place " + carryable.data.name,
                image      = carryable.data.image,
                callback   = () =>
                {
                    carryable.Unreturn();
                    pipeline.Add(carryable);
                },
                lateCallback = () =>
                {
                    OnWorkAreaUpdate?.Invoke(this);
                }
            });
        }

        return(actions);
    }
Esempio n. 5
0
 public void PickUpItem(Carryable item)
 {
     isCarryingItem = true;
     carriedItem    = item;
     carriedItem.OnPickUp(playerHand);
     onPickUp.Invoke();
 }
Esempio n. 6
0
    void Serve(Carryable food)
    {
        foreach (var kvp in allOrderedItems)
        {
            var item     = kvp.Key;
            var customer = kvp.Value;

            if (food.data.id == item.id)
            {
                foodLeft--;
                customer.SatisfyOrder();

                if (foodLeft < 1)
                {
                    orderStatus   = OrderStatus.Eating;
                    timeStarted   = Time.time;
                    timeRemaining = Time.time + Random.Range(timeToEatPerCustomerMinMax.x, timeToEatPerCustomerMinMax.y) * GetCustomerCount();
                }

                OnWorkAreaUpdate?.Invoke(this);
                break;
            }
        }

        OnWorkAreaUpdate?.Invoke(this);
    }
Esempio n. 7
0
    public void tryPickup()
    {
        if (carryingFood || !lastTouchedFood)
        {
            return;
        }

        carryingFood    = lastTouchedFood;
        lastTouchedFood = null;

        if (animator)
        {
            Carryable carryable = carryingFood.GetComponent <Carryable>();
            if (!carryable)
            {
                Debug.LogError("Tried to pickup something not Carryable");
            }
            else
            {
                animator.SetInteger("Carrying", carryable.getType());
                if (carryable.getIsKitty())
                {
                    AudioSource.PlayClipAtPoint(audioGrabKitty, Vector3.zero);
                    body.mass += carryingFood.GetComponent <Rigidbody2D>().mass;
                }
            }
        }
        AudioSource.PlayClipAtPoint(audioGrab, Vector3.zero);

        carryingFood.SetActive(false);
//		Destroy (lastTouchedFood);
    }
        public bool Add(Carryable carryable)
        {
            if (CanAdd(carryable))
            {
                if (recipe != null && carryable.data.id == input.data.id)
                {
                    float c = inputAmount * 100 + 100;
                    float d = inputAmount * 100 / c;
                    float e = 100 / c;

                    spoilageTimer = ((Item)input).spoilageTime * d + ((Item)carryable).spoilageTime * e;

                    inputAmount += 1;
                }
                else if (recipe == null)
                {
                    input         = carryable;
                    spoilageTimer = ((Item)carryable).spoilageTime;
                    inputAmount   = 1;
                }
                return(true);
            }

            return(false);
        }
Esempio n. 9
0
    void CarryPlayer()
    {
        float   spriteOffset = 0.2f;
        float   pickupDist   = 0.5f;
        Vector2 start        = playerBody.position + transform.localScale.x * Vector2.right * spriteOffset;
        Vector2 dir          = transform.localScale.x * Vector2.right * pickupDist;

        Debug.DrawRay(start, dir, Color.blue, 1f);
        RaycastHit2D hit = Physics2D.Raycast(start, dir, pickupDist);

        if (hit.collider != null && hit.collider.tag == "Player")
        {
            carrying       = true;
            carryingPlayer = hit.collider.gameObject.GetComponent <NetSetup> ().playerNum;
            CmdInitiatePickup(networkInfo.playerNum, carryingPlayer);
        }
        else if (hit.collider != null && hit.collider.gameObject.GetComponent <Carryable>() != null)
        {
            carryingObject = hit.collider.gameObject.GetComponent <Carryable> ();
            if (carryingObject.carried)
            {
                carryingObject = null;
                return;
            }
            carrying = true;
            CmdCarryItem(hit.collider.gameObject);
        }
    }
Esempio n. 10
0
    public override List <DulibaWaitor.Command> CanPlaceItem(Carryable carryable)
    {
        List <DulibaWaitor.Command> actions = new List <DulibaWaitor.Command>();

        if (carryable.data.garbageValue <= maxFullness - currentFullness || infinite)
        {
            actions.Add(new DulibaWaitor.Command()
            {
                workTime   = 0.5f,
                actionType = DulibaWaitor.ActionType.Place,
                name       = "throw " + carryable.data.name,
                image      = carryable.data.image,
                callback   = () =>
                {
                    if (!infinite && carryable.data.garbageValue > 0)
                    {
                        if (carryable is Package package)
                        {
                            currentFullness += carryable.data.garbageValue * package.itemsCount;
                            thrownItems.Add(carryable.data.name + " package (" + package.itemsCount + ")");
                        }
                        else
                        {
                            currentFullness += carryable.data.garbageValue;
                            thrownItems.Add(carryable.data.name);
                        }
                    }
                },
                lateCallback = () =>
                {
                    OnWorkAreaUpdate?.Invoke(this);
                }
            });
Esempio n. 11
0
 public bool Give(Carryable obj)
 {
     print("Give");
     if (!carrySomething || (carrySomething && _carriedObject.IsSeed))
     {
         if (obj.IsSeed)
         {
             print("Carrying new seed");
             DiscardItem();
             _carriedObject = Instantiate(obj, CarryTarget.position, Quaternion.Euler(Vector3.right * -90));
             _carriedObject.transform.SetParent(CarryTarget);
             carrySomething = true;
         }
         else
         {
             print("Carrying new plant");
             Plant plant = obj as Plant;
             _carriedObject = plant;
             plant.Harvest();
             plant.transform.SetParent(CarryTarget);
             plant.transform.localPosition = Vector3.zero;
             plant.transform.localScale   *= 3f;
             carrySomething = true;
         }
         return(true);
     }
     return(false);
 }
Esempio n. 12
0
    public void PlaceDown(DulibaWaitor waitor, DulibaInput.Hand hand)
    {
        Carryable  item = waitor.GetItemsInHand()[0];
        DulibaHand h    = null;

        switch (hand)
        {
        case DulibaInput.Hand.Left:
            h = waitor.leftHand;
            break;

        case DulibaInput.Hand.Right:
            h = waitor.rightHand;
            break;

        default:
            return;
        }

        for (int i = 0; i < itemSlots; i++)
        {
            if (items[i] == null)
            {
                items[i] = h.ClearItem();
                RefreshVisuals();
                return;
            }
        }
    }
    public override List<DulibaWaitor.Command> CanPlaceItem(Carryable carryable)
    {
        List<DulibaWaitor.Command> actions = new List<DulibaWaitor.Command>();

        for (int i = 0; i < pipeline.Length; i++)
        {
            var pipe = pipeline[i];
            var temp = i;

            if (pipe.input == null && carryable is Item item)
            {
                actions.Add(new DulibaWaitor.Command()
                {
                    workTime = 0.25f,
                    actionType = DulibaWaitor.ActionType.Place,
                    name = "place on " + (i + 1) + " " + item.data.name,
                    image = item.data.image,
                    callback = () =>
                    {
                        item.Unreturn();
                        StartCraft(item, temp);
                    },
                    lateCallback = () =>
                    {
                        OnWorkAreaUpdate?.Invoke(this);
                    }
                });
            }
        }

        return actions;
    }
Esempio n. 14
0
    public bool Throw()
    {
        if (curCarrying == null)
        {
            return(false);
        }

        curCarrying.GetComponent <Rigidbody>().isKinematic = false;
        if (curCarrying.oldParent)
        {
            curCarrying.transform.SetParent(curCarrying.oldParent);
            curCarrying.oldParent = null;
        }

        //Get VectorToTarget
        RaycastHit hit;

        if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hit, 1000))
        {
            Vector3 ThrowVector = (hit.point - transform.position) * throwPower;
            curCarrying.GetComponent <Rigidbody>().AddForce(ThrowVector);
            curCarrying.ActivateThrownMode();
        }

        curCarrying = null;
        ControlArms();
        ChangeColor();
        return(true);
    }
Esempio n. 15
0
    // eat food
    void OnTriggerEnter2D(Collider2D other)
    {
        if (foodCount < 3 && other.gameObject.CompareTag("Pickup"))
        {
            Carryable carryable = other.gameObject.GetComponent <Carryable>();
            if (!carryable)
            {
                Debug.LogError("Tried to pickup something not Carryable");
            }
            else
            {
                if (carryable.getType() == 1)                   // kittens shall not eat each other
                {
                    AudioSource.PlayClipAtPoint(audioEat, Vector3.zero);
                    Destroy(other.gameObject);
                    foodCount++;
                    foodMeter.setCount(foodCount);
                    // More massive kitty!
                    GetComponent <Rigidbody2D>().mass = foodCount * 2f;

                    gameManager.addScore(playerNum);
                }
            }
        }
    }
Esempio n. 16
0
    public void OnCarryInput()
    {
        if (!_controller.collisions.below)
        {
            return;
        }

        if (_touching && !_holding)
        {
            _originalSize   = _collider.size;
            _originalOffset = _collider.offset;

            _playerAnimator.Pickup(_touching);
            _holding = _touching;
            _holding.Pickup();
            var bounds = _collider.bounds;
            bounds.Encapsulate(_holding.Collider.bounds);
            ResizeCollider(bounds);
        }
        else if (_holding)
        {
            _playerAnimator.Putdown(_holding);
            _holding.PutDown();
            _holding         = null;
            _collider.offset = _originalOffset;
            _collider.size   = _originalSize;
            _controller.CalculateRaySpacing();
        }
    }
Esempio n. 17
0
    private void Carry(Carryable c)
    {
        if (curCarrying == c)
        {
            return;
        }

        curCarrying = c;
        if (curCarrying)
        {
            curCarrying.DeactivateThrownMode();
            curCarrying.GetComponent <Rigidbody>().isKinematic = true;
            curCarrying.oldParent = curCarrying.transform.parent;
            curCarrying.transform.SetParent(carryConnectioPoint.transform);
            curCarrying.transform.position = carryConnectioPoint.transform.position;
            if (curCarrying is Tool)
            {
                curCarrying.transform.forward   = -gameObject.transform.forward; //TODO: Fix Tool-Models
                curCarrying.transform.position += ((Tool)curCarrying).carryOffset * curCarrying.transform.forward;
            }
        }

        ControlArms();
        ChangeColor();
    }
Esempio n. 18
0
 void Throw(Carryable carryable)
 {
     if (IsCarrying)
     {
         carryable.OnThrown(_camera.transform.forward * ThrowStrength);
         _carryingObject = null;
     }
 }
Esempio n. 19
0
 void Drop(Carryable carryable)
 {
     if (IsCarrying)
     {
         carryable.OnDropped();
         _carryingObject = null;
     }
 }
Esempio n. 20
0
 private void OnTriggerEnter2D(Collider2D other)
 {
     _touching = other.GetComponent <Carryable>();
     if (_touching != null)
     {
         Debug.Log("touching carryable");
     }
 }
 public void FinishProduct()
 {
     if (craftingCoroutine != null)
     {
         input = new Carryable(recipe.recipe.output[0].item);
         recipe = null;
         craftingCoroutine = null;
     }
 }
Esempio n. 22
0
    public void Drop(bool _destroy = false)
	{
		m_rb.velocity = transform.positionToWorldCenter(transform.position).normalized * 5f;
		m_rb.isKinematic = false;
		CurrentlyCarried = null;

        if (_destroy)
            Destroy(gameObject);
	}
    public void AttachObject(Carryable o)
    {
        CarriedObject = o;
        var t = o.transform;

        t.SetParent(CarryPoint, true);
        t.DOLocalMove(Vector3.zero, 0.5f).SetEase(Ease.InOutCubic);
        t.DOLocalRotate(Vector3.zero, 0.5f);
    }
Esempio n. 24
0
    private void OnTriggerExit(Collider other)
    {
        var carryable = other.GetComponent <Carryable>();

        if (carryable == _touching)
        {
            _touching = null;
        }
    }
Esempio n. 25
0
        /// <summary>
        /// Returns true if can add or false if can't.
        /// </summary>
        /// <param name="carryable"></param>
        /// <returns></returns>
        public bool Add(Carryable carryable)
        {
            if (CanAdd())
            {
                input.Add(carryable);
                return(true);
            }

            return(false);
        }
Esempio n. 26
0
 private void Awake()
 {
     startPos         = transform.position;
     rb2D             = GetComponent <Rigidbody2D>();
     health           = GetComponent <Health>();
     boxTrigger       = GetComponent <BoxCollider2D>();
     carryable        = GetComponent <Carryable>();
     interactable     = GetComponent <Interactable>();
     rb2D.isKinematic = false;
 }
Esempio n. 27
0
	override public void Handle(Carryable _item)
	{
		m_currentItemType = ItemType.Prayer;
        if (_item != null)
        {
			MessageKit.post(GameEventTypes.Audio_AltarPlacement);
			m_currentItemType = _item.Type; 
        }
        ItemPlaced();
	}
Esempio n. 28
0
    public bool PickUp(Carryable c)
    {
        if (c == null || curCarrying != null)
        {
            return(false);
        }

        Carry(c);
        return(true);
    }
Esempio n. 29
0
    public void OnProduce(GameObject interactor, GameObject product, Interaction interaction)
    {
        Carrier carrier = interactor.GetComponent <Carrier>();

        if (carrier != null)
        {
            Carryable carryable = product.GetComponent <Carryable>();
            carrier.PickUp(carryable);
        }
    }
Esempio n. 30
0
 public void dropObj()
 {
     if(isCarrying()){
         carryable.drop(owner.getCollider());
     }
     if(isUsingWeapons()){
         weaponSlots.enableWeapons();
     }
     carryable = null;
 }
Esempio n. 31
0
 public void throwObj()
 {
     if(isCarrying()){
         carryable.throwme(owner.getCollider(), throwForceModifier);
     }
     if(isUsingWeapons()){
         weaponSlots.enableWeapons();
     }
     carryable = null;
 }
    public override List <DulibaWaitor.Command> GetCommands(DulibaWaitor waitor)
    {
        List <DulibaWaitor.Command> actions = new List <DulibaWaitor.Command>();

        var recipeToDispense = GetRecipeToDispense();

        if (recipeToDispense != null)
        {
            actions.Add(new DulibaWaitor.Command()
            {
                workTime    = recipeToDispense.recipe.time,
                reflected   = true,
                actionType  = DulibaWaitor.ActionType.Pickup,
                name        = "pickup " + recipeToDispense.name,
                image       = recipeToDispense.recipe.output.image,
                pickupIndex = 0,
                shelf       = new ItemDataWithCount(recipeToDispense.recipe.output, 0, 1, false, true),
                callback    = () =>
                {
                    pipeline.Dispense();
                },
                lateCallback = () =>
                {
                    OnCanvasUpdate?.Invoke();
                    OnWorkAreaUpdate?.Invoke(this);
                }
            });
        }

        if (pipeline.input != null && pipeline.inputAmount > 0)
        {
            actions.Add(new DulibaWaitor.Command()
            {
                workTime     = 3f,
                actionType   = DulibaWaitor.ActionType.Action,
                prerequisite = PreRequisite.BothHandsEmpty,
                name         = "clean " + name,
                callback     = () =>
                {
                    var garbageBag = new Carryable((ItemScriptableObject)DatabaseManager.GetItem("garbage_bag"));
                    garbageBag.data.garbageValue += (int)(pipeline.input.data.garbageValue * pipeline.inputAmount);
                    pipeline.Clean();
                    waitor.rightHand.SetItem(garbageBag);
                },
                image        = ((ItemScriptableObject)DatabaseManager.GetItem("garbage_bag")).image,
                lateCallback = () =>
                {
                    OnWorkAreaUpdate?.Invoke(this);
                }
            });
        }

        return(actions);
    }
Esempio n. 33
0
 public PickupUnit(Actor self, Actor cargo)
 {
     this.cargo  = cargo;
     carryable   = cargo.Trait <Carryable>();
     cargoFacing = cargo.Trait <IFacing>();
     movement    = self.Trait <IMove>();
     carryall    = self.Trait <Carryall>();
     aircraft    = self.Trait <Aircraft>();
     selfFacing  = self.Trait <IFacing>();
     state       = State.Intercept;
 }
Esempio n. 34
0
    public void SetObjectOnCarry(Carryable c)
    {
        gameState.objectOnCarry = c;

        if (c != null && c.name == "Wrench")
        {
            gameState.wrenchFound = true;
        }

        StateChanged();
    }
Esempio n. 35
0
        public DeliverUnit(Actor self, CPos destination)
        {
            this.self = self;
            this.destination = destination;

            carryallFacing = self.Trait<IFacing>();
            carryall = self.Trait<Carryall>();
            body = self.Trait<BodyOrientation>();

            carryable = carryall.Carryable.Trait<Carryable>();
            positionable = carryall.Carryable.Trait<IPositionable>();
            carryableFacing = carryall.Carryable.Trait<IFacing>();
            state = State.Transport;
        }
Esempio n. 36
0
 public void pickUpObj(Carryable carryable)
 {
     if(isCarrying()){
         dropObj();
     }
     carryable.pickUp(owner);
     carryable.transform.SetParent(transform);
     carryable.transform.position = this.transform.position;
     carryable.transform.localScale = Vector3.one;
     this.carryable = carryable;
     if(isUsingWeapons()){
         weaponSlots.disableWeapons();
     }
 }
Esempio n. 37
0
        public PickupUnit(Actor self, Actor cargo, int delay)
        {
            this.cargo = cargo;
            this.delay = delay;
            carryable = cargo.Trait<Carryable>();
            carryableFacing = cargo.Trait<IFacing>();
            carryableBody = cargo.Trait<BodyOrientation>();

            movement = self.Trait<IMove>();
            carryall = self.Trait<Carryall>();
            carryallFacing = self.Trait<IFacing>();

            state = State.Intercept;
        }
Esempio n. 38
0
    override public void Handle(Carryable _item)
    {
        if ( _item == null && !m_HasDroppedToday )
        {
            Carryable itemToDrop = (Carryable)Instantiate(m_ItemToDrop, transform.position + transform.positionToWorldCenter(transform.position).normalized * 2, Quaternion.identity);
            itemToDrop.name = m_ItemToDrop.name;

            itemToDrop.GetComponent<Rigidbody2D>().velocity = transform.positionToWorldCenter(transform.position).normalized * 5f;

            Interactable.NearbyInteractable = null;
            m_HasDroppedToday = true;
            enabled = false;

            m_fNotify.FObject = null;

            triggerDropSound();
        }
    }
Esempio n. 39
0
	public virtual void Carry()
	{
		if(Nearby == this)
		{
			if(CurrentlyCarried != null)
			{
				CurrentlyCarried.Drop();
			}

			MessageKit.post(GameEventTypes.Audio_Pickup);

            m_fNotify.FObject = transform;
            CurrentlyCarried = this;

			Nearby = null;
			m_rb.isKinematic = true;

            MessageQueue.PostMessage("Picked up 1 " + name + " (F to drop)");
        }
	}
Esempio n. 40
0
	void ThrowPlayer() {
		if (carryingPlayer >= 0) {
			CmdThrowPlayer (carryingPlayer, transform.localScale.x);
			carrying = false;
			carryingPlayer = -1;
		} else {
			// we are throwing an object
			CmdThrowCarryable(carryingObject.gameObject);
			carrying = false;
			carryingObject = null;
		}
	}
Esempio n. 41
0
	void CarryPlayer() {
		float spriteOffset = 0.2f;
		float pickupDist = 0.5f;
		Vector2 start = playerBody.position + transform.localScale.x * Vector2.right * spriteOffset;
		Vector2 dir = transform.localScale.x * Vector2.right * pickupDist;
		Debug.DrawRay (start, dir, Color.blue, 1f);
		RaycastHit2D hit = Physics2D.Raycast (start, dir, pickupDist);
		if (hit.collider != null && hit.collider.tag == "Player") {
			carrying = true;
			carryingPlayer = hit.collider.gameObject.GetComponent<NetSetup> ().playerNum;
			CmdInitiatePickup (networkInfo.playerNum, carryingPlayer);
		} else if (hit.collider != null && hit.collider.gameObject.GetComponent<Carryable>() != null) {
			carryingObject = hit.collider.gameObject.GetComponent<Carryable> ();
			if (carryingObject.carried) {
				carryingObject = null;
				return;
			}
			carrying = true;
			CmdCarryItem (hit.collider.gameObject);
		}
	}
Esempio n. 42
0
	void CmdCarryItem(GameObject objToCarry) {
		carryingObject = objToCarry.GetComponent<Carryable> ();
		carryingObject.SetCarrying (GetComponent<NetSetup>().playerNum);
	}
Esempio n. 43
0
 abstract public void Handle(Carryable _item);
 void pickUpCarryable(Carryable carryable)
 {
     carrySlot.pickUpObj(carryable);
 }
Esempio n. 45
0
	void Start()
	{
		m_carryable = transform.parent.GetComponent<Carryable>();
        m_fnotify = GameObject.FindObjectOfType<FNotification>();
    }