Add char_id to SharedTaskMember

This commit is contained in:
Michael Cook (mackal) 2019-06-09 23:10:36 -04:00
parent 8141f831b1
commit 3cbd0fe0f6
2 changed files with 15 additions and 9 deletions

View File

@ -82,7 +82,7 @@ void SharedTaskManager::HandleTaskRequest(ServerPacket *pack)
}
auto &task = ret.first->second;
task.AddMember(leader_name, cle_leader, true);
task.AddMember(leader_name, cle_leader, cle_leader->CharID(), true);
if (players.empty()) {
// send instant success to leader
@ -146,7 +146,7 @@ void SharedTaskManager::HandleTaskRequest(ServerPacket *pack)
}
// we're good, add to task
task.AddMember(name, cle);
task.AddMember(name, cle, cle->CharID());
}
}
@ -396,7 +396,7 @@ bool SharedTaskManager::LoadSharedTaskState()
int task_id = atoi(row[0]);
// hmm not sure best way to do this, fine for now
if (tasks.count(task_id) == 1)
tasks[task_id].AddMember(row[2], nullptr, atoi(row[3]) != 0);
tasks[task_id].AddMember(row[2], nullptr, atoi(row[1]), atoi(row[3]) != 0);
}
}

View File

@ -13,10 +13,14 @@ class ClientListEntry;
struct SharedTaskMember {
std::string name;
ClientListEntry *cle;
int char_id;
bool leader;
// TODO: monster mission stuff
SharedTaskMember() : cle(nullptr), leader(false) {}
SharedTaskMember(std::string name, ClientListEntry *cle, bool leader) : name(name), cle(cle), leader(leader) {}
SharedTaskMember() : cle(nullptr), char_id(0), leader(false) {}
SharedTaskMember(std::string name, ClientListEntry *cle, int char_id, bool leader)
: name(name), cle(cle), char_id(char_id), leader(leader)
{
}
};
class SharedTask {
@ -25,14 +29,16 @@ public:
SharedTask(int id, int task_id) : id(id), task_id(task_id), locked(false) {}
~SharedTask() {}
void AddMember(std::string name, ClientListEntry *cle = nullptr, bool leader = false)
void AddMember(std::string name, ClientListEntry *cle = nullptr, int char_id = 0, bool leader = false)
{
members.push_back({name, cle, leader});
members.push_back({name, cle, char_id, leader});
if (leader)
leader_name = name;
auto it = std::find(char_ids.begin(), char_ids.end(), cle->CharID());
if (char_id == 0)
return;
auto it = std::find(char_ids.begin(), char_ids.end(), char_id);
if (it == char_ids.end())
char_ids.push_back(cle->CharID());
char_ids.push_back(char_id);
}
void MemberLeftGame(ClientListEntry *cle);
inline const std::string &GetLeaderName() const { return leader_name; }