Beispiel #1
0
        //---------------------------------------------------
        // 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);
        }
Beispiel #2
0
        //---------------------------------------------------
        // 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);
        }
Beispiel #3
0
    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;
    }