#include <Quest.h> const Quest QuestList[TOTAL_QUESTS]={ Quest("Test","A test quest",0) }; Quest::Quest(const char *t,const char *d,unsigned int x){ size_t len; title=(char *)malloc((len=strlen(t))); strncpy(title,t,len); desc=(char *)malloc((len=strlen(d))); strncpy(desc,d,len); xp=x; } Quest::~Quest(){ free(title); free(desc); xp=0; } QuestHandler::QuestHandler(){ ccnt=0; } int QuestHandler::assign(const char *t){ unsigned int i=0; if(ccnt==QUEST_LIMIT) return -1; for(;i<TOTAL_QUESTS;i++){ if(!strcmp(QuestList[i].title,t)){ current[ccnt++]=&QuestList[i]; return ccnt; } } return -1; } int QuestHandler::drop(const char *t){ unsigned char i=0; for(;i<ccnt;i++){ if(!strcmp(current[i]->title,t)){ for(i++;i<ccnt;i++){ current[i-1]=current[i]; } return (--ccnt); } } return -1; } int QuestHandler::finish(const char *t){ unsigned char i=0; unsigned int j; for(;i<ccnt;i++){ if(!strcmp(current[i]->title,t)){ j=current[i]->xp; for(i++;i<ccnt;i++){ current[i-1]=current[i]; } ccnt--; return j; } } return -1; }