1
This commit is contained in:
parent
947ba92d2e
commit
671be7a7f2
@ -30,7 +30,7 @@ namespace mt
|
||||
}
|
||||
}
|
||||
|
||||
int AirDrop::RandDrop()
|
||||
int AirDrop::RandDrop() const
|
||||
{
|
||||
if (HasDrop()) {
|
||||
int total_weight = std::get<1>(_drop[_drop.size() - 1]);
|
||||
@ -44,4 +44,15 @@ namespace mt
|
||||
return 0;
|
||||
}
|
||||
|
||||
void AirDrop::Traverse(std::function<void (const AirDrop*, bool&)> cb)
|
||||
{
|
||||
bool stop = false;
|
||||
for (auto& itr : raw_list) {
|
||||
cb(itr, stop);
|
||||
if (stop) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -11,10 +11,12 @@ namespace mt
|
||||
"id")
|
||||
public:
|
||||
|
||||
bool HasDrop() { return !_drop.empty();};
|
||||
bool HasDrop() const { return !_drop.empty();};
|
||||
|
||||
void Init1();
|
||||
int RandDrop();
|
||||
int RandDrop() const;
|
||||
|
||||
static void Traverse(std::function<void (const AirDrop*, bool&)> cb);
|
||||
|
||||
private:
|
||||
std::vector<std::tuple<int, int>> _drop;
|
||||
|
@ -1721,30 +1721,27 @@ void Room::CombineTeam()
|
||||
|
||||
void Room::InitAirDrop()
|
||||
{
|
||||
// 111
|
||||
#if 0
|
||||
{
|
||||
std::list<const mt::AirDrop>& air_drops = MetaMgr::Instance()->GetAirDrops();
|
||||
for (auto& air_drop : air_drops) {
|
||||
if (air_drop.pb->id() >= 1 && air_drop.pb->id() <= 6) {
|
||||
xtimer.SetTimeoutEx
|
||||
(SERVER_FRAME_RATE * air_drop.pb->time(),
|
||||
[this, air_drop] (int event, const a8::Args* args) mutable
|
||||
{
|
||||
if (a8::TIMER_EXEC_EVENT == event) {
|
||||
if (!IsGameOver()) {
|
||||
AirDrop(
|
||||
air_drop.pb->appear_time(),
|
||||
air_drop.RandDrop(),
|
||||
air_drop.pb->id());
|
||||
}
|
||||
}
|
||||
},
|
||||
&xtimer_attacher_);
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
mt::AirDrop::Traverse
|
||||
(
|
||||
[this] (const mt::AirDrop* air_drop_meta, bool& stop)
|
||||
{
|
||||
if (air_drop_meta->id() >= 1 && air_drop_meta->id() <= 6) {
|
||||
xtimer.SetTimeoutEx
|
||||
(SERVER_FRAME_RATE * air_drop_meta->time(),
|
||||
[this, air_drop_meta] (int event, const a8::Args* args) mutable
|
||||
{
|
||||
if (a8::TIMER_EXEC_EVENT == event) {
|
||||
if (!IsGameOver()) {
|
||||
AirDrop(
|
||||
air_drop_meta->appear_time(),
|
||||
air_drop_meta->RandDrop(),
|
||||
air_drop_meta->id());
|
||||
}
|
||||
}
|
||||
},
|
||||
&xtimer_attacher_);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
void Room::AirDrop(int appear_time, int box_id, int airdrop_id)
|
||||
|
Loading…
x
Reference in New Issue
Block a user