using System.Collections.Generic; namespace ET { [FriendClass(typeof (People))] [FriendClass(typeof (Gather))] public static class PeopleOperate { public static int StopBehave(Unit unit, People people) { var peopleBehave = people.GetBehaveType(); var targetId = people.GetTargetId(); switch (peopleBehave) { case ConstBehaveType.BEHAVE_GATHER: case ConstBehaveType.BEHAVE_PREPARE_GATHER: var gather = unit.GetComponent().GetChild(targetId); if (gather == null) { return ErrorCode.ERR_GatherNotFound; } gather.StartGather(people.Id); break; case ConstBehaveType.BEHAVE_CONSTRUCT: case ConstBehaveType.BEHAVE_PREPARE_CONSTRUCT: var construct = unit.GetComponent().GetChild(targetId); if (construct == null) { return ErrorCode.ERR_ConstructNotFound; } construct.StopConstruct(people.Id); break; case ConstBehaveType.BEHAVE_PREPARE_CABIN: case ConstBehaveType.BEHAVE_CABIN: var canbin = unit.GetGrandChild(targetId); if (canbin == null) { return ErrorCode.ERR_CabinNotFound; } canbin.PeopleLeave(); break; } people.BehaveIdle(); return ErrorCode.ERR_Success; } public static int ChangeBehave(Unit unit, People people, int behaveType, long targetId = 0) { var result = StopBehave(unit, people); if (result != ErrorCode.ERR_Success) { return result; } people.TargetId = targetId; people.SetBehaveType(behaveType); return ErrorCode.ERR_Success; } } }