protected IEnumerator CoroutineRotation(Vector3 targetPos) { Vector3 previousPos = transform.position; float stopDistance = 0.12f; if (_targetInteractable) { stopDistance = 0.125f; } if (_targetItemPickUp) { stopDistance = 0.05f; } SetAnimation(true); _isTapMoving = true; while (Vector3.Distance(transform.position, targetPos) > stopDistance) { Vector3 midPos = ((transform.position + targetPos) / 2f); Vector3 snapMidPos = midPos.normalized * transform.position.magnitude; ECollision lCollision = CanMoveForward(playerAsset.transform.forward); if (lCollision == ECollision.NONE) { previousPos = transform.position; transform.position += (snapMidPos - transform.position).normalized * Time.deltaTime / 3f; if (previousPos == transform.position) { _isTapMoving = false; break; } _targetRotation = Quaternion.LookRotation(transform.position - previousPos, transform.position); playerAsset.transform.rotation = Quaternion.Lerp(playerAsset.transform.rotation, _targetRotation, Time.deltaTime * 10); transform.position = SnapToPlanet(transform.position); Reoriente(); UpdateCells(true); if (posCallBack != Vector3.zero) { if (Vector3.Distance(transform.position, posCallBack) <= 0.2f) { vCallBack(); posCallBack = Vector3.zero; vCallBack = null; } } } else { _targetItemPickUp = null; _isTapMoving = false; StopMove(); break; } DoEmitter(); yield return(null); } transform.position = SnapToPlanet(transform.position); SetAnimation(false); _isTapMoving = false; if (!_targetInteractable && !_targetItemPickUp) { yield break; } if (_targetItemPickUp) { if (PlayerManager.Instance.playerType != EPlayer.ECO) { CancelMove(); yield break; } _targetItemPickUp.GetComponent <ItemPickup>().PickUp(); StopMove(); yield break; } if (Vector3.Distance(transform.position, targetPos) <= stopDistance) { InteractablePNJ lPnj = _targetInteractable as InteractablePNJ; NPCGender genderComponent = lPnj.GetComponent <NPCGender>(); if (PlayerManager.Instance.playerType == EPlayer.NGO) { if (lPnj && lPnj.CanTalkTo(EPlayer.NGO)) { playerAsset.transform.rotation = Quaternion.LookRotation(lPnj.transform.position - transform.position, transform.up); UIManager.instance.PNJState.Active(false); PointingBubble.instance.Show(true); PointingBubble.instance.SetProperties(lPnj); QuestManager.Instance.NGOTalkTo(lPnj.IDname); lPnj = null; CancelMove(); if (genderComponent) { Events.Instance.Raise(new OnNPCDialogueSFX(genderComponent.gender)); } } else { lPnj = null; CancelMove(); } } else if (lPnj && PlayerManager.Instance.playerType == EPlayer.GOV) { playerAsset.transform.rotation = Quaternion.LookRotation(lPnj.transform.position - transform.position, transform.up); if (lPnj.CanTalkTo(EPlayer.GOV)) { Events.Instance.Raise(new OnPopupBuilding(lPnj.budgetComponent, lPnj)); } lPnj = null; CancelMove(); if (genderComponent) { Events.Instance.Raise(new OnNPCDialogueSFX(genderComponent.gender)); } } else if (lPnj && PlayerManager.Instance.playerType == EPlayer.ECO) { playerAsset.transform.rotation = Quaternion.LookRotation(lPnj.transform.position - transform.position, transform.up); if (lPnj.CanTalkTo(EPlayer.ECO)) { InventoryScreen.Instance.HandleActiveFromNPC(lPnj); QuestManager.Instance.EcoTalkTo(lPnj.budgetComponent.type); } lPnj = null; CancelMove(); if (genderComponent) { Events.Instance.Raise(new OnNPCDialogueSFX(genderComponent.gender)); } } } else { StopMove(); } yield break; }
public void SetGender(NPCGender gender) { Gender = gender; }
/// <summary> /// /// </summary> /// <param name="isMale"></param> /// <returns></returns> public static string HumanName( NPCGender gender ) { return PickFromList( (gender==NPCGender.Male ? HumamMaleNames : HumamFemaleNames) ); }
/// <summary> /// /// </summary> /// <param name="isMale"></param> /// <returns></returns> public static string OrcishName( NPCGender gender ) { return PickFromList( OrcMaleNames ); }
/// <summary> /// /// </summary> /// <param name="isMale"></param> /// <returns></returns> public static string GnomishName( NPCGender gender ) { return PickFromList( (gender==NPCGender.Male ? GnomishMaleNames : GnomishFemaleNames) ); }
/// <summary> /// /// </summary> /// <param name="isMale"></param> /// <returns></returns> public static string HalflingName( NPCGender gender ) { return PickFromList( (gender==NPCGender.Male ? HalflingMaleNames : HalflingFemaleNames) ) + " " + PickFromList( HalflingSurnames ); }
/// <summary> /// /// </summary> /// <param name="race"></param> /// <param name="isMale"></param> /// <returns></returns> public static string GenerateName( NPCRace race, NPCGender gender ) { switch( race ) { case NPCRace.Dragonborne: return DragonborneName( gender ); case NPCRace.Dwarf: return DwarvenName( gender ); case NPCRace.Eldarin: return EladrinName( gender ); case NPCRace.Elf: return ElvenName( gender ); case NPCRace.HalfElf: if( rand.Next(2)==0 ) return ElvenName( gender ); else return HumanName( gender ); case NPCRace.Gnome: return GnomishName( gender ); case NPCRace.Orc: return OrcishName( gender ); case NPCRace.HalfOrc: if( rand.Next(2)==0 ) return OrcishName( gender ); else return HumanName( gender ); case NPCRace.Angelic: return AngelicName( gender ); default: // human return HumanName( gender ); } }
/// <summary> /// /// </summary> /// <param name="isMale"></param> /// <returns></returns> public static string ElvenName( NPCGender gender ) { return PickFromList( (gender==NPCGender.Male ? ElvenMaleNames : ElvenFemaleNames) ) + " " + PickFromList( ElvenSurnames ); }
/// <summary> /// /// </summary> /// <param name="isMale"></param> /// <returns></returns> public static string EladrinName( NPCGender gender ) { return PickFromList( (gender==NPCGender.Male ? EladrinMaleNames : EladrinFemaleNames) ); }
/// <summary> /// /// </summary> /// <param name="isMale"></param> /// <returns></returns> public static string DragonborneName( NPCGender gender ) { return PickFromList( gender==NPCGender.Male ? DragonBorneMaleNames : DragonBorneFemaleNames ); }
/// <summary> /// /// </summary> /// <param name="isMale"></param> /// <returns></returns> public static string AngelicName( NPCGender gender ) { return PickFromList( AngelicMaleNames ); }