| 1445 | } |
| 1446 | |
| 1447 | void sendUpdateTaskStatusList(MapClientSession &src, Task task) |
| 1448 | { |
| 1449 | vTaskEntryList task_entry_list = src.m_ent->m_player->m_tasks_entry_list; |
| 1450 | //find task |
| 1451 | bool found = false; |
| 1452 | |
| 1453 | for (uint32_t i = 0; i < task_entry_list.size(); ++i) |
| 1454 | { |
| 1455 | for(uint32_t t = 0; t < task_entry_list[i].m_task_list.size(); ++t) |
| 1456 | { |
| 1457 | if(task_entry_list[i].m_task_list[t].m_task_idx == task.m_task_idx) // maybe npcId instead? |
| 1458 | { |
| 1459 | found = true; |
| 1460 | qCDebug(logScripts) << "SendUpdateTaskStatusList Updating old task"; |
| 1461 | //Tast already in list, update task; |
| 1462 | task_entry_list[i].m_task_list.at(t) = task; |
| 1463 | break; |
| 1464 | } |
| 1465 | } |
| 1466 | |
| 1467 | if(found) |
| 1468 | break; |
| 1469 | } |
| 1470 | |
| 1471 | if(!found) |
| 1472 | { |
| 1473 | qCDebug(logScripts) << "SendUpdateTaskStatusList Creating new task"; |
| 1474 | uint32_t listSize = task_entry_list.size(); |
| 1475 | if(task_entry_list.size() > 0) |
| 1476 | { |
| 1477 | qCDebug(logScripts) << "SendUpdateTaskStatusList task list not empty"; |
| 1478 | task_entry_list[listSize].m_task_list.push_back(task); // Just use last task entry, Should only be one. |
| 1479 | } |
| 1480 | else |
| 1481 | { |
| 1482 | qCDebug(logScripts) << "SendUpdateTaskStatusList task list empty"; |
| 1483 | std::vector<Task> task_list; |
| 1484 | task_list.push_back(task); |
| 1485 | TaskEntry t_entry; |
| 1486 | t_entry.m_db_id = src.m_ent->m_db_id; |
| 1487 | t_entry.m_reset_selected_task = true; |
| 1488 | t_entry.m_task_list = task_list; |
| 1489 | task_entry_list.push_back(t_entry); |
| 1490 | } |
| 1491 | } |
| 1492 | |
| 1493 | //update database Task list |
| 1494 | src.m_ent->m_player->m_tasks_entry_list = task_entry_list; |
| 1495 | qCDebug(logScripts) << "SendUpdateTaskStatusList DB Task list updated"; |
| 1496 | |
| 1497 | //Send Task list to client |
| 1498 | src.addCommand<TaskStatusList>(task_entry_list); |
| 1499 | qCDebug(logScripts) << "SendUpdateTaskStatusList List updated"; |
| 1500 | } |
| 1501 | |
| 1502 | void selectTask(MapClientSession &src, Task task) |
| 1503 | { |
no test coverage detected