#include #include #include #include #include "tasks.h" #include "utility.h" #include "base.h" #include "ErrorLog.h" using namespace std; void MainFrame::NewTask(wxCommandEvent& event) { if(mMysql){ eqtask newT; newT.id = (highestIndex+1); newT.duration = 0; strcpy(newT.title, "Default Task Name"); strcpy(newT.desc, "Default Task Description"); strcpy(newT.reward, ""); newT.cashreward = 0; newT.xpreward = 0; newT.rewardmethod = 2; newT.rewardid = 0; newT.startzone = -1; newT.level_min = 0; newT.level_max = 0; newT.repeatable = true; unsigned int newID = wxGetNumberFromUser("", "ID:", "Input ID", (highestIndex+1), 0, 2147483600); newT.id = newID; char * mQuery = 0; MakeAnyLenString(&mQuery, "INSERT INTO `tasks` (`id`,`duration`,`title`,`description`,`reward`,`rewardid`,`cashreward`,`xpreward`,`rewardmethod`,`startzone`, `minlevel`, `maxlevel`, `repeatable`) VALUES (%u,%u,'%s','%s','%s',%u,%u,%u,%u,%u,%u,%u,%u)", newT.id, newT.duration, newT.title, newT.desc, newT.reward, newT.rewardid, newT.cashreward, newT.xpreward, newT.rewardmethod, newT.startzone, newT.level_min, newT.level_max, newT.repeatable); mErrorLog->Log(eqEmuLogSQL, "%s", mQuery); if (mysql_query(mMysql, mQuery)) { mErrorLog->Log(eqEmuLogBoth, "MySQL Error: %s", mysql_error(mMysql)); return; } taskList.push_back(newT); wxString str; str.Printf("%d:%s", newT.id, "Default Task Name"); ItemSelectionList->Append(str); if(highestIndex < (newID + 1)) highestIndex = newID + 1; } else{ mErrorLog->Log(eqEmuLogBoth, "Error with new task create, mysql not initialized"); } } void MainFrame::DeleteTask(wxCommandEvent& event) { if(selectedIndex < 0) { mErrorLog->Log(eqEmuLogBoth, "No item selected for delete, delete failing."); return; } if(mMysql){ int reply = wxMessageBox("Are you sure?", "Confirm Delete", wxYES_NO, this); if(reply != wxYES) { mErrorLog->Log(eqEmuLogBoth, "User aborted delete of task."); return; } vector::iterator Iter; Iter = taskList.begin(); Iter += selectedIndex; eqtask mTask = *Iter; char * mQuery = 0; MakeAnyLenString(&mQuery, "DELETE FROM `tasks` WHERE id=%u", mTask.id); mErrorLog->Log(eqEmuLogSQL, "%s", mQuery); if (mysql_query(mMysql, mQuery)) { mErrorLog->Log(eqEmuLogBoth, "MySQL Error: %s", mysql_error(mMysql)); return; } if(openedIndex == selectedIndex){ wxString mStr; mStr.Printf("%s", "Task Name"); mTaskName->Clear(); mTaskName->AppendText(mStr); mTaskName->Disable(); mStr.clear(); mStr.Printf("%s", "Task Description"); mTaskDesc->Clear(); mTaskDesc->AppendText(mStr); mTaskDesc->Disable(); mStr.clear(); mStr.Printf("%u", 0); mTaskMinLvl->Clear(); mTaskMinLvl->AppendText(mStr); mTaskMinLvl->Disable(); mStr.clear(); mStr.Printf("%u", 0); mTaskMaxLvl->Clear(); mTaskMaxLvl->AppendText(mStr); mTaskMaxLvl->Disable(); mStr.clear(); mStr.Printf("%u", 0); mTaskDuration->Clear(); mTaskDuration->AppendText(mStr); mTaskDuration->Disable(); mStr.clear(); mRewardName->Clear(); mRewardName->Disable(); mStr.Printf("%u", 0); mRewardID->Clear(); mRewardID->AppendText(mStr); mRewardID->Disable(); mStr.clear(); mStr.Printf("%u", 0); mRewardCash->Clear(); mRewardCash->AppendText(mStr); mRewardCash->Disable(); mStr.clear(); mStr.Printf("%u", 0); mRewardXP->Clear(); mRewardXP->AppendText(mStr); mRewardXP->Disable(); mStr.clear(); openedIndex = -1; mRewardMethod->Select(0); mRewardMethod->Disable(); mStartZone->Select(0); mStartZone->Disable(); mTaskRepeatable->SetValue(false); mTaskRepeatable->Disable(); ShowRewardItems->Disable(); ShowRewardItems->Clear(); RefreshItems->Disable(); ClearActivities(); ActivitiesSelectionList->Disable(); openedActivity.activityid = -1; openedActivity.id = -1; openedActivity.step = -1; mActText1->Clear(); mActText1->Disable(); mActText2->Clear(); mActText2->Disable(); mActText3->Clear(); mActText3->Disable(); mActivityZone->Select(0); mActivityZone->Disable(); mActivityOptional->SetValue(false); mActivityOptional->Disable(); mActID->Clear(); mActID->Disable(); mActStep->Clear(); mActStep->Disable(); mActType->Select(0); mActType->Disable(); mActDeliver->Clear(); mActDeliver->Disable(); mActMethod->Select(2); mActMethod->Disable(); mActGoalID->Clear(); mActGoalID->Disable(); mActGoalCount->Clear(); mActGoalCount->Disable(); } taskList.erase(Iter); ItemSelectionList->Delete(selectedIndex); } else{ mErrorLog->Log(eqEmuLogBoth, "Error with task delete, mysql not initialized"); } selectedIndex = -1; } void MainFrame::OnRewardButton(wxCommandEvent& event) { wxString ridStr = mRewardID->GetValue(); int rtype = mRewardMethod->GetCurrentSelection(); int rid = atoi(ridStr.mb_str()); ShowRewardChange(rtype,rid); } void MainFrame::SaveTask(wxCommandEvent& event) { if(!mMysql){ mErrorLog->Log(eqEmuLogBoth, "Mysql not connected for save of task"); return; } if(openedIndex>=0){ mErrorLog->Log(eqEmuLogBoth, "Saving task..."); vector::iterator Iter; Iter = taskList.begin(); Iter += openedIndex; eqtask ourTask = *Iter; wxString getStr; getStr = mTaskName->GetValue(); strcpy(ourTask.title, getStr.mb_str()); getStr.Clear(); getStr = mTaskDesc->GetValue(); strcpy(ourTask.desc, getStr.mb_str()); getStr.Clear(); getStr = mTaskMinLvl->GetValue(); ourTask.level_min = atoi(getStr.mb_str()); getStr.Clear(); getStr = mTaskMaxLvl->GetValue(); ourTask.level_max = atoi(getStr.mb_str()); getStr.Clear(); getStr = mTaskDuration->GetValue(); ourTask.duration = atoi(getStr.mb_str()); getStr.Clear(); getStr = mRewardName->GetValue(); strcpy(ourTask.reward, getStr.mb_str()); getStr.Clear(); getStr = mRewardID->GetValue(); ourTask.rewardid = atoi(getStr.mb_str()); getStr.Clear(); getStr = mRewardCash->GetValue(); ourTask.cashreward = atoi(getStr.mb_str()); getStr.Clear(); getStr = mRewardXP->GetValue(); ourTask.xpreward = atoi(getStr.mb_str()); getStr.Clear(); int * i = (int*)mStartZone->GetClientData(mStartZone->GetSelection()); ourTask.startzone = *i; ourTask.rewardmethod = mRewardMethod->GetSelection(); ourTask.repeatable = mTaskRepeatable->GetValue(); char * mQuery = 0; MakeAnyLenString(&mQuery, "UPDATE tasks SET duration=%u, title='%s', description='%s', reward='%s', rewardid=%u, cashreward=%u, xpreward=%i, rewardmethod=%u, startzone=%u, minlevel=%u, maxlevel=%u, repeatable=%u WHERE id=%u", ourTask.duration, MakeStringSQLSafe(ourTask.title).mb_str(), MakeStringSQLSafe(ourTask.desc).mb_str(), MakeStringSQLSafe(ourTask.reward).mb_str(), ourTask.rewardid, ourTask.cashreward, ourTask.xpreward, ourTask.rewardmethod, ourTask.startzone, ourTask.level_min, ourTask.level_max, ourTask.repeatable, ourTask.id); mErrorLog->Log(eqEmuLogSQL, "%s", mQuery); if (mysql_query(mMysql, mQuery)) { mErrorLog->Log(eqEmuLogBoth, "MySQL Error: %s", mysql_error(mMysql)); return; } /*char * mQuery = 0; MakeAnyLenString(&mQuery, "DELETE FROM tasks WHERE id=%u", (*Iter).id); mErrorLog->Log(eqEmuLogSQL, "%s", mQuery); if (mysql_query(mMysql, mQuery)) { mErrorLog->Log(eqEmuLogBoth, "MySQL Error: %s", mysql_error(mMysql)); return; } MakeAnyLenString(&mQuery, "INSERT INTO `tasks` (`id`,`duration`,`title`,`description`,`reward`,`rewardid`,`cashreward`,`xpreward`,`rewardmethod`,`startzone`, `minlevel`, `maxlevel`) VALUES (%u,%u,'%s','%s','%s',%u,%u,%u,%u,%u,%u,%u)", ourTask.id, ourTask.duration, MakeStringSQLSafe(ourTask.title).mb_str(), MakeStringSQLSafe(ourTask.desc).mb_str(), MakeStringSQLSafe(ourTask.reward).mb_str(), ourTask.rewardid, ourTask.cashreward, ourTask.xpreward, ourTask.rewardmethod, ourTask.startzone, ourTask.level_min, ourTask.level_max); mErrorLog->Log(eqEmuLogSQL, "%s", mQuery); if (mysql_query(mMysql, mQuery)) { mErrorLog->Log(eqEmuLogBoth, "MySQL Error: %s", mysql_error(mMysql)); return; }*/ (*Iter).cashreward = ourTask.cashreward; strcpy((*Iter).desc, ourTask.desc); (*Iter).duration = ourTask.duration; (*Iter).level_max = ourTask.level_max; (*Iter).level_min = ourTask.level_min; strcpy((*Iter).reward, ourTask.reward); (*Iter).rewardid = ourTask.rewardid; (*Iter).rewardmethod = ourTask.rewardmethod; (*Iter).startzone = ourTask.startzone; strcpy((*Iter).title, ourTask.title); (*Iter).xpreward = ourTask.xpreward; (*Iter).repeatable = ourTask.repeatable; getStr.Printf("%u:%s", (*Iter).id, (*Iter).title); ItemSelectionList->SetString(openedIndex, getStr); mErrorLog->Log(eqEmuLogBoth, "Save finished."); } else{ mErrorLog->Log(eqEmuLogBoth, "Opened index for Task Save not valid."); } } void MainFrame::ContextMenuTaskList() { if(!mMysql){ mErrorLog->Log(eqEmuLogBoth, "Context menu cannot open, not connected to db"); return; } wxMenu *mMenu; mMenu = new wxMenu(); mMenu->Append(MENU_NewTask, wxT("New Task"), wxT("Creates a new task")); mMenu->Append(MENU_DeleteTask, wxT("Delete Task"), wxT("Deletes the selected task")); mMenu->AppendSeparator(); mMenu->Append(MENU_SaveTask, wxT("Save Task"), wxT("Saves the opened task")); PopupMenu(mMenu); delete mMenu; }