This commit is contained in:
aozhiwei 2019-11-21 14:47:56 +08:00
parent b57ea5055c
commit 3003180710
5 changed files with 0 additions and 186 deletions

View File

@ -93,7 +93,6 @@ void AndroidAI::DoMove()
if (hum->IsCollisionInMapService()) { if (hum->IsCollisionInMapService()) {
hum->pos = old_pos; hum->pos = old_pos;
if (i == 0) { if (i == 0) {
hum->FindPathInMapService();
} }
break; break;
} }

View File

@ -210,91 +210,6 @@ bool Human::IsCollisionInMapService()
return false; return false;
} }
void Human::FindPathInMapService()
{
a8::Vec2 old_pos = pos;
ColliderComponent* last_collider = Global::last_collider;
if (last_collider) {
switch (last_collider->type) {
case CT_Aabb:
{
}
break;
case CT_Circle:
{
a8::Vec2 extend_dir = pos - last_collider->owner->pos;
if (std::abs(extend_dir.x) > FLT_EPSILON ||
std::abs(extend_dir.y) > FLT_EPSILON) {
extend_dir.Normalize();
{
#if 0
a8::Vec2 extend_dir_inverse(extend_dir.y, extend_dir.x);
float angle = extend_dir_inverse.CalcAngle(move_dir);
if (angle > 0.001f) {
extend_dir.Rotate(-1/180.0f);
} else {
extend_dir.Rotate(1/180.0f);
}
#endif
extend_dir.Rotate(1/180.0f);
}
#if 0
float distance = ((CircleCollider*)last_collider)->rad + meta->i->radius();
pos = last_collider->owner->pos + extend_dir * (distance + 1);
if (IsCollisionInMapService()) {
pos = old_pos;
}
#endif
}
return;
}
break;
default:
break;
}
}
{
float up_dot = a8::Vec2::UP.Dot(move_dir);
bool at_left_side = a8::Vec2::LEFT.Dot(move_dir) > 0.0001f;
if (std::abs(up_dot) <= 0.001f) { //相互垂直
//向上
pos = old_pos + a8::Vec2::UP;
if (!IsCollisionInMapService()) {
return;
} else {
//向下
pos = old_pos + a8::Vec2::DOWN;
if (!IsCollisionInMapService()) {
return;
}
}
} else if (up_dot > 0.001f) { //基本相同
pos = old_pos + (at_left_side ? a8::Vec2::LEFT : a8::Vec2::RIGHT);
if (!IsCollisionInMapService()) {
return;
} else {
//向上
pos = old_pos + a8::Vec2::UP;
if (!IsCollisionInMapService()) {
return;
}
}
} else if (up_dot < 0.001f) { //基本相反
pos = old_pos + (at_left_side ? a8::Vec2::LEFT : a8::Vec2::RIGHT);
if (!IsCollisionInMapService()) {
return;
} else {
//向下
pos = old_pos + a8::Vec2::DOWN;
if (!IsCollisionInMapService()) {
return;
}
}
}
}
pos = old_pos;
}
float Human::GetRadius() float Human::GetRadius()
{ {
#if 1 #if 1
@ -421,25 +336,6 @@ bool Human::HasLiveTeammate()
return false; return false;
} }
void Human::FindLocation()
{
Entity* target = nullptr;
for (auto& grid : grid_list) {
for (Entity* entity : grid->entity_list) {
#if 0
switch (entity->entity_type) {
break;
default:
break;
}
#endif
}
}
if (target) {
FindLocationWithTarget(target);
}
}
void Human::RefreshView() void Human::RefreshView()
{ {
for (auto& cell : grid_list) { for (auto& cell : grid_list) {
@ -725,12 +621,6 @@ void Human::_UpdateMove(int speed)
pos = pos + move_dir; pos = pos + move_dir;
if (IsCollisionInMapService()) { if (IsCollisionInMapService()) {
pos = old_pos; pos = old_pos;
FindPathInMapService();
#if 0
if (rand() % 3 == 0) {
i += 1;
}
#endif
} }
room->grid_service.MoveHuman(this); room->grid_service.MoveHuman(this);
} }
@ -847,10 +737,6 @@ void Human::GenBattleReportData(a8::MutableXObject* params)
params->SetVal("rank_score", stats.rank_score); params->SetVal("rank_score", stats.rank_score);
} }
void Human::DeadDrop()
{
}
void Human::SendBattleReport() void Human::SendBattleReport()
{ {
a8::MutableXObject* params = a8::MutableXObject::NewObject(); a8::MutableXObject* params = a8::MutableXObject::NewObject();
@ -896,71 +782,6 @@ void Human::SendBattleReport()
delete params; delete params;
} }
void Human::FindLocationWithTarget(Entity* target)
{
a8::Vec2 old_pos = pos;
a8::Vec2 new_pos = pos;
AabbCollider a_collider;
GetAabbBox(a_collider);
AabbCollider target_collider;
target->GetAabbBox(target_collider);
{
bool ret = a_collider.CalcSafePoint(&target_collider, new_pos);
if (!ret) {
abort();
}
}
a8::Vec2 new_pos_dir = new_pos - old_pos;
new_pos_dir.Normalize();
float distance = (new_pos - old_pos).Norm();
for (int i = distance; i < 10000000; i += 5) {
pos = old_pos + new_pos_dir * i;
room->grid_service.MoveHuman(this);
Entity* building = nullptr;
std::set<GridCell*> new_grid_list;
room->grid_service.GetAllCellsByXy(pos.x, pos.y, new_grid_list);
for (auto& grid : new_grid_list) {
for (Entity* entity : grid->entity_list) {
#if 0
switch (entity->entity_type) {
case ET_Building:
{
if (TestCollision(entity)) {
building = entity;
}
}
break;
default:
break;
}
#endif
if (building) {
break;
}
}
if (building) {
break;
}
}
if (!building) {
bool is_collision = false;
std::set<ColliderComponent*> colliders;
room->map_service.GetColliders(pos.x, pos.y, colliders);
for (ColliderComponent* collider : colliders) {
if (TestCollision(collider)) {
is_collision = true;
break;
}
}
if (!is_collision) {
break;
}
}
}
}
void Human::OnDie() void Human::OnDie()
{ {
room->OnHumanDie(this); room->OnHumanDie(this);

View File

@ -71,7 +71,6 @@ class Human : public Entity
void FillMFTeamData(cs::MFTeamData* team_data); void FillMFTeamData(cs::MFTeamData* team_data);
void RecalcSelfCollider(); void RecalcSelfCollider();
bool IsCollisionInMapService(); bool IsCollisionInMapService();
void FindPathInMapService();
float GetRadius(); float GetRadius();
void SyncAroundPlayers(const char* file, int line, const char* func); void SyncAroundPlayers(const char* file, int line, const char* func);
void BeKill(int killer_id, const std::string& killer_name); void BeKill(int killer_id, const std::string& killer_name);
@ -82,7 +81,6 @@ class Human : public Entity
void AddOutObjects(Entity* entity); void AddOutObjects(Entity* entity);
void RemoveOutObjects(Entity* entity); void RemoveOutObjects(Entity* entity);
bool HasLiveTeammate(); bool HasLiveTeammate();
void FindLocation();
void RefreshView(); void RefreshView();
void OnGridListChange(std::set<GridCell*>& old_grid_list, void OnGridListChange(std::set<GridCell*>& old_grid_list,
std::set<GridCell*>& inc_grid_list, std::set<GridCell*>& inc_grid_list,
@ -114,10 +112,8 @@ protected:
private: private:
void ClearFrameData(); void ClearFrameData();
void GenBattleReportData(a8::MutableXObject* params); void GenBattleReportData(a8::MutableXObject* params);
void DeadDrop();
void FillSMGameOver(cs::SMGameOver& msg); void FillSMGameOver(cs::SMGameOver& msg);
void SendBattleReport(); void SendBattleReport();
void FindLocationWithTarget(Entity* target);
void OnDie(); void OnDie();
void Revive(); void Revive();

View File

@ -165,7 +165,6 @@ void Room::AddPlayer(Player* hum)
++alive_count_; ++alive_count_;
++App::Instance()->perf.alive_count; ++App::Instance()->perf.alive_count;
grid_service.AddHuman(hum); grid_service.AddHuman(hum);
hum->FindLocation();
hum->RefreshView(); hum->RefreshView();
MatchTeam(hum); MatchTeam(hum);
while (human_hash_.size() > ROOM_MAX_PLAYER_NUM) { while (human_hash_.size() > ROOM_MAX_PLAYER_NUM) {

View File

@ -11,7 +11,6 @@
namespace MetaData namespace MetaData
{ {
struct Map; struct Map;
struct MapTplThing;
} }
struct timer_list; struct timer_list;