This commit is contained in:
aozhiwei 2022-08-29 14:19:30 +08:00
parent 77e22b85c4
commit ff6ad94b13
5 changed files with 41 additions and 33 deletions

View File

@ -288,41 +288,47 @@ void Incubator::SpawnWaveMon(int wave)
{ {
auto& mons = room->pve_mode_meta->waves[wave]; auto& mons = room->pve_mode_meta->waves[wave];
for (MetaData::PveGeminiContent* content : mons) { for (MetaData::PveGeminiContent* content : mons) {
room->xtimer.AddDeadLineTimerAndAttach for (int i = 0; i < content->enemys.size(); ++i) {
( room->xtimer.AddDeadLineTimerAndAttach
room->IsDestoryRoom() ? 0 : SERVER_FRAME_RATE * 2, (
a8::XParams() room->IsDestoryRoom() ? 0 : SERVER_FRAME_RATE * 2,
.SetSender(this) a8::XParams()
.SetParam1(content) .SetSender(this)
.SetParam2(room), .SetParam1(content)
[] (const a8::XParams& param) .SetParam2(room)
{ .SetParam3(i),
MetaData::PveGeminiContent* content = (MetaData::PveGeminiContent*)param.param1.GetUserData(); [] (const a8::XParams& param)
Room* room = (Room*)param.param2.GetUserData(); {
MetaData::Player* hero_meta = MetaMgr::Instance()->GetPlayer(content->pb->enemy_id()); MetaData::PveGeminiContent* content = (MetaData::PveGeminiContent*)param.param1.GetUserData();
if (hero_meta) { Room* room = (Room*)param.param2.GetUserData();
a8::Vec2 hero_pos = content->spawn_point; if (param.param3.GetInt() < content->enemys.size()) {
int enemy_id = content->enemys[param.param3.GetInt()];
MetaData::Player* hero_meta = MetaMgr::Instance()->GetPlayer(enemy_id);
if (hero_meta) {
a8::Vec2 hero_pos = content->spawn_point;
int team_id = 666; int team_id = 666;
Creature* master = nullptr; Creature* master = nullptr;
a8::Vec2 dir = hero_pos; a8::Vec2 dir = hero_pos;
dir.Normalize(); dir.Normalize();
Hero* hero = room->CreateHero(master, Hero* hero = room->CreateHero(master,
hero_meta, hero_meta,
hero_pos, hero_pos,
dir, dir,
team_id); team_id);
if (!hero) { if (!hero) {
A8_ABORT(); A8_ABORT();
}
++room->pve_data.mon_num;
room->NotifyUiUpdate();
}
} }
++room->pve_data.mon_num; },
room->NotifyUiUpdate(); &xtimer_attacher_.timer_list_);
} }
}, room->pve_data.refreshed_mon += content->enemys.size();
&xtimer_attacher_.timer_list_);
++room->pve_data.refreshed_mon;
} }
} }

View File

@ -1659,6 +1659,7 @@ namespace MetaData
void PveGeminiContent::Init() void PveGeminiContent::Init()
{ {
} }
void PveGeminiMode::Init() void PveGeminiMode::Init()

View File

@ -405,6 +405,7 @@ namespace MetaData
{ {
const metatable::PveGeminiContent* pb = nullptr; const metatable::PveGeminiContent* pb = nullptr;
a8::Vec2 spawn_point; a8::Vec2 spawn_point;
std::vector<int> enemys;
void Init(); void Init();
}; };

View File

@ -637,7 +637,7 @@ message MFTeamData
optional bool disconnected = 5 [default = false]; //线 optional bool disconnected = 5 [default = false]; //线
optional bool dead = 6 [default = false]; // optional bool dead = 6 [default = false]; //
optional bool downed = 7 [default = false]; // optional bool downed = 7 [default = false]; //
optional string name = 8; // optional string name = 8; //()
optional float max_health = 9; // optional float max_health = 9; //
optional bool riding = 40 [default = false]; // optional bool riding = 40 [default = false]; //
optional string user_data = 60 [default = ""]; // optional string user_data = 60 [default = ""]; //

View File

@ -476,7 +476,7 @@ message PveGeminiContent
optional int32 mode_id = 2; optional int32 mode_id = 2;
optional int32 round = 3; optional int32 round = 3;
optional string spawn_point = 4; optional string spawn_point = 4;
optional int32 enemy_id = 5; optional string enemy_id = 5;
} }
message PveGeminiMode message PveGeminiMode