From 609dc6ed8806ead4ab3f3871fbf4792c72c5afd0 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Fri, 19 May 2023 16:14:28 +0800 Subject: [PATCH] 1 --- server/gameserver/bornpoint.cc | 29 +++++++++++++++++++++++------ server/gameserver/bornpoint.h | 4 +++- server/gameserver/creature.cc | 2 +- server/gameserver/incubator.cc | 2 +- server/gameserver/room.cc | 10 +++++----- server/gameserver/room.h | 4 ++-- server/gameserver/sandtable.cc | 2 ++ server/gameserver/team.cc | 2 +- 8 files changed, 38 insertions(+), 17 deletions(-) diff --git a/server/gameserver/bornpoint.cc b/server/gameserver/bornpoint.cc index 870b63ad..7807159f 100644 --- a/server/gameserver/bornpoint.cc +++ b/server/gameserver/bornpoint.cc @@ -1,10 +1,32 @@ #include "precompile.h" #include "bornpoint.h" +#include "room.h" #include "mt/Map.h" -Position BornPoint::RandPoint() const +Position BornPoint::RandPoint(Room* room) const +{ + Position pos; + if (wo_meta) { + pos.FromGlmVec3(wo_meta->pos); + } else { + pos.SetX(5120.000000000000); + pos.SetY(6.250846862793); + pos.SetZ(5120.000000000000); + } + if (room->IsSandTableRoom()) { + + } + return pos; +} + +int BornPoint::GetNum() +{ + return 4; +} + +Position BornPoint::GetSrcPoint(Room* room) const { Position pos; if (wo_meta) { @@ -16,8 +38,3 @@ Position BornPoint::RandPoint() const } return pos; } - -int BornPoint::GetNum() -{ - return 10; -} diff --git a/server/gameserver/bornpoint.h b/server/gameserver/bornpoint.h index 06a09fa7..1f39eb74 100644 --- a/server/gameserver/bornpoint.h +++ b/server/gameserver/bornpoint.h @@ -10,6 +10,7 @@ namespace mt struct WorldObject; } +class Room; struct BornPoint { int player_num = 0; @@ -17,5 +18,6 @@ struct BornPoint std::shared_ptr wo_meta; int GetNum(); - Position RandPoint() const; + Position RandPoint(Room* room) const; + Position GetSrcPoint(Room* room) const; }; diff --git a/server/gameserver/creature.cc b/server/gameserver/creature.cc index f2cfb2de..1c0d9866 100644 --- a/server/gameserver/creature.cc +++ b/server/gameserver/creature.cc @@ -2589,7 +2589,7 @@ void Creature::OnLand() if (!ok) { #if 1 if (IsHuman()) { - point = AsHuman()->born_point->RandPoint().ToGlmVec3(); + point = AsHuman()->born_point->GetSrcPoint(room).ToGlmVec3(); } #else abort(); diff --git a/server/gameserver/incubator.cc b/server/gameserver/incubator.cc index ea90168c..4ebe52b1 100644 --- a/server/gameserver/incubator.cc +++ b/server/gameserver/incubator.cc @@ -263,7 +263,7 @@ Human* Incubator::ActiveAndroid(Human* hum) Global::Instance()->verify_set_pos = 0; } else { Global::Instance()->verify_set_pos = 1; - target->GetMutablePos().FromGlmVec3(target->born_point->RandPoint().ToGlmVec3()); + target->GetMutablePos().FromGlmVec3(target->born_point->GetSrcPoint(room).ToGlmVec3()); Global::Instance()->verify_set_pos = 0; } room->EnableHuman(hum); diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index 6f792f07..ef23a4c8 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -288,7 +288,7 @@ void Room::AddPlayer(Player* hum, std::shared_ptr init_born_point, bo if (!hum->born_point) { abort(); } else { - hum->SetPos(hum->born_point->RandPoint()); + hum->SetPos(hum->born_point->RandPoint(this)); } Global::Instance()->verify_set_pos = 0; glm::vec3 attack_dir = hum->GetPos().ToGlmVec3(); @@ -372,7 +372,7 @@ void Room::ShowAndroid(Human* target, int num) } hum->born_point = target->born_point; IncBornPointHumanNum(hum->born_point, hum); - hum->SetPos(hum->born_point->RandPoint()); + hum->SetPos(hum->born_point->RandPoint(this)); EnableHuman(hum); ++i; if (i >= num) { @@ -406,7 +406,7 @@ void Room::CreateAndroid(int robot_num) if (!hum->born_point) { abort(); } else { - hum->SetPos(hum->born_point->RandPoint()); + hum->SetPos(hum->born_point->RandPoint(this)); } Global::Instance()->verify_set_pos = 0; glm::vec3 attack_dir = hum->GetPos().ToGlmVec3(); @@ -2932,7 +2932,7 @@ void Room::ForceSetBornPoint(Human* hum, std::shared_ptr born_point) hum->born_point = born_point; if (hum->born_point) { IncBornPointHumanNum(hum->born_point, hum); - hum->SetPos(hum->born_point->RandPoint()); + hum->SetPos(hum->born_point->RandPoint(this)); } hum->FindLocation(); hum->RefreshView(); @@ -3418,7 +3418,7 @@ void Room::AddTeam(class MatchTeam* team) if (!hum->born_point) { abort(); } else { - hum->SetPos(hum->born_point->RandPoint()); + hum->SetPos(hum->born_point->RandPoint(this)); } Global::Instance()->verify_set_pos = 0; glm::vec3 attack_dir = hum->GetPos().ToGlmVec3(); diff --git a/server/gameserver/room.h b/server/gameserver/room.h index 553667a4..98268f37 100644 --- a/server/gameserver/room.h +++ b/server/gameserver/room.h @@ -243,6 +243,8 @@ public: std::shared_ptr GetSandTable() { return sand_table_; } bool IsSandTableRoom(); void LockRoom() { lock_room_ = true; } + void CombineTeam(); + void FillTeam(); private: void ShuaAndroid(); @@ -258,8 +260,6 @@ private: void UpdateGasJump(); bool GenSmallCircle(); void MatchTeam(Human* hum); - void CombineTeam(); - void FillTeam(); void ShuaPlane(); Team* NewTeam(); RoomObstacle* InternalCreateObstacle(int id, float x, float y, float z, diff --git a/server/gameserver/sandtable.cc b/server/gameserver/sandtable.cc index f006f6ad..94bac846 100644 --- a/server/gameserver/sandtable.cc +++ b/server/gameserver/sandtable.cc @@ -12,6 +12,8 @@ SandTable::SandTable(Room* room): room_(room) { if (a8::TIMER_EXEC_EVENT == event) { room->LockRoom(); + room->CombineTeam(); + room->FillTeam(); } }, &room->xtimer_attacher_); diff --git a/server/gameserver/team.cc b/server/gameserver/team.cc index e56d536f..a175d21b 100644 --- a/server/gameserver/team.cc +++ b/server/gameserver/team.cc @@ -115,7 +115,7 @@ void Team::CombineBornPoint() if (!member->born_point) { abort(); } else { - member->SetPos(member->born_point->RandPoint()); + member->SetPos(member->born_point->RandPoint(member->room)); } if (!a8::HasBitFlag(member->status, CS_Disable)) { member->FindLocation();