1
This commit is contained in:
parent
89f9ebdbb8
commit
c365ac66ff
@ -466,19 +466,13 @@ void AndroidAI::DoMoveNewAI()
|
||||
}
|
||||
if (std::abs(hum->GetMoveDir().x) > FLT_EPSILON ||
|
||||
std::abs(hum->GetMoveDir().y) > FLT_EPSILON) {
|
||||
hum->on_move_collision =
|
||||
[this] () {
|
||||
ChangeToStateNewAI(ASE_RandomWalk);
|
||||
return false;
|
||||
};
|
||||
int speed = std::max(1, (int)hum->GetSpeed()) * 1;
|
||||
a8::Vec2 old_pos = hum->GetPos();
|
||||
hum->_UpdateMove(speed);
|
||||
if (owner->room->IsPveRoom() && IsNearGas()) {
|
||||
hum->SetPos(old_pos);
|
||||
hum->on_move_collision();
|
||||
ChangeToStateNewAI(ASE_RandomWalk);
|
||||
}
|
||||
hum->on_move_collision = nullptr;
|
||||
if (node_->nearest_human.Get()) {
|
||||
if (node_->main_state != ASE_Pursuit &&
|
||||
hum->GetPos().ManhattanDistance(node_->nearest_human.Get()->GetPos()) < 200) {
|
||||
|
@ -3301,16 +3301,7 @@ void Creature::_UpdateSpecMove()
|
||||
move_dir.Normalize();
|
||||
SetMoveDir(move_dir);
|
||||
bool is_collision = false;
|
||||
std::function<bool ()> old_on_move_collision = on_move_collision;
|
||||
on_move_collision =
|
||||
[&is_collision] () {
|
||||
is_collision = true;
|
||||
return false;
|
||||
};
|
||||
|
||||
_UpdateMove(std::min((int)target_distance, (int)GetSpeed()));
|
||||
|
||||
on_move_collision = old_on_move_collision;
|
||||
move_dir = old_move_dir;
|
||||
target_distance = target_pos.Distance(GetPos());
|
||||
if (is_collision || target_distance <= 1.0001f) {
|
||||
|
@ -86,7 +86,6 @@ class Creature : public MoveableEntity
|
||||
int shot_hole = 0;
|
||||
Creature* shot_passenger = nullptr;
|
||||
a8::Vec2 target_pos;
|
||||
std::function<bool ()> on_move_collision;
|
||||
bool poisoning = false;
|
||||
long long poisoning_time = 0;
|
||||
bool playing_skill = false;
|
||||
|
@ -273,33 +273,12 @@ void HeroAI::DoMoveAI()
|
||||
}
|
||||
if (std::abs(hero->GetMoveDir().x) > FLT_EPSILON ||
|
||||
std::abs(hero->GetMoveDir().y) > FLT_EPSILON) {
|
||||
auto old_on_move_collision_func = hero->on_move_collision;
|
||||
hero->on_move_collision =
|
||||
[this] () {
|
||||
if (node_->main_state == HSE_FollowMaster) {
|
||||
ChangeToStateAI(HSE_FollowMaster);
|
||||
} else {
|
||||
ChangeToStateAI(HSE_RandomWalk);
|
||||
}
|
||||
return false;
|
||||
};
|
||||
int speed = std::max(1, (int)hero->GetSpeed()) * 1;
|
||||
a8::Vec2 old_pos = hero->GetPos();
|
||||
hero->_UpdateMove(speed);
|
||||
if (owner->room->IsPveRoom() && IsNearGas()) {
|
||||
#if 1
|
||||
hero->SetPos(old_pos);
|
||||
hero->on_move_collision();
|
||||
#else
|
||||
//if (hero->room->GetFrameNo() - node_->last_adjust_dir_frameno > SERVER_FRAME_RATE * 3) {
|
||||
a8::Vec2 dir = hero->GetPos() - hero->room->GetGasData().pos_new;
|
||||
hero->SetMoveDir(dir);
|
||||
hero->GetMoveHelper()->CalcTargetPos(500);
|
||||
node_->last_adjust_dir_frameno = hero->room->GetFrameNo();
|
||||
//}
|
||||
#endif
|
||||
}
|
||||
hero->on_move_collision = old_on_move_collision_func;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -180,9 +180,11 @@ void Hero::InternalUpdateMove(float speed)
|
||||
if (!CheckCollision()) {
|
||||
room->grid_service->MoveCreature(this);
|
||||
} else {
|
||||
#if 0
|
||||
if (on_move_collision && !on_move_collision()) {
|
||||
SetPos(old_pos);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2101,10 +2101,12 @@ void Human::_InternalUpdateMove(float speed)
|
||||
SetPos(old_pos);
|
||||
return;
|
||||
}
|
||||
#if 0
|
||||
if (on_move_collision && !on_move_collision()) {
|
||||
SetPos(old_pos);
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
nx = 0;
|
||||
}
|
||||
|
||||
@ -2114,10 +2116,12 @@ void Human::_InternalUpdateMove(float speed)
|
||||
SetPos(old_pos);
|
||||
return;
|
||||
}
|
||||
#if 0
|
||||
if (on_move_collision && !on_move_collision()) {
|
||||
SetPos(old_pos);
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
ny = 0;
|
||||
}
|
||||
|
||||
@ -3552,7 +3556,7 @@ void Human::OnLand()
|
||||
if (IsAndroid() && team_uuid.empty()) {
|
||||
MustBeAddBuff(this, kBeRecycleBuffId);
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
if (IsPlayer()) {
|
||||
StartRefreshViewTimer();
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user