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 ||
|
if (std::abs(hum->GetMoveDir().x) > FLT_EPSILON ||
|
||||||
std::abs(hum->GetMoveDir().y) > 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;
|
int speed = std::max(1, (int)hum->GetSpeed()) * 1;
|
||||||
a8::Vec2 old_pos = hum->GetPos();
|
a8::Vec2 old_pos = hum->GetPos();
|
||||||
hum->_UpdateMove(speed);
|
hum->_UpdateMove(speed);
|
||||||
if (owner->room->IsPveRoom() && IsNearGas()) {
|
if (owner->room->IsPveRoom() && IsNearGas()) {
|
||||||
hum->SetPos(old_pos);
|
hum->SetPos(old_pos);
|
||||||
hum->on_move_collision();
|
ChangeToStateNewAI(ASE_RandomWalk);
|
||||||
}
|
}
|
||||||
hum->on_move_collision = nullptr;
|
|
||||||
if (node_->nearest_human.Get()) {
|
if (node_->nearest_human.Get()) {
|
||||||
if (node_->main_state != ASE_Pursuit &&
|
if (node_->main_state != ASE_Pursuit &&
|
||||||
hum->GetPos().ManhattanDistance(node_->nearest_human.Get()->GetPos()) < 200) {
|
hum->GetPos().ManhattanDistance(node_->nearest_human.Get()->GetPos()) < 200) {
|
||||||
|
@ -3301,16 +3301,7 @@ void Creature::_UpdateSpecMove()
|
|||||||
move_dir.Normalize();
|
move_dir.Normalize();
|
||||||
SetMoveDir(move_dir);
|
SetMoveDir(move_dir);
|
||||||
bool is_collision = false;
|
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()));
|
_UpdateMove(std::min((int)target_distance, (int)GetSpeed()));
|
||||||
|
|
||||||
on_move_collision = old_on_move_collision;
|
|
||||||
move_dir = old_move_dir;
|
move_dir = old_move_dir;
|
||||||
target_distance = target_pos.Distance(GetPos());
|
target_distance = target_pos.Distance(GetPos());
|
||||||
if (is_collision || target_distance <= 1.0001f) {
|
if (is_collision || target_distance <= 1.0001f) {
|
||||||
|
@ -86,7 +86,6 @@ class Creature : public MoveableEntity
|
|||||||
int shot_hole = 0;
|
int shot_hole = 0;
|
||||||
Creature* shot_passenger = nullptr;
|
Creature* shot_passenger = nullptr;
|
||||||
a8::Vec2 target_pos;
|
a8::Vec2 target_pos;
|
||||||
std::function<bool ()> on_move_collision;
|
|
||||||
bool poisoning = false;
|
bool poisoning = false;
|
||||||
long long poisoning_time = 0;
|
long long poisoning_time = 0;
|
||||||
bool playing_skill = false;
|
bool playing_skill = false;
|
||||||
|
@ -273,33 +273,12 @@ void HeroAI::DoMoveAI()
|
|||||||
}
|
}
|
||||||
if (std::abs(hero->GetMoveDir().x) > FLT_EPSILON ||
|
if (std::abs(hero->GetMoveDir().x) > FLT_EPSILON ||
|
||||||
std::abs(hero->GetMoveDir().y) > 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;
|
int speed = std::max(1, (int)hero->GetSpeed()) * 1;
|
||||||
a8::Vec2 old_pos = hero->GetPos();
|
a8::Vec2 old_pos = hero->GetPos();
|
||||||
hero->_UpdateMove(speed);
|
hero->_UpdateMove(speed);
|
||||||
if (owner->room->IsPveRoom() && IsNearGas()) {
|
if (owner->room->IsPveRoom() && IsNearGas()) {
|
||||||
#if 1
|
|
||||||
hero->SetPos(old_pos);
|
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()) {
|
if (!CheckCollision()) {
|
||||||
room->grid_service->MoveCreature(this);
|
room->grid_service->MoveCreature(this);
|
||||||
} else {
|
} else {
|
||||||
|
#if 0
|
||||||
if (on_move_collision && !on_move_collision()) {
|
if (on_move_collision && !on_move_collision()) {
|
||||||
SetPos(old_pos);
|
SetPos(old_pos);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2101,10 +2101,12 @@ void Human::_InternalUpdateMove(float speed)
|
|||||||
SetPos(old_pos);
|
SetPos(old_pos);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
#if 0
|
||||||
if (on_move_collision && !on_move_collision()) {
|
if (on_move_collision && !on_move_collision()) {
|
||||||
SetPos(old_pos);
|
SetPos(old_pos);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
nx = 0;
|
nx = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2114,10 +2116,12 @@ void Human::_InternalUpdateMove(float speed)
|
|||||||
SetPos(old_pos);
|
SetPos(old_pos);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
#if 0
|
||||||
if (on_move_collision && !on_move_collision()) {
|
if (on_move_collision && !on_move_collision()) {
|
||||||
SetPos(old_pos);
|
SetPos(old_pos);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
ny = 0;
|
ny = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3552,7 +3556,7 @@ void Human::OnLand()
|
|||||||
if (IsAndroid() && team_uuid.empty()) {
|
if (IsAndroid() && team_uuid.empty()) {
|
||||||
MustBeAddBuff(this, kBeRecycleBuffId);
|
MustBeAddBuff(this, kBeRecycleBuffId);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
if (IsPlayer()) {
|
if (IsPlayer()) {
|
||||||
StartRefreshViewTimer();
|
StartRefreshViewTimer();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user