mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-11 21:01:29 +00:00
672 lines
25 KiB
C++
672 lines
25 KiB
C++
#include <wx/wx.h>
|
|
#include <wx/aboutdlg.h>
|
|
#include <wx/cmdline.h>
|
|
#include <mysql.h>
|
|
#include <vector>
|
|
#include "tasks.h"
|
|
#include "utility.h"
|
|
#include "base.h"
|
|
#include "ErrorLog.h"
|
|
|
|
using namespace std;
|
|
|
|
//Defined Events
|
|
BEGIN_EVENT_TABLE ( MainFrame, wxFrame )
|
|
EVT_MENU(MENU_Connect, MainFrame::Connect)
|
|
EVT_MENU(MENU_Quit, MainFrame::Quit)
|
|
EVT_MENU(MENU_NewTask, MainFrame::NewTask)
|
|
EVT_MENU(MENU_DeleteTask, MainFrame::DeleteTask)
|
|
EVT_MENU(MENU_SaveTask, MainFrame::SaveTask)
|
|
EVT_MENU(MENU_NewActivity, MainFrame::NewActivity)
|
|
EVT_MENU(MENU_DeleteActivity, MainFrame::DeleteActivity)
|
|
EVT_MENU(MENU_SaveActivity, MainFrame::SaveActivity)
|
|
EVT_MENU(MENU_About, MainFrame::About)
|
|
EVT_LISTBOX_DCLICK(LIST_Click, MainFrame::ListBoxDoubleClick)
|
|
EVT_LISTBOX(LIST_Click, MainFrame::ListBoxSimpleSelect)
|
|
EVT_BUTTON(BUTTON_Reward, MainFrame::OnRewardButton )
|
|
EVT_LISTBOX_DCLICK(LIST_Click_Activities, MainFrame::ActivitiesListBoxDoubleClick)
|
|
EVT_LISTBOX(LIST_Click_Activities, MainFrame::ActivitiesListBoxSimpleSelect)
|
|
EVT_CHOICE(CHOICE_ActivityChoiceChange, MainFrame::ActivityChoiceChange)
|
|
EVT_CONTEXT_MENU(MainFrame::ContextClick)
|
|
EVT_LISTBOX_DCLICK(LIST_Click_Goals, MainFrame::GoalsListBoxDoubleClick)
|
|
EVT_MENU(MENU_NewGoal, MainFrame::NewGoal)
|
|
EVT_MENU(MENU_DeleteGoal, MainFrame::DeleteGoal)
|
|
EVT_MENU(MENU_AddGoalItem, MainFrame::NewGoalValue)
|
|
EVT_MENU(MENU_DeleteGoalItem, MainFrame::DeleteGoalValue)
|
|
EVT_MENU(MENU_ModifyGoalItem, MainFrame::ChangeGoalValue)
|
|
EVT_BUTTON(BUTTON_AddGoalItem, MainFrame::NewGoalValue)
|
|
EVT_BUTTON(BUTTON_DeleteGoalItem, MainFrame::DeleteGoalValue)
|
|
EVT_BUTTON(BUTTON_ModifyGoalItem, MainFrame::ChangeGoalValue)
|
|
EVT_MENU(MENU_NewProximity, MainFrame::NewProximity)
|
|
EVT_MENU(MENU_DeleteProximity, MainFrame::DeleteProximity)
|
|
EVT_MENU(MENU_SaveProximity, MainFrame::SaveProximity)
|
|
EVT_LISTBOX_DCLICK(LIST_Click_Proximity, MainFrame::ProximityListBoxDoubleClick)
|
|
END_EVENT_TABLE()
|
|
|
|
//Our main() thread
|
|
IMPLEMENT_APP_CONSOLE(MainApp)
|
|
|
|
bool MainApp::OnInit()
|
|
{
|
|
MainFrame *MainWin = new MainFrame(wxT("Task Master"), wxDefaultPosition, //wxPoint(1,1),
|
|
wxSize(800, 600)); // Create an instance of our frame, or window
|
|
MainWin->Show(TRUE); // show the window
|
|
SetTopWindow(MainWin);// and finally, set it as the main window
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
MainFrame::MainFrame(const wxString& title,
|
|
const wxPoint& pos, const wxSize& size)
|
|
: wxFrame((wxFrame *) NULL, -1, title, pos, size, (wxCAPTION|wxCLOSE_BOX|wxMINIMIZE_BOX|wxSYSTEM_MENU|wxCLIP_CHILDREN|wxTAB_TRAVERSAL))
|
|
{
|
|
mErrorLog = new EQEmuErrorLog;
|
|
CreateStatusBar(1, 0);
|
|
|
|
mErrorLog->Log(eqEmuLogBoth, "Creating Menus.");
|
|
MainMenu = new wxMenuBar();
|
|
wxMenu *FileMenu = new wxMenu();
|
|
|
|
FileMenu->Append(MENU_Connect, wxT("&Connect"), wxT("Connect to the Database"));
|
|
FileMenu->AppendSeparator();
|
|
FileMenu->Append(MENU_Quit, wxT("&Quit"), wxT("Quit"));
|
|
MainMenu->Append(FileMenu, wxT("&Main"));
|
|
|
|
wxMenu *EditMenu = new wxMenu();
|
|
|
|
EditMenu->Append(MENU_NewTask, wxT("&New Task"), wxT("Creates a new task"));
|
|
EditMenu->Append(MENU_DeleteTask, wxT("&Delete Task"), wxT("Deletes the selected task"));
|
|
EditMenu->AppendSeparator();
|
|
EditMenu->Append(MENU_SaveTask, wxT("&Save Task"), wxT("Saves the opened task"));
|
|
MainMenu->Append(EditMenu, wxT("&Tasks"));
|
|
|
|
wxMenu *ActMenu = new wxMenu();
|
|
ActMenu->Append(MENU_NewActivity, wxT("&New Activity"), wxT("Create a new activity for this task"));
|
|
ActMenu->Append(MENU_DeleteActivity, wxT("&Delete Activity"), wxT("Deletes the selected activity for this task"));
|
|
ActMenu->AppendSeparator();
|
|
ActMenu->Append(MENU_SaveActivity, wxT("&Save Activity"), wxT("Saves the opened task activity"));
|
|
MainMenu->Append(ActMenu, wxT("&Activities"));
|
|
|
|
wxMenu *GoalsMenu = new wxMenu();
|
|
GoalsMenu->Append(MENU_NewGoal, wxT("&New Goal"), wxT("Creates a new goal list entry"));
|
|
GoalsMenu->Append(MENU_DeleteGoal, wxT("&Delete Goal"), wxT("Deletes the selected goal list entry"));
|
|
GoalsMenu->AppendSeparator();
|
|
GoalsMenu->Append(MENU_AddGoalItem, wxT("N&ew Goal Value"), wxT("Saves the opened task activity"));
|
|
GoalsMenu->Append(MENU_DeleteGoalItem, wxT("De&lete Goal Value"), wxT("Deletes the selected goal value entry"));
|
|
GoalsMenu->Append(MENU_ModifyGoalItem, wxT("M&odify Goal Value"), wxT("Attempts to change the selected goal value entry"));
|
|
MainMenu->Append(GoalsMenu, wxT("&Goals"));
|
|
|
|
wxMenu *ProximityMenu = new wxMenu();
|
|
ProximityMenu->Append(MENU_NewProximity, wxT("&New Proximity"), wxT("Creates a new proximity entry"));
|
|
ProximityMenu->Append(MENU_DeleteProximity, wxT("&Delete Proximity"), wxT("Deletes the selected proximity entry"));
|
|
ProximityMenu->AppendSeparator();
|
|
ProximityMenu->Append(MENU_SaveProximity, wxT("&Save Proximity"), wxT("Saves the opened proximity entry"));
|
|
MainMenu->Append(ProximityMenu, wxT("&Proximity"));
|
|
|
|
wxMenu *AboutMenu = new wxMenu();
|
|
AboutMenu->Append(MENU_About, wxT("A&bout"), wxT("Program Information"));
|
|
MainMenu->Append(AboutMenu, wxT("A&bout"));
|
|
|
|
SetMenuBar(MainMenu);
|
|
|
|
mErrorLog->Log(eqEmuLogBoth, "Creating Sizer.");
|
|
BoxSizer1 = new wxBoxSizer(wxHORIZONTAL);
|
|
|
|
mErrorLog->Log(eqEmuLogBoth, "Creating Item List Box.");
|
|
ItemSelectionList = new wxListBox(this, LIST_Click, wxDefaultPosition, wxSize( -1,-1 ), 0, NULL, 0);
|
|
|
|
mErrorLog->Log(eqEmuLogBoth, "Adding Item List Box to Sizer.");
|
|
BoxSizer1->Add(ItemSelectionList, 0, wxALIGN_TOP|wxALL|wxEXPAND, 5);
|
|
|
|
mErrorLog->Log(eqEmuLogBoth, "Creating Notebook Backing.");
|
|
MainNotebookBack = new wxNotebook(this, wxID_ANY, wxDefaultPosition, wxSize( -1,-1 ), 0);
|
|
|
|
mErrorLog->Log(eqEmuLogBoth, "Creating Panels.");
|
|
MainPanel1 = new wxPanel(MainNotebookBack, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL);
|
|
MainPanel2 = new wxPanel(MainNotebookBack, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL);
|
|
MainPanel3 = new wxPanel(MainNotebookBack, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL);
|
|
MainPanel4 = new wxPanel(MainNotebookBack, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL);
|
|
MainPanel5 = new wxPanel(MainNotebookBack, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL);
|
|
|
|
mErrorLog->Log(eqEmuLogBoth, "Adding Panels to Notebook Backing.");
|
|
MainNotebookBack->AddPage(MainPanel1, wxT("General"), true);
|
|
MainNotebookBack->AddPage(MainPanel2, wxT("Activities"), false);
|
|
MainNotebookBack->AddPage(MainPanel3, wxT("Goals"), false);
|
|
MainNotebookBack->AddPage(MainPanel4, wxT("Proximities"), false);
|
|
MainNotebookBack->AddPage(MainPanel5, wxT("Task Sets"), false);
|
|
|
|
/*General Page Elements*/
|
|
mErrorLog->Log(eqEmuLogBoth, "Adding elements to General Page");
|
|
//name label + text
|
|
mTaskNameLabel = new wxStaticText(MainPanel1, -1, "Name:", wxPoint(0,2), wxDefaultSize);
|
|
mTaskName = new wxTextCtrl(MainPanel1, -1, wxT("Task Name"), wxPoint(65,0), wxSize(300,20));
|
|
mTaskName->SetMaxLength(100);
|
|
mTaskName->Disable();
|
|
|
|
//desc label + text
|
|
mTaskDescLabel = new wxStaticText(MainPanel1, -1, "Desc:", wxPoint(0,32), wxDefaultSize);
|
|
mTaskDesc = new wxTextCtrl(MainPanel1, -1, wxT("Task Description"), wxPoint(65,30), wxSize(300,200), wxTE_MULTILINE);
|
|
mTaskDesc->SetMaxLength(2047);
|
|
mTaskDesc->Disable();
|
|
|
|
//Min Level label + text
|
|
mTaskMinLvlLabel = new wxStaticText(MainPanel1, -1, "Min Lvl:", wxPoint(375,2), wxDefaultSize);
|
|
mTaskMinLvl = new wxTextCtrl(MainPanel1, -1, wxT("0"), wxPoint(450,0), wxSize(25,20), wxTE_DONTWRAP, wxTextValidator(wxFILTER_NUMERIC));
|
|
mTaskMinLvl->SetMaxLength(2);
|
|
mTaskMinLvl->Disable();
|
|
|
|
//Max Level label + text
|
|
mTaskMaxLvlLabel = new wxStaticText(MainPanel1, -1, "Max Lvl:", wxPoint(500,2), wxDefaultSize);
|
|
mTaskMaxLvl = new wxTextCtrl(MainPanel1, -1, wxT("0"), wxPoint(580,0), wxSize(25,20), wxTE_DONTWRAP, wxTextValidator(wxFILTER_NUMERIC));
|
|
mTaskMaxLvl->SetMaxLength(2);
|
|
mTaskMaxLvl->Disable();
|
|
|
|
//duration
|
|
mTaskDurationLabel = new wxStaticText(MainPanel1, -1, "Duration:", wxPoint(375,32), wxDefaultSize);
|
|
mTaskDuration = new wxTextCtrl(MainPanel1, -1, wxT("0"), wxPoint(450,30), wxSize(70,20), wxTE_DONTWRAP, wxTextValidator(wxFILTER_NUMERIC));
|
|
mTaskDuration->SetMaxLength(9);
|
|
mTaskDuration->Disable();
|
|
|
|
//box to enclose rewards
|
|
mRewardsBox = new wxStaticBox(MainPanel1, -1, "Rewards", wxPoint(0,300), wxSize(644,210));
|
|
mRewardNameLabel = new wxStaticText(mRewardsBox, -1, "Reward:", wxPoint(10,17), wxDefaultSize);
|
|
mRewardName = new wxTextCtrl(mRewardsBox, -1, wxT(""), wxPoint(80,15), wxSize(280,20));
|
|
mRewardName->SetMaxLength(64);
|
|
mRewardName->Disable();
|
|
|
|
mRewardIDLabel = new wxStaticText(mRewardsBox, -1, "Reward ID:", wxPoint(10,47), wxDefaultSize);
|
|
mRewardID = new wxTextCtrl(mRewardsBox, -1, wxT("0"), wxPoint(160,45), wxSize(70,20), wxTE_DONTWRAP, wxTextValidator(wxFILTER_NUMERIC));
|
|
mRewardID->SetMaxLength(9);
|
|
mRewardID->Disable();
|
|
|
|
mRewardCashLabel = new wxStaticText(mRewardsBox, -1, "Money Rewarded:", wxPoint(10,77), wxDefaultSize);
|
|
mRewardCash = new wxTextCtrl(mRewardsBox, -1, wxT("0"), wxPoint(160,75), wxSize(70,20), wxTE_DONTWRAP, wxTextValidator(wxFILTER_NUMERIC));
|
|
mRewardCash->SetMaxLength(9);
|
|
mRewardCash->Disable();
|
|
|
|
mRewardXPLabel = new wxStaticText(mRewardsBox, -1, "Experience Rewarded:", wxPoint(10,107), wxDefaultSize);
|
|
mRewardXP = new wxTextCtrl(mRewardsBox, -1, wxT("0"), wxPoint(160,105), wxSize(70,20), wxTE_DONTWRAP, wxTextValidator(wxFILTER_NUMERIC));
|
|
mRewardXP->SetMaxLength(9);
|
|
mRewardXP->Disable();
|
|
|
|
mRewardMethodLabel = new wxStaticText(mRewardsBox, -1, "Reward Method:", wxPoint(10,137), wxDefaultSize);
|
|
mRewardMethod = new wxChoice(mRewardsBox, -1, wxPoint(160, 135), wxDefaultSize);
|
|
wxString mRewardMethodStr;
|
|
mRewardMethodStr.Printf("%s", "(0) Single Item Id");
|
|
mRewardMethod->Append(mRewardMethodStr);
|
|
mRewardMethodStr.clear();
|
|
mRewardMethodStr.Printf("%s", "(1) List from Goal List");
|
|
mRewardMethod->Append(mRewardMethodStr);
|
|
mRewardMethodStr.clear();
|
|
mRewardMethodStr.Printf("%s", "(2) Perl Quest Reward");
|
|
mRewardMethod->Append(mRewardMethodStr);
|
|
mRewardMethod->Select(0);
|
|
mRewardMethod->Disable();
|
|
|
|
ShowRewardItems = new wxListBox(mRewardsBox, -1, wxPoint(375, 40), wxSize(250,160), 0, NULL, 0);
|
|
ShowRewardItems->Disable();
|
|
|
|
RefreshItems = new wxButton(mRewardsBox,BUTTON_Reward,"Refresh Item List", wxPoint(375,10), wxSize(250,25));
|
|
RefreshItems->Disable();
|
|
|
|
mStartZoneLabel = new wxStaticText(MainPanel1, -1, "Start Zone:", wxPoint(375,62), wxDefaultSize);
|
|
mStartZone = new wxChoice(MainPanel1, -1, wxPoint(460, 60), wxDefaultSize, 0, NULL, wxCB_SORT);
|
|
mStartZone->Disable();
|
|
|
|
mTaskRepeatable = new wxCheckBox(MainPanel1, -1, "Repeatable:", wxPoint(375, 87), wxDefaultSize, wxCHK_2STATE | wxALIGN_RIGHT);
|
|
mTaskRepeatable->Disable();
|
|
|
|
/*General Page Elements End*/
|
|
|
|
/*Activities Page Elements*/
|
|
mErrorLog->Log(eqEmuLogBoth, "Adding elements to Activities Page");
|
|
ActivitiesSelectionList = new wxListBox(MainPanel2, LIST_Click_Activities, wxPoint(0,0), wxSize(100,510), 0, NULL, 0);
|
|
ActivitiesSelectionList->Disable();
|
|
|
|
|
|
mActText1Label = new wxStaticText(MainPanel2, -1, "Text 1:", wxPoint(105,2), wxDefaultSize);
|
|
mActText1 = new wxTextCtrl(MainPanel2, -1, wxT(""), wxPoint(185,0), wxSize(180,20), wxTE_DONTWRAP);
|
|
mActText1->SetMaxLength(64);
|
|
mActText1->Disable();
|
|
|
|
mActText2Label = new wxStaticText(MainPanel2, -1, "Text 2:", wxPoint(105,22), wxDefaultSize);
|
|
mActText2 = new wxTextCtrl(MainPanel2, -1, wxT(""), wxPoint(185,20), wxSize(180,20), wxTE_DONTWRAP);
|
|
mActText2->SetMaxLength(64);
|
|
mActText2->Disable();
|
|
|
|
mActText3Label = new wxStaticText(MainPanel2, -1, "Text 3:", wxPoint(105,42), wxDefaultSize);
|
|
mActText3 = new wxTextCtrl(MainPanel2, -1, wxT(""), wxPoint(185,40), wxSize(180,60), wxTE_MULTILINE);
|
|
mActText3->SetMaxLength(128);
|
|
mActText3->Disable();
|
|
|
|
mActivityZoneLabel = new wxStaticText(MainPanel2, -1, "Zone:", wxPoint(380,2), wxDefaultSize);
|
|
mActivityZone = new wxChoice(MainPanel2, -1, wxPoint(440, 0), wxDefaultSize, 0, NULL, wxCB_SORT);
|
|
mActivityZone->Disable();
|
|
|
|
mActivityOptional = new wxCheckBox(MainPanel2, -1, "Optional:", wxPoint(580, 2), wxDefaultSize, wxCHK_2STATE | wxALIGN_RIGHT);
|
|
mActivityOptional->Disable();
|
|
|
|
mActIDLabel = new wxStaticText(MainPanel2, -1, "Activity ID:", wxPoint(105,107), wxDefaultSize);
|
|
mActID = new wxTextCtrl(MainPanel2, -1, wxT(""), wxPoint(185,105), wxSize(25,20), wxTE_DONTWRAP, wxTextValidator(wxFILTER_NUMERIC));
|
|
mActID->SetMaxLength(2);
|
|
mActID->Disable();
|
|
|
|
mActStepLabel = new wxStaticText(MainPanel2, -1, "Step:", wxPoint(105,129), wxDefaultSize);
|
|
mActStep = new wxTextCtrl(MainPanel2, -1, wxT(""), wxPoint(185,127), wxSize(25,20), wxTE_DONTWRAP, wxTextValidator(wxFILTER_NUMERIC));
|
|
mActStep->SetMaxLength(2);
|
|
mActStep->Disable();
|
|
|
|
mActTypeLabel = new wxStaticText(MainPanel2, -1, "Type:", wxPoint(105,155), wxDefaultSize);
|
|
mActType = new wxChoice(MainPanel2, CHOICE_ActivityChoiceChange, wxPoint(185, 153), wxDefaultSize);
|
|
mRewardMethodStr.Clear();
|
|
mRewardMethodStr.Printf("%s", "(0) Unknown");
|
|
mActType->Append(mRewardMethodStr);
|
|
mRewardMethodStr.Clear();
|
|
mRewardMethodStr.Printf("%s", "(1) Deliver");
|
|
mActType->Append(mRewardMethodStr);
|
|
mRewardMethodStr.Clear();
|
|
mRewardMethodStr.Printf("%s", "(2) Kill");
|
|
mActType->Append(mRewardMethodStr);
|
|
mRewardMethodStr.Clear();
|
|
mRewardMethodStr.Printf("%s", "(3) Loot");
|
|
mActType->Append(mRewardMethodStr);
|
|
mRewardMethodStr.Clear();
|
|
mRewardMethodStr.Printf("%s", "(4) Speak To");
|
|
mActType->Append(mRewardMethodStr);
|
|
mRewardMethodStr.Clear();
|
|
mRewardMethodStr.Printf("%s", "(5) Explore");
|
|
mActType->Append(mRewardMethodStr);
|
|
mRewardMethodStr.Clear();
|
|
mRewardMethodStr.Printf("%s", "(6) Trade Skill");
|
|
mActType->Append(mRewardMethodStr);
|
|
mRewardMethodStr.Clear();
|
|
mRewardMethodStr.Printf("%s", "(7) Fish");
|
|
mActType->Append(mRewardMethodStr);
|
|
mRewardMethodStr.Clear();
|
|
mRewardMethodStr.Printf("%s", "(8) Forage");
|
|
mActType->Append(mRewardMethodStr);
|
|
mRewardMethodStr.Clear();
|
|
mRewardMethodStr.Printf("%s", "(9) Use");
|
|
mActType->Append(mRewardMethodStr);
|
|
mRewardMethodStr.Clear();
|
|
mRewardMethodStr.Printf("%s", "(10) Use");
|
|
mActType->Append(mRewardMethodStr);
|
|
mRewardMethodStr.Clear();
|
|
mRewardMethodStr.Printf("%s", "(11) Touch");
|
|
mActType->Append(mRewardMethodStr);
|
|
mRewardMethodStr.Clear();
|
|
mRewardMethodStr.Printf("%s", "(100) GiveCash");
|
|
mActType->Append(mRewardMethodStr);
|
|
mRewardMethodStr.Clear();
|
|
mRewardMethodStr.Printf("%s", "(999) Custom");
|
|
mActType->Append(mRewardMethodStr);
|
|
mActType->Disable();
|
|
mActType->Select(0);
|
|
|
|
mActInfo = new wxStaticBox(MainPanel2, -1, "Info", wxPoint(425,385), wxSize(219,125));
|
|
mActInfoText = new wxStaticText(mActInfo, -1, "Unknown Activity Type:\nThis is not a valid activity type", wxPoint(25,25), wxDefaultSize);
|
|
|
|
mActDeliverLabel = new wxStaticText(MainPanel2, -1, "Deliver to NPCID:", wxPoint(105,182), wxDefaultSize);
|
|
mActDeliver = new wxTextCtrl(MainPanel2, -1, wxT(""), wxPoint(215,180), wxSize(60,20), wxTE_DONTWRAP, wxTextValidator(wxFILTER_NUMERIC));
|
|
mActDeliver->SetMaxLength(7);
|
|
mActDeliver->Disable();
|
|
|
|
mActMethodLabel = new wxStaticText(MainPanel2, -1, "Goal Method:", wxPoint(105,402), wxDefaultSize);
|
|
mActMethod = new wxChoice(MainPanel2, -1, wxPoint(200, 400), wxDefaultSize);
|
|
|
|
mRewardMethodStr.Clear();
|
|
mRewardMethodStr.Printf("%s", "(0) Single Goal ID");
|
|
mActMethod->Append(mRewardMethodStr);
|
|
mRewardMethodStr.Clear();
|
|
mRewardMethodStr.Printf("%s", "(1) Goal ID List");
|
|
mActMethod->Append(mRewardMethodStr);
|
|
mRewardMethodStr.Clear();
|
|
mRewardMethodStr.Printf("%s", "(2) Perl Quest");
|
|
mActMethod->Append(mRewardMethodStr);
|
|
mActMethod->Select(2);
|
|
mActMethod->Disable();
|
|
|
|
mActGoalIDLabel = new wxStaticText(MainPanel2, -1, "Goal ID:", wxPoint(105,432), wxDefaultSize);
|
|
mActGoalID = new wxTextCtrl(MainPanel2, -1, wxT(""), wxPoint(200,430), wxSize(60,20), wxTE_DONTWRAP, wxTextValidator(wxFILTER_NUMERIC));
|
|
mActGoalID->SetMaxLength(7);
|
|
mActGoalID->Disable();
|
|
|
|
mActGoalCountLabel = new wxStaticText(MainPanel2, -1, "Goal Count:", wxPoint(105,457), wxDefaultSize);
|
|
mActGoalCount = new wxTextCtrl(MainPanel2, -1, wxT(""), wxPoint(200,455), wxSize(60,20), wxTE_DONTWRAP, wxTextValidator(wxFILTER_NUMERIC));
|
|
mActGoalCount->SetMaxLength(8);
|
|
mActGoalCount->Disable();
|
|
|
|
/*Activities Page Elements End*/
|
|
|
|
/*Goals Page Elements*/
|
|
mErrorLog->Log(eqEmuLogBoth, "Adding elements to Goals Page");
|
|
GoalsSelectionList = new wxListBox(MainPanel3, LIST_Click_Goals, wxPoint(0,0), wxSize(100,510), 0, NULL, 0);
|
|
|
|
GoalsValuesList = new wxListBox(MainPanel3, -1, wxPoint(150,50), wxSize(150,300), 0, NULL, 0);
|
|
GoalsValuesList->Disable();
|
|
|
|
mGoalsNewValueButton = new wxButton(MainPanel3, BUTTON_AddGoalItem, "Add Value", wxPoint(302,275), wxSize(100,-1));
|
|
mGoalsNewValueButton->Disable();
|
|
mGoalsDeleteValueButton = new wxButton(MainPanel3, BUTTON_DeleteGoalItem, "Delete Value", wxPoint(302,300), wxSize(100,-1));
|
|
mGoalsDeleteValueButton->Disable();
|
|
mGoalsChangeValueButton = new wxButton(MainPanel3, BUTTON_ModifyGoalItem, "Change Value", wxPoint(302,325), wxSize(100,-1));
|
|
mGoalsChangeValueButton->Disable();
|
|
/*Goals Page Elements End*/
|
|
|
|
/*Proximities Page Elements*/
|
|
mErrorLog->Log(eqEmuLogBoth, "Adding elements to Proximities Page");
|
|
ProximitySelectionList = new wxListBox(MainPanel4, LIST_Click_Proximity, wxPoint(0,0), wxSize(100,510), 0, NULL, 0);
|
|
|
|
mProxIdLabel = new wxStaticText(MainPanel4, -1, "Id:", wxPoint(105,12), wxDefaultSize);
|
|
mProxId = new wxTextCtrl(MainPanel4, -1, wxT(""), wxPoint(150,10), wxSize(50,20), wxTE_DONTWRAP, wxTextValidator(wxFILTER_NUMERIC));
|
|
mProxId->SetMaxLength(6);
|
|
mProxId->Disable();
|
|
mProxMinxLabel = new wxStaticText(MainPanel4, -1, "MinX:", wxPoint(105,42), wxDefaultSize);
|
|
mProxMinx = new wxTextCtrl(MainPanel4, -1, wxT(""), wxPoint(150,40), wxSize(80,20), wxTE_DONTWRAP, wxTextValidator(wxFILTER_NUMERIC));
|
|
mProxMinx->SetMaxLength(12);
|
|
mProxMinx->Disable();
|
|
mProxMaxxLabel = new wxStaticText(MainPanel4, -1, "MaxX:", wxPoint(255,42), wxDefaultSize);
|
|
mProxMaxx = new wxTextCtrl(MainPanel4, -1, wxT(""), wxPoint(300,40), wxSize(80,20), wxTE_DONTWRAP, wxTextValidator(wxFILTER_NUMERIC));
|
|
mProxMaxx->SetMaxLength(12);
|
|
mProxMaxx->Disable();
|
|
mProxMinyLabel = new wxStaticText(MainPanel4, -1, "MinY:", wxPoint(105,72), wxDefaultSize);
|
|
mProxMiny = new wxTextCtrl(MainPanel4, -1, wxT(""), wxPoint(150,70), wxSize(80,20), wxTE_DONTWRAP, wxTextValidator(wxFILTER_NUMERIC));
|
|
mProxMiny->SetMaxLength(12);
|
|
mProxMiny->Disable();
|
|
mProxMaxyLabel = new wxStaticText(MainPanel4, -1, "MaxY:", wxPoint(255,72), wxDefaultSize);
|
|
mProxMaxy = new wxTextCtrl(MainPanel4, -1, wxT(""), wxPoint(300,70), wxSize(80,20), wxTE_DONTWRAP, wxTextValidator(wxFILTER_NUMERIC));
|
|
mProxMaxy->SetMaxLength(12);
|
|
mProxMaxy->Disable();
|
|
mProxMinzLabel = new wxStaticText(MainPanel4, -1, "MinZ:", wxPoint(105,102), wxDefaultSize);
|
|
mProxMinz = new wxTextCtrl(MainPanel4, -1, wxT(""), wxPoint(150,100), wxSize(80,20), wxTE_DONTWRAP, wxTextValidator(wxFILTER_NUMERIC));
|
|
mProxMinz->SetMaxLength(12);
|
|
mProxMinz->Disable();
|
|
mProxMaxzLabel = new wxStaticText(MainPanel4, -1, "MaxZ:", wxPoint(255,102), wxDefaultSize);
|
|
mProxMaxz = new wxTextCtrl(MainPanel4, -1, wxT(""), wxPoint(300,100), wxSize(80,20), wxTE_DONTWRAP, wxTextValidator(wxFILTER_NUMERIC));
|
|
mProxMaxz->SetMaxLength(12);
|
|
mProxMaxz->Disable();
|
|
mProxZoneLabel = new wxStaticText(MainPanel4, -1, "Zone:", wxPoint(105,202), wxDefaultSize);
|
|
mProxZone = new wxChoice(MainPanel4, -1, wxPoint(150, 200), wxDefaultSize);
|
|
mProxZone->Disable();
|
|
/*Proximities Page Elements End*/
|
|
|
|
mErrorLog->Log(eqEmuLogBoth, "Adding Notebook to Sizer.");
|
|
BoxSizer1->Add(MainNotebookBack, 1, wxALIGN_TOP|wxEXPAND, 5);
|
|
|
|
mErrorLog->Log(eqEmuLogBoth, "Setting Frame Sizer.");
|
|
this->SetSizer(BoxSizer1);
|
|
mErrorLog->Log(eqEmuLogBoth, "Calculating Frame Layout.");
|
|
this->Layout();
|
|
|
|
selectedIndex = -1; //nothing selected
|
|
openedIndex = -1; //nothing opened
|
|
highestIndex = 0;
|
|
openedActivity.activityid = -1;
|
|
openedActivity.id = -1;
|
|
openedActivity.step = -1;
|
|
openedGoal = 0;
|
|
openedProximity.exploreid = 0xFFFFFFFF;
|
|
openedProximity.zoneid = 0xFFFFFFFF;
|
|
|
|
//database setting init.
|
|
mMysql = NULL;
|
|
memset(server,0,256);
|
|
memset(user,0,256);
|
|
memset(password,0,256);
|
|
memset(database,0,256);
|
|
if(!GetDatabaseSettings())
|
|
Close(TRUE);
|
|
}
|
|
|
|
void MainFrame::Connect(wxCommandEvent& WXUNUSED(event))
|
|
{
|
|
if(mMysql){
|
|
mErrorLog->Log(eqEmuLogBoth, "Connect to database requested but database connection exists.");
|
|
return;
|
|
}
|
|
ItemSelectionList->Clear();
|
|
mErrorLog->Log(eqEmuLogBoth, "Connect to database requested.");
|
|
|
|
if(!mMysql){
|
|
mMysql = mysql_init(NULL);
|
|
}
|
|
|
|
if(mMysql){
|
|
if (!mysql_real_connect(mMysql, server,
|
|
user, password, database, 0, NULL, 0)) {
|
|
mErrorLog->Log(eqEmuLogBoth, "MySQL Connection Error: %s", mysql_error(mMysql));
|
|
Close(TRUE);
|
|
return;
|
|
}
|
|
|
|
if(!LoadTasks()){
|
|
mysql_close(mMysql);
|
|
mErrorLog->Log(eqEmuLogBoth, "Failed to load tasks, exiting.");
|
|
Close(TRUE);
|
|
return;
|
|
}
|
|
|
|
if(!LoadGoals()){
|
|
mysql_close(mMysql);
|
|
mErrorLog->Log(eqEmuLogBoth, "Failed to load goals, exiting.");
|
|
Close(TRUE);
|
|
return;
|
|
}
|
|
|
|
if(!LoadActivities()){
|
|
mysql_close(mMysql);
|
|
mErrorLog->Log(eqEmuLogBoth, "Failed to load activities, exiting.");
|
|
Close(TRUE);
|
|
return;
|
|
}
|
|
|
|
if(!LoadItems()){
|
|
mysql_close(mMysql);
|
|
mErrorLog->Log(eqEmuLogBoth, "Failed to load items, exiting.");
|
|
Close(TRUE);
|
|
return;
|
|
}
|
|
|
|
if(!LoadZones()){
|
|
mysql_close(mMysql);
|
|
mErrorLog->Log(eqEmuLogBoth, "Failed to load zones, exiting.");
|
|
Close(TRUE);
|
|
return;
|
|
}
|
|
|
|
if(!LoadProximity()){
|
|
mysql_close(mMysql);
|
|
mErrorLog->Log(eqEmuLogBoth, "Failed to load proximities, exiting.");
|
|
Close(TRUE);
|
|
return;
|
|
}
|
|
|
|
PopulateGoals();
|
|
PopulateProximity();
|
|
}
|
|
}
|
|
|
|
void MainFrame::Quit(wxCommandEvent& WXUNUSED(event))
|
|
{
|
|
mErrorLog->Log(eqEmuLogBoth, "Exit requested, exiting.");
|
|
delete mErrorLog;
|
|
mErrorLog = NULL;
|
|
mysql_close(mMysql);
|
|
|
|
Close(TRUE);
|
|
}
|
|
|
|
void MainFrame::ListBoxSimpleSelect(wxCommandEvent& event)
|
|
{
|
|
selectedIndex = event.GetInt();
|
|
}
|
|
|
|
void MainFrame::ListBoxDoubleClick(wxCommandEvent& event)
|
|
{
|
|
mErrorLog->Log(eqEmuLogBoth, "Double clicked on item %d.", event.GetInt());
|
|
openedIndex = event.GetInt();
|
|
|
|
vector<eqtask>::iterator Iter;
|
|
Iter = taskList.begin();
|
|
Iter += openedIndex;
|
|
eqtask mTask = *Iter;
|
|
|
|
wxString mStr;
|
|
mStr.Printf("%s", mTask.title);
|
|
mTaskName->Clear();
|
|
mTaskName->AppendText(mStr);
|
|
mTaskName->Enable();
|
|
mStr.clear();
|
|
|
|
mStr.Printf("%s", mTask.desc);
|
|
mTaskDesc->Clear();
|
|
mTaskDesc->AppendText(mStr);
|
|
mTaskDesc->Enable();
|
|
mStr.clear();
|
|
|
|
mStr.Printf("%u", mTask.level_min);
|
|
mTaskMinLvl->Clear();
|
|
mTaskMinLvl->AppendText(mStr);
|
|
mTaskMinLvl->Enable();
|
|
mStr.clear();
|
|
|
|
mStr.Printf("%u", mTask.level_max);
|
|
mTaskMaxLvl->Clear();
|
|
mTaskMaxLvl->AppendText(mStr);
|
|
mTaskMaxLvl->Enable();
|
|
mStr.clear();
|
|
|
|
mStr.Printf("%u", mTask.duration);
|
|
mTaskDuration->Clear();
|
|
mTaskDuration->AppendText(mStr);
|
|
mTaskDuration->Enable();
|
|
mStr.clear();
|
|
|
|
mStr.Printf("%s", mTask.reward);
|
|
mRewardName->Clear();
|
|
mRewardName->AppendText(mStr);
|
|
mRewardName->Enable();
|
|
mStr.clear();
|
|
|
|
mStr.Printf("%u", mTask.rewardid);
|
|
mRewardID->Clear();
|
|
mRewardID->AppendText(mStr);
|
|
mRewardID->Enable();
|
|
mStr.clear();
|
|
|
|
mStr.Printf("%u", mTask.cashreward);
|
|
mRewardCash->Clear();
|
|
mRewardCash->AppendText(mStr);
|
|
mRewardCash->Enable();
|
|
mStr.clear();
|
|
|
|
mStr.Printf("%i", mTask.xpreward);
|
|
mRewardXP->Clear();
|
|
mRewardXP->AppendText(mStr);
|
|
mRewardXP->Enable();
|
|
mStr.clear();
|
|
|
|
mRewardMethod->Select(mTask.rewardmethod);
|
|
mRewardMethod->Enable();
|
|
ShowRewardChange(mTask.rewardmethod, mTask.rewardid);
|
|
|
|
mStartZone->Enable();
|
|
SetZoneSelectionById(mTask.startzone);
|
|
|
|
mTaskRepeatable->Enable();
|
|
mTaskRepeatable->SetValue(mTask.repeatable);
|
|
|
|
ClearActivities();
|
|
ActivitiesSelectionList->Enable();
|
|
PopulateActivities();
|
|
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();
|
|
mActGoalID->Clear();
|
|
mActGoalID->Disable();
|
|
mActGoalCount->Clear();
|
|
mActGoalCount->Disable();
|
|
|
|
mActMethod->Select(2);
|
|
mActMethod->Disable();
|
|
|
|
ShowRewardItems->Enable();
|
|
RefreshItems->Enable();
|
|
}
|
|
|
|
void MainFrame::ContextClick(wxContextMenuEvent& event)
|
|
{
|
|
mErrorLog->Log(eqEmuLogBoth, "Context Menu Requested");
|
|
if(event.GetPosition() == wxDefaultPosition)
|
|
{
|
|
mErrorLog->Log(eqEmuLogBoth, "Context Menu Triggered From Keyboard.");
|
|
}
|
|
else{
|
|
wxPoint p = event.GetPosition();
|
|
mErrorLog->Log(eqEmuLogBoth, "Context Menu Triggered At (%d,%d)", p.x, p.y);
|
|
wxPoint stcp = ScreenToClient(p);
|
|
mErrorLog->Log(eqEmuLogBoth, "Context Menu Triggered At (%d,%d)(Adjusted for Client)", stcp.x, stcp.y);
|
|
|
|
//big box on the side: holds tasks
|
|
if(stcp.x >= 7 && stcp.x <= 133)
|
|
{
|
|
if(stcp.y >=7 && stcp.y <= 258)
|
|
{
|
|
ContextMenuTaskList();
|
|
}
|
|
}
|
|
|
|
//small box on the 2nd tab: must be on top to work
|
|
if(stcp.x >= 146 && stcp.x <= 243)
|
|
{
|
|
if(stcp.y >=23 && stcp.y <= 529)
|
|
{
|
|
if(MainPanel2->IsShownOnScreen())
|
|
ContextMenuActivityList();
|
|
else if(MainPanel3->IsShownOnScreen())
|
|
ContextMenuGoalList();
|
|
else if(MainPanel4->IsShownOnScreen())
|
|
ContextMenuProximity();
|
|
}
|
|
}
|
|
|
|
if(stcp.x >= 297 && stcp.x <= 442)
|
|
{
|
|
if(stcp.y >= 74 && stcp.y <= 368)
|
|
{
|
|
if(MainPanel3->IsShownOnScreen() && GoalsValuesList->IsEnabled())
|
|
ContextMenuGoalValueList();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void MainFrame::About(wxCommandEvent& event)
|
|
{
|
|
wxAboutDialogInfo info;
|
|
info.SetName(_("Task Master"));
|
|
info.SetVersion(_(TASK_MASTER_VERSION));
|
|
info.SetDescription(_("Task Creation Tool"));
|
|
info.SetWebSite("www.eqemulator.net");
|
|
|
|
wxAboutBox(info);
|
|
} |