|
|
|
using ET.PeopleBehave;
|
|
|
|
using UnityEngine;
|
|
|
|
using UnityEngine.AI;
|
|
|
|
|
|
|
|
namespace ET
|
|
|
|
{
|
|
|
|
[FriendClass(typeof(Gather))]
|
|
|
|
[FriendClass(typeof(ResourceViewComponent))]
|
|
|
|
[FriendClass(typeof(ResourcePoint))]
|
|
|
|
[FriendClass(typeof(Construct))]
|
|
|
|
[FriendClass(typeof(PeopleViewComponent))]
|
|
|
|
[FriendClass(typeof(People))]
|
|
|
|
public static class PeopleViewHelper
|
|
|
|
{
|
|
|
|
public static string GetHeadIconUrlByGender(int gender)
|
|
|
|
{
|
|
|
|
var iconName = gender == 0? "Head_M" : "Head_F";
|
|
|
|
var url = $"ui://{FUIPackage.Common}/{iconName}";
|
|
|
|
return url;
|
|
|
|
}
|
|
|
|
|
|
|
|
public static void CheckWork(this People self)
|
|
|
|
{
|
|
|
|
PeopleBehaveComponent.Instance?.HandlePeopleBehave(self);
|
|
|
|
}
|
|
|
|
|
|
|
|
public static void UpdateAnimatorByBehave(People people)
|
|
|
|
{
|
|
|
|
var pAnimator = people.GetComponent<PeopleAnimatorComponent>();
|
|
|
|
if (pAnimator == null)
|
|
|
|
{
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
int behave = people.GetBehaveType();
|
|
|
|
switch (behave)
|
|
|
|
{
|
|
|
|
case ConstBehaveType.BEHAVE_IDLE:
|
|
|
|
pAnimator.StopAll();
|
|
|
|
pAnimator.PlayAnimation(PeopleAnimEnum.Idle);
|
|
|
|
break;
|
|
|
|
case ConstBehaveType.BEHAVE_PREPARE_GATHER:
|
|
|
|
case ConstBehaveType.BEHAVE_PREPARE_CONSTRUCT:
|
|
|
|
pAnimator.StopAll();
|
|
|
|
pAnimator.PlayAnimation(PeopleAnimEnum.Run);
|
|
|
|
break;
|
|
|
|
case ConstBehaveType.BEHAVE_GATHER:
|
|
|
|
pAnimator.StopAll();
|
|
|
|
pAnimator.PlayAnimation(PeopleAnimEnum.Gather);
|
|
|
|
break;
|
|
|
|
case ConstBehaveType.BEHAVE_CONSTRUCT:
|
|
|
|
pAnimator.StopAll();
|
|
|
|
pAnimator.PlayAnimation(PeopleAnimEnum.Construct);
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
Debug.LogWarning("Unhandled behave type:" + behave);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public static Vector3 GetRandomMovePos(PeopleViewComponent peopleViewComponent, float radius)
|
|
|
|
{
|
|
|
|
|
|
|
|
var navAgent = peopleViewComponent.Agent;
|
|
|
|
var path = new NavMeshPath();
|
|
|
|
Vector3 newDest = peopleViewComponent.PeopleRoot.transform.position;
|
|
|
|
int count = 0;
|
|
|
|
do
|
|
|
|
{
|
|
|
|
Vector3 randomDir = Random.insideUnitCircle * radius;
|
|
|
|
newDest = randomDir + peopleViewComponent.PeopleRoot.transform.position;
|
|
|
|
|
|
|
|
navAgent.CalculatePath(newDest, path);
|
|
|
|
count++;
|
|
|
|
if (count > 10)
|
|
|
|
{
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
while (path.status != NavMeshPathStatus.PathComplete);
|
|
|
|
|
|
|
|
return newDest;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|