Description: Extends the Task TLO with the TaskElementList's Objective[ ]
The TaskElementList is a row,column address where column 0 is the text, 1 is the status, etc.
Examples:
/echo ${Task.Objective} The first objective
/echo ${Task.Objective[0]} The first objective
/echo ${Task.Objective[0,1]} The first objective's status
/echo ${Task.Objective[0,2]} The first objective's zone
/echo ${Task.Objective[1]} The second objective
Hopefully this can get added to the core as its pretty straight forward. Including the whole Task class for reference.
-- Dewey.
Mq2DataTypes.h line 4367
Code: Select all
class MQ2TaskType : public MQ2Type
{
public:
enum TaskTypeMembers
{
Address=1,
Title=2,
Timer=3,
xMember=4,
Members=5,
Leader=6,
List=7,
Objective=8,
};
MQ2TaskType():MQ2Type("task")
{
TypeMember(Address);
TypeMember(Title);
TypeMember(Timer);
AddMember(xMember,"Member");
TypeMember(Members);
TypeMember(Leader);
TypeMember(List);
TypeMember(Objective);
}
~MQ2TaskType()
{
}
bool GETMEMBER();
bool ToString(MQ2VARPTR VarPtr, PCHAR Destination)
{
if(pTaskWnd) {
if(CListWnd *clist = (CListWnd *)pTaskWnd->GetChildItem("TASK_TaskList")) {
CXStr Str;
clist->GetItemText(&Str, 0, 1);
CHAR szOut[255] = {0};
GetCXStr(Str.Ptr,szOut,254);
if(szOut[0]!='\0') {
strcpy(Destination,szOut);
return true;
}
}
}
return false;
}
bool FromData(MQ2VARPTR &VarPtr, MQ2TYPEVAR &Source)
{
return false;
}
bool FromString(MQ2VARPTR &VarPtr, PCHAR Source)
{
return false;
}
};
Mq2DataTypes.c line 9448
Code: Select all
bool MQ2TaskType::GETMEMBER()
{
if(!VarPtr.Ptr)
return false;
PMQ2TYPEMEMBER pMember=MQ2TaskType::FindMember(Member);
if(!pMember)
return false;
PTASKMEMBER pTaskmember=(PTASKMEMBER)VarPtr.Ptr;
switch((TaskTypeMembers)pMember->ID)
{
case Address:
Dest.DWord=(DWORD)VarPtr.Ptr;
Dest.Type=pIntType;
return true;
case Leader:
{
for(int i=1;pTaskmember && i<7;pTaskmember=pTaskmember->pNext,i++) {
if(pTaskmember->IsLeader) {
strcpy_s(DataTypeTemp,pTaskmember->Name);
Dest.Ptr=&DataTypeTemp[0];
Dest.Type=pStringType;
return true;
}
}
return false;
}
case Title:
{
CListWnd *clist = (CListWnd *)pTaskWnd->GetChildItem("TASK_TaskList");
if(clist) {
CXStr Str;
clist->GetItemText(&Str, 0, 1);
CHAR szOut[255] = {0};
GetCXStr(Str.Ptr,szOut,254);
if(szOut[0]!='\0') {
strcpy_s(DataTypeTemp, szOut);
Dest.Ptr=&DataTypeTemp[0];
Dest.Type=pStringType;
return true;
}
}
return false;
}
case Timer:
{
pTaskWnd->UpdateTaskTimers(_time32(NULL));
CListWnd *clist = (CListWnd *)pTaskWnd->GetChildItem("TASK_TaskList");
if(clist) {
CXStr Str;
clist->GetItemText(&Str, 0, 2);
CHAR szOut[255] = {0};
GetCXStr(Str.Ptr,szOut,254);
if(szOut[0]!='\0') {
int hh, mm, ss;
if(sscanf_s(szOut, "%d:%d:%d", &hh, &mm, &ss)) {
Dest.UInt64 = ((hh*3600)+(mm*60)+ss)*1000;
Dest.Type=pTimeStampType;
return true;
}
return false;
}
}
return false;
}
case xMember:
if (!ISINDEX())
return false;
if (ISNUMBER())
{
for(int i=1;pTaskmember && i<7;pTaskmember=pTaskmember->pNext,i++) {
if(i==GETNUMBER()) {
Dest.Ptr = pTaskmember;
Dest.Type=pTaskMemberType;
return true;
}
}
} else {
for(;pTaskmember;pTaskmember=pTaskmember->pNext) {
if(!_stricmp(pTaskmember->Name,GETFIRST())) {
Dest.Ptr = pTaskmember;
Dest.Type=pTaskMemberType;
return true;
}
}
}
return false;
case Members:
pTaskmember=pTaskMember;
Dest.DWord=0;
for(;pTaskmember && Dest.DWord<6;pTaskmember=pTaskmember->pNext,Dest.DWord++) {
}
Dest.Type = pIntType;
return true;
case List:
{
int theindex = atoi(GETFIRST());
CListWnd *clist = (CListWnd *)pTaskWnd->GetChildItem("TASK_TaskList");
if(clist) {
CXStr Str;
clist->GetItemText(&Str, theindex, 1);
CHAR szOut[255] = {0};
GetCXStr(Str.Ptr,szOut,254);
if(szOut[0]!='\0') {
strcpy_s(DataTypeTemp, szOut);
Dest.Ptr=&DataTypeTemp[0];
Dest.Type=pStringType;
return true;
}
}
return false;
}
case Objective:
{
int v,r,c;
v = sscanf(Index,"%d,%d",&r,&c);
if (v < 2) c = 0;
if (v < 1) r = 0;
//WriteChatf("List.Objective[%s] : r=%d C=%d v=%d", Index,r,c,v);
CListWnd *clist = (CListWnd *)pTaskWnd->GetChildItem("TASK_TaskElementList");
if(clist) {
CXStr Str;
clist->GetItemText(&Str, r, c);
CHAR szOut[255] = {0};
GetCXStr(Str.Ptr,szOut,254);
if(szOut[0]!='\0') {
strcpy_s(DataTypeTemp, szOut);
Dest.Ptr=&DataTypeTemp[0];
Dest.Type=pStringType;
return true;
}
}
return false;
}
}
return false;
}