This commit is contained in:
aozhiwei 2021-09-28 15:03:27 +00:00
commit 34a95c46b9
6 changed files with 33 additions and 4 deletions

View File

@ -2233,8 +2233,9 @@ void Human::DecItem(int item_id, int item_num)
room->frame_event.AddItemChg(GetWeakPtrRef(), item_id, std::max(0, itr->second)); room->frame_event.AddItemChg(GetWeakPtrRef(), item_id, std::max(0, itr->second));
if (itr->second <= 0) { if (itr->second <= 0) {
if (battling_items_.find(item_id) == battling_items_.end()) { if (battling_items_.find(item_id) == battling_items_.end()) {
items_.erase(itr); //items_.erase(itr); //为啥?????
} }
items_.erase(itr);
} }
} }
} }

View File

@ -63,11 +63,19 @@ void RawTeamMember::InitRobot()
} }
} }
MatchTeam::~MatchTeam()
{
timer_attacher.ClearTimerList();
#ifdef DEBUG
a8::XPrintf("~MatchTeam %s\n", {GetTeamUUid()});
#endif
}
void MatchTeam::Init(f8::MsgHdr& hdr, const cs::CMJoin& msg) void MatchTeam::Init(f8::MsgHdr& hdr, const cs::CMJoin& msg)
{ {
master_team_ = this; master_team_ = this;
create_tick_ = a8::XGetTickCount(); create_tick_ = a8::XGetTickCount();
a8::Timer::Instance()->AddRepeatTimerAndAttach timer_ = a8::Timer::Instance()->AddRepeatTimerAndAttach
(1000, (1000,
a8::XParams() a8::XParams()
.SetSender(this), .SetSender(this),
@ -76,7 +84,14 @@ void MatchTeam::Init(f8::MsgHdr& hdr, const cs::CMJoin& msg)
MatchTeam* team = (MatchTeam*)param.sender.GetUserData(); MatchTeam* team = (MatchTeam*)param.sender.GetUserData();
team->Update(); team->Update();
}, },
&timer_attacher.timer_list_); &timer_attacher.timer_list_,
[] (const a8::XParams& param)
{
#ifdef DEBUG
a8::XPrintf("~MatchTeam.timer\n", {});
#endif
}
);
phase_= kMatchCombining; phase_= kMatchCombining;
phase_start_tick_ = a8::XGetTickCount(); phase_start_tick_ = a8::XGetTickCount();
countdown_ = MetaMgr::Instance()->match_team_time; countdown_ = MetaMgr::Instance()->match_team_time;
@ -174,8 +189,10 @@ void MatchTeam::Update()
UpdateSlave(); UpdateSlave();
} }
master_team_->SyncMatchInfo(); master_team_->SyncMatchInfo();
if (phase_ == kMatchStartGame) { if (phase_ == kMatchStartGame && IsMasterTeam()) {
StartGame(); StartGame();
a8::Timer::Instance()->DeleteTimer(timer_);
timer_ = nullptr;
} }
} }

View File

@ -47,6 +47,7 @@ class MatchTeam
{ {
public: public:
a8::TimerAttacher timer_attacher; a8::TimerAttacher timer_attacher;
~MatchTeam();
void Init(f8::MsgHdr& hdr, const cs::CMJoin& msg); void Init(f8::MsgHdr& hdr, const cs::CMJoin& msg);
@ -93,6 +94,7 @@ class MatchTeam
std::map<std::string, std::shared_ptr<RawTeamMember>> raw_member_hash_; std::map<std::string, std::shared_ptr<RawTeamMember>> raw_member_hash_;
std::shared_ptr<RawTeamMember> first_member_; std::shared_ptr<RawTeamMember> first_member_;
long long last_auto_choose_tick_ = 0; long long last_auto_choose_tick_ = 0;
timer_list* timer_ = nullptr;
std::map<std::string, MatchTeam*> combined_team_hash_; std::map<std::string, MatchTeam*> combined_team_hash_;
MatchTeam* master_team_ = nullptr; MatchTeam* master_team_ = nullptr;

View File

@ -548,6 +548,9 @@ namespace MetaData
for (auto& str : strings) { for (auto& str : strings) {
skin_id.push_back(a8::XValue(str)); skin_id.push_back(a8::XValue(str));
} }
if (skin_id.size() != 3) {
abort();
}
} }
} }

View File

@ -365,6 +365,7 @@ void Player::UpdateUseItemId()
ProcUseItem(use_item_id); ProcUseItem(use_item_id);
use_item_id = 0; use_item_id = 0;
has_use_item_id = false; has_use_item_id = false;
need_sync_active_player = true;
} }
void Player::UpdateSpectate() void Player::UpdateSpectate()
@ -1198,6 +1199,9 @@ void Player::PushJoinRoomMsg()
notifymsg.set_started(false); notifymsg.set_started(false);
notifymsg.set_room_uuid(a8::XValue(room->GetRoomUuid()).GetString()); notifymsg.set_room_uuid(a8::XValue(room->GetRoomUuid()).GetString());
GGListener::Instance()->SendToClient(socket_handle, 0, notifymsg); GGListener::Instance()->SendToClient(socket_handle, 0, notifymsg);
#ifdef DEBUG
a8::XPrintf("PushJoinRooMmsg %d\n", {GetUniId()});
#endif
} }
} }

View File

@ -3959,9 +3959,11 @@ void Room::AddTeam(class MatchTeam* team)
Player* hum = NewPlayer(); Player* hum = NewPlayer();
#if 1 #if 1
a8::SetBitFlag(hum->status, CS_ForceTeam); a8::SetBitFlag(hum->status, CS_ForceTeam);
#if 0
member->msg.mutable_baseskin()->Clear(); member->msg.mutable_baseskin()->Clear();
member->msg.add_baseskin(1); member->msg.add_baseskin(1);
#endif #endif
#endif
hum->ProcPreSettlementInfo(member->msg.pre_settlement_info()); hum->ProcPreSettlementInfo(member->msg.pre_settlement_info());
PlayerMgr::Instance()-> PlayerMgr::Instance()->
CreatePlayerByCMJoin(hum, CreatePlayerByCMJoin(hum,