GetTarget ok

This commit is contained in:
aozhiwei 2020-07-14 11:17:01 +08:00
parent ce3242cc9d
commit b959b8b332

View File

@ -387,6 +387,9 @@ void AndroidNewAI::UpdateNewBieRoomLogic()
void AndroidNewAI::UpdateNewAI()
{
Human* hum = (Human*)owner;
if (a8::HasBitFlag(hum->status, HS_Disable)) {
return;
}
++node_.exec_frame_num;
hum->shot_hold = false;
switch (node_.main_state) {
@ -410,6 +413,11 @@ void AndroidNewAI::UpdateNewAI()
UpdateRandomWalk();
}
break;
default:
{
abort();
}
break;
}
if (moving_) {
DoMoveNewAI();
@ -535,5 +543,36 @@ void AndroidNewAI::ChangeToStateNewAI(AndroidStateEx_e to_state)
Human* AndroidNewAI::GetTarget()
{
return nullptr;
if (GetAiLevel() <= 1) {
return nullptr;
}
Human* myself = (Human*)owner;
if (myself->room->GetGasData().gas_mode == GasInactive) {
return nullptr;
}
Human* target = nullptr;
myself->TouchAllLayerHumanList
(
[myself, &target] (Human* hum, bool& stop)
{
if (hum->dead) {
return;
}
if (a8::HasBitFlag(hum->status, HS_Disable)) {
return;
}
if (myself->team_id == hum->team_id) {
return;
}
if (target) {
if (myself->GetPos().ManhattanDistance(target->GetPos()) >
myself->GetPos().ManhattanDistance(hum->GetPos())) {
target = hum;
}
} else {
target = hum;
}
});
return target;
}