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; }
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)); } } }
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)); }
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) { }