public OnTemporaryRouteCharacterNpcState(NpcCharacterBehaviour npcCharacter, Waypoint startingWaypoint, Action onCompleted, bool returnOnRoute) : base(npcCharacter)
    {
        this.onCompleted   = onCompleted;
        this.returnOnRoute = returnOnRoute;

        tempTracker = NpcCharacterBehaviour.gameObject.AddComponent <WaypointsTracker>();
        tempTracker.CurrentWaypoint = startingWaypoint;
    }
Example #2
0
    public void SpawnMeat(NpcCharacterBehaviour corpseInstance)
    {
        Quaternion meatRotation = Quaternion.identity;

        meatRotation.eulerAngles = new Vector3(0f, corpseInstance.mainRigidbody.transform.rotation.eulerAngles.y, 0f);
        for (int i = 0; i < meatsNum; i++)
        {
            MeatBehaviour newMeatBehaviour = Instantiate(meatPrefabBehaviour, corpseInstance.mainRigidbody.transform.position, meatRotation);
            GameManager.Instance.Player.Inventory.Meats.Add(newMeatBehaviour.meat);
        }
    }
    public override void OnTriggerEnter(Collider collider)
    {
        if (collider.CompareTag(Tags.PlayerVehicle.ToString()) || collider.CompareTag(Tags.NpcVehicle.ToString()))
        {
            NpcCharacterBehaviour.ChangeState(new DeadNpcCharacterState(NpcCharacterBehaviour));
        }

        if (collider.CompareTag(Tags.MeatShop.ToString()))
        {
            NpcCharacterBehaviour.ChangeState(new OnRouteToMeatShopNpcCharacterState(NpcCharacterBehaviour, MeatShopManager.Instance.customerEntryWaypoint, true));
        }
    }
    protected override void OnRouteFinished()
    {
        if (returnOnRoute)
        {
            NpcCharacterBehaviour.ChangeState(new WalkingNpcCharacterState(NpcCharacterBehaviour));
        }
        else
        {
            base.OnRouteFinished();
        }

        onCompleted();
    }
 public override void OnTriggerEnter(Collider collider)
 {
     if (collider.CompareTag(Tags.NpcHumanToGather.ToString()) && PlayerVehicle.Gathering.gatheringTrigger.activeSelf)
     {
         NpcCharacterBehaviour npcCharacterCollided = collider.transform.parent.transform.parent.GetComponent <NpcCharacterBehaviour>();
         if (npcCharacterCollided.IsGatherable)
         {
             // TODO:
             // add particle effects
             // add progress bar
             // and eventually add character to inventory
             PlayerVehicle.ChangeState(new GatheringPlayerVehicleState(PlayerVehicle, npcCharacterCollided));
         }
     }
 }
Example #6
0
    public void CustomerBuy(NpcCharacterBehaviour customer, MeatData meatDataBought)
    {
        if (meatDataBought)
        {
            MeatBehaviour spawnedMeatBehaviourBought = spawnedMeats.Find(meatBehaviour => meatBehaviour.meat.Data == meatDataBought);
            spawnedMeats.Remove(spawnedMeatBehaviourBought);
            GameManager.Instance.Player.Inventory.Meats.Remove(spawnedMeatBehaviourBought.meat);

            MeatPopularity boughtMeatPopularity = customer.CurrentCityRegion.meatsPopularity.List.Find(meatPopularity => meatPopularity.meatData == meatDataBought);
            boughtMeatPopularity.DecreasePopularityAfterBuy();

            spawnedMeatBehaviourBought.JumpTo(customer.mainRigidbody.position, true, () => Destroy(spawnedMeatBehaviourBought.gameObject), true);

            int cashValueEarned = boughtMeatPopularity.GetMeatFinalValue();
            for (int i = 0; i < cashValueEarned; i++)
            {
                spawnedEarnedCash.Add(Instantiate(cashTable.CashValues[1], customer.mainRigidbody.position, Quaternion.identity, transform));
            }
            GameManager.Instance.Player.Inventory.Cash += cashValueEarned;
        }
    }
    public void OnCorpseJumpClick(CallbackContext context)
    {
        if (meatProcessingStep == MeatProcessingStep.CorpseThrowing)
        {
            if (context.started)
            {
                if (PlayerInventory.Corpses.Count == 0)
                {
                    SceneManager.LoadScene("PLAYGROUND");
                    return;
                }
                corpseInstance = Instantiate(PlayerInventory.Corpses[PlayerInventory.Corpses.Count - 1].data.behaviour, corpseSpawnPoint.transform);
                PlayerInventory.Corpses.RemoveAt(PlayerInventory.Corpses.Count - 1);
                Vector3 throwForce = new Vector3(
                    Random.Range(throwForceMin.x, throwForceMax.x),
                    Random.Range(throwForceMin.y, throwForceMax.y),
                    Random.Range(throwForceMin.z, throwForceMax.z));

                Debug.Log(throwForce);

                corpseInstance.SetAsRagdoll();
                corpseInstance.mainRigidbody.AddForce(throwForce);
                meatProcessingStep++;
#if UNITY_ANDROID
                corpseThrowMobileButtonRenderer.SetActive(false);
#endif

                StartCoroutine(NonThrowingTime());
            }
        }
        if (meatProcessingStep == MeatProcessingStep.MeatAcquire)
        {
            if (context.started)
            {
                ProcessCurrentCorpse(meatPosters[currentPosterIndex]);
            }
        }
    }
 public WalkingNpcCharacterState(NpcCharacterBehaviour npcCharacter) : base(npcCharacter)
 {
 }
 protected virtual void OnRouteFinished()
 {
     NpcCharacterBehaviour.ChangeState(new IdleNpcCharacterState(NpcCharacterBehaviour));
 }
Example #10
0
 public NpcCharacterState(NpcCharacterBehaviour npcCharacterBehaviour)
 {
     characterBehaviour = npcCharacterBehaviour;
 }
 public GatheringPlayerVehicleState(PlayerVehicle playerVehicle, NpcCharacterBehaviour npcCharacterBeingGathered) : base(playerVehicle)
 {
     this.npcCharacterBeingGathered = npcCharacterBeingGathered;
 }
 public OnRouteToMeatShopNpcCharacterState(NpcCharacterBehaviour npcCharacter, Waypoint startingWaypoint, bool returnOnRoute) : base(npcCharacter, startingWaypoint, null, returnOnRoute)
 {
     onCompleted = () => MeatShopManager.Instance.CustomerBuy(NpcCharacterBehaviour, ChooseMeatToBuy());
 }
 public void OnMeatShopClosed()
 {
     NpcCharacterBehaviour.ChangeState(new WalkingNpcCharacterState(NpcCharacterBehaviour));
 }
 public DeadNpcCharacterState(NpcCharacterBehaviour npcCharacter) : base(npcCharacter)
 {
 }
 public IdleNpcCharacterState(NpcCharacterBehaviour npcCharacter) : base(npcCharacter)
 {
 }