//--------------------------------------------------- // ItemRecoverDecisionFunc //--------------------------------------------------- int ItemRecoverDecisionFunc(ItemSpawnData item) { List <CharacterModel.Data> playerList = GetTeamCharacterDataList(TEAM_TYPE.PLAYER); int executeActorId = -1; float hpRate = 1; StateMachine <CHARACTER_MOVE_STATE> stateMachine; foreach (CharacterModel.Data character in playerList) { if (_getReservItemList.ContainsValue(character.ActorId) || character.Hp <= 0) { continue; } stateMachine = _characterStateList [character.ActorId]; CHARACTER_MOVE_STATE state = stateMachine.CurrentStateKey; float dstHpRate = character.Hp / character.MaxHp; if (hpRate > dstHpRate && state == CHARACTER_MOVE_STATE.ATTACK) { hpRate = dstHpRate; executeActorId = character.ActorId; } } return(executeActorId); }
//--------------------------------------------------- // ItemSpeedDecisionFunc //--------------------------------------------------- int ItemSpeedDecisionFunc(ItemSpawnData item) { List <CharacterModel.Data> playerList = GetTeamCharacterDataList(TEAM_TYPE.PLAYER); float length = 1000; int executeActorId = -1; StateMachine <CHARACTER_MOVE_STATE> stateMachine; foreach (CharacterModel.Data character in playerList) { if (_getReservItemList.ContainsValue(character.ActorId) || character.Hp <= 0) { continue; } stateMachine = _characterStateList [character.ActorId]; CHARACTER_MOVE_STATE state = stateMachine.CurrentStateKey; if (length > (character.BlockPos - item.BlockPos).magnitude && state == CHARACTER_MOVE_STATE.ATTACK) { executeActorId = character.ActorId; } } return(executeActorId); }
public void SetMoveState(CHARACTER_MOVE_STATE nState) { if (nState < CHARACTER_MOVE_STATE.cmsInvalid || nState > CHARACTER_MOVE_STATE.cmsTotal) { //error } switch (nState) { case CHARACTER_MOVE_STATE.cmsOnDeath: break; default: break; } m_eMoveState = nState; }