Rework accepted_time for shared_tasks

This commit is contained in:
Michael Cook (mackal) 2019-06-02 23:32:53 -04:00
parent 32e04cd264
commit b972ec581f
6 changed files with 18 additions and 9 deletions

View File

@ -159,6 +159,7 @@ void SharedTaskManager::HandleTaskRequest(ServerPacket *pack)
buf.WriteInt32(id); // shared task's ID
buf.WriteInt32(task_id); // ID of the task's data
buf.WriteInt32(npc_id); // NPC we're requesting from
buf.WriteInt32(task.GetAcceptedTime()); // time we accepted it
buf.WriteString(leader_name); // leader's name
task.SerializeMembers(buf, false); // everyone but leader
@ -548,3 +549,7 @@ void SharedTask::InitActivities()
}
}
bool SharedTask::UnlockActivities()
{
return true;
}

View File

@ -20,8 +20,8 @@ struct SharedTaskMember {
class SharedTask {
public:
SharedTask() : id(0), task_id(0), accepted_time(0), locked(false) {}
SharedTask(int id, int task_id) : id(id), task_id(task_id), accepted_time(0), locked(false) {}
SharedTask() : id(0), task_id(0), locked(false) {}
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)
@ -43,17 +43,19 @@ public:
void SerializeMembers(SerializeBuffer &buf, bool include_leader = true) const;
void SetCLESharedTasks();
void InitActivities();
bool UnlockActivities();
void Save() const; // save to database
private:
inline void SetID(int in) { id = in; }
inline void SetTaskID(int in) { task_id = in; }
inline void SetAcceptedTime(int in) { accepted_time = in; }
inline void SetAcceptedTime(int in) { task_state.AcceptedTime = in; }
inline void SetLocked(bool in) { locked = in; }
inline int GetAcceptedTime() const { return task_state.AcceptedTime; }
int id; // id we have in our map
int task_id; // ID of the task we're on
int accepted_time; // timestamp of when accepted, initially set by zone
bool locked;
std::string leader_name;
std::vector<SharedTaskMember> members;

View File

@ -1026,7 +1026,7 @@ public:
inline bool IsTaskEnabled(int TaskID) { return (taskstate ? taskstate->IsTaskEnabled(TaskID) : false); }
inline void ProcessTaskProximities(float X, float Y, float Z) { if(taskstate) taskstate->ProcessTaskProximities(this, X, Y, Z); }
inline void AssignTask(int TaskID, int NPCID, bool enforce_level_requirement = false) { if (taskstate) taskstate->AcceptNewTask(this, TaskID, NPCID, enforce_level_requirement); }
inline void AssignSharedTask(int TaskID, int NPCID, int id, std::vector<std::string> &members) { if (taskstate) taskstate->AcceptNewSharedTask(this, TaskID, NPCID, id, members); }
inline void AssignSharedTask(int TaskID, int NPCID, int id, int accepted_time, std::vector<std::string> &members) { if (taskstate) taskstate->AcceptNewSharedTask(this, TaskID, NPCID, id, accepted_time, members); }
inline int ActiveSpeakTask(int NPCID) { if(taskstate) return taskstate->ActiveSpeakTask(NPCID); else return 0; }
inline int ActiveSpeakActivity(int NPCID, int TaskID) { if(taskstate) return taskstate->ActiveSpeakActivity(NPCID, TaskID); else return 0; }
inline void FailTask(int TaskID) { if(taskstate) taskstate->FailTask(this, TaskID); }

View File

@ -3475,7 +3475,8 @@ void ClientTaskState::PendSharedTask(Client *c, int TaskID, int NPCID, bool enfo
return;
}
void ClientTaskState::AcceptNewSharedTask(Client *c, int TaskID, int NPCID, int id, std::vector<std::string> &members)
void ClientTaskState::AcceptNewSharedTask(Client *c, int TaskID, int NPCID, int id, int accepted_time,
std::vector<std::string> &members)
{
// all of this data should have been verified already
// first we need to create the new SharedTaskState
@ -3489,7 +3490,7 @@ void ClientTaskState::AcceptNewSharedTask(Client *c, int TaskID, int NPCID, int
auto task_activity = task_state->GetActivity();
task_activity->TaskID = TaskID;
task_activity->AcceptedTime = time(nullptr);
task_activity->AcceptedTime = accepted_time;
task_activity->Updated = true;
task_activity->CurrentStep = -1;

View File

@ -146,7 +146,7 @@ public:
int GetTaskActivityDoneCountFromTaskID(int TaskID, int ActivityID);
int GetTaskStartTime(TaskType type, int index);
void AcceptNewTask(Client *c, int TaskID, int NPCID, bool enforce_level_requirement = false);
void AcceptNewSharedTask(Client *c, int TaskID, int NPCID, int id, std::vector<std::string> &members);
void AcceptNewSharedTask(Client *c, int TaskID, int NPCID, int id, int accepted_time, std::vector<std::string> &members);
void PendSharedTask(Client *c, int TaskID, int NPCID, bool enforce_level_requirement = false);
void FailTask(Client *c, int TaskID);
int TaskTimeLeft(int TaskID);

View File

@ -1947,6 +1947,7 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p)
int id = pack->ReadUInt32();
int task_id = pack->ReadUInt32();
int taskmaster_id = pack->ReadUInt32();
int accepted_time = pack->ReadUInt32();
char name[64] = { 0 };
pack->ReadString(name);
auto client = entity_list.GetClientByName(name);
@ -1957,7 +1958,7 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p)
pack->ReadString(name);
members.push_back(name);
}
client->AssignSharedTask(task_id, taskmaster_id, id, members);
client->AssignSharedTask(task_id, taskmaster_id, id, accepted_time, members);
} else {
// TODO: something failed, tell world to clean up
}