QWidget* CombatWindow::initOffenseWidget() { QWidget *pWidget = new QWidget(m_tab); m_layout_offense = new QVBoxLayout(pWidget); QGroupBox *listGBox = new QVGroupBox(pWidget); m_layout_offense->addWidget(listGBox); m_listview_offense = new SEQListView(preferenceName(), listGBox); m_listview_offense->addColumn("Type"); m_listview_offense->setColumnAlignment(0, Qt::AlignRight); m_listview_offense->addColumn("Hit"); m_listview_offense->setColumnAlignment(1, Qt::AlignRight); m_listview_offense->addColumn("Miss"); m_listview_offense->setColumnAlignment(2, Qt::AlignRight); m_listview_offense->addColumn("Ratio"); m_listview_offense->setColumnAlignment(3, Qt::AlignRight); m_listview_offense->addColumn("Avg"); m_listview_offense->setColumnAlignment(4, Qt::AlignRight); m_listview_offense->addColumn("Min"); m_listview_offense->setColumnAlignment(5, Qt::AlignRight); m_listview_offense->addColumn("Max"); m_listview_offense->setColumnAlignment(6, Qt::AlignRight); m_listview_offense->addColumn("Total"); m_listview_offense->setColumnAlignment(7, Qt::AlignRight); m_listview_offense->restoreColumns(); m_listview_offense->setMinimumSize(m_listview_offense->sizeHint().width(), 200); QGroupBox *summaryGBox = new QVGroupBox("Summary", pWidget); m_layout_offense->addWidget(summaryGBox); QGrid *summaryGrid = new QGrid(4, summaryGBox); new QLabel("Total Damage:", summaryGrid); m_label_offense_totaldamage = new QLabel(summaryGrid); new QLabel("Avg Melee:", summaryGrid); m_label_offense_avgmelee = new QLabel(summaryGrid); new QLabel("% from Special:", summaryGrid); m_label_offense_percentspecial = new QLabel(summaryGrid); new QLabel("Avg Special:", summaryGrid); m_label_offense_avgspecial = new QLabel(summaryGrid); new QLabel("% from NonMelee:", summaryGrid); m_label_offense_percentnonmelee = new QLabel(summaryGrid); new QLabel("Avg NonMelee:", summaryGrid); m_label_offense_avgnonmelee = new QLabel(summaryGrid); ((QGridLayout *)summaryGrid->layout())->setColStretch(1, 1); ((QGridLayout *)summaryGrid->layout())->setColStretch(3, 1); summaryGrid->layout()->setSpacing(5); return pWidget; }
QWidget* CombatWindow::initMobWidget() { QWidget *pWidget = new QWidget(m_tab); m_layout_mob = new QVBoxLayout(pWidget); QGroupBox *listGBox = new QVGroupBox(pWidget); m_layout_mob->addWidget(listGBox); m_listview_mob = new SEQListView(preferenceName(), listGBox); m_listview_mob->addColumn("Time"); m_listview_mob->setColumnAlignment(0, Qt::AlignRight); m_listview_mob->addColumn("Name"); m_listview_mob->setColumnAlignment(1, Qt::AlignRight); m_listview_mob->addColumn("ID"); m_listview_mob->setColumnAlignment(2, Qt::AlignRight); m_listview_mob->addColumn("Duration"); m_listview_mob->setColumnAlignment(3, Qt::AlignRight); m_listview_mob->addColumn("Damage Given"); m_listview_mob->setColumnAlignment(4, Qt::AlignRight); m_listview_mob->addColumn("DPS"); m_listview_mob->setColumnAlignment(5, Qt::AlignRight); m_listview_mob->addColumn("Damage Taken"); m_listview_mob->setColumnAlignment(6, Qt::AlignRight); m_listview_mob->addColumn("MOB DPS"); m_listview_mob->setColumnAlignment(7, Qt::AlignRight); m_listview_mob->restoreColumns(); m_listview_mob->setMinimumSize(m_listview_mob->sizeHint().width(), 200); QGroupBox *summaryGBox = new QVGroupBox("Summary", pWidget); m_layout_mob->addWidget(summaryGBox); QGrid *summaryGrid = new QGrid(4, summaryGBox); new QLabel("Total Mobs", summaryGrid); m_label_mob_totalmobs = new QLabel(summaryGrid); new QLabel("Avg DPS:", summaryGrid); m_label_mob_avgdps = new QLabel(summaryGrid); new QLabel("Current DPS:", summaryGrid); m_label_mob_currentdps = new QLabel(summaryGrid); new QLabel("Last DPS:", summaryGrid); m_label_mob_lastdps = new QLabel(summaryGrid); ((QGridLayout *)summaryGrid->layout())->setColStretch(1, 1); ((QGridLayout *)summaryGrid->layout())->setColStretch(3, 1); summaryGrid->layout()->setSpacing(5); return pWidget; }
ExperienceWindow::ExperienceWindow(const DataLocationMgr* dataLocMgr, Player* player, GroupMgr* groupMgr, ZoneMgr* zoneMgr, QWidget* parent, const char* name) : SEQWindow("Experience", "ShowEQ - Experience", parent, name), m_dataLocMgr(dataLocMgr), m_player(player), m_group(groupMgr), m_zoneMgr(zoneMgr) { /* Hopefully this is only called once to set up the window, so this is a good place to initialize some things which otherwise won't be. */ m_ratio = 1; m_timeframe = 0; m_calcZEM=0; m_ZEMviewtype = 0; m_view_menu = new QPopupMenu( this ); m_view_menu->insertItem( "&All Mobs", this, SLOT(viewAll()) ); m_view_menu->insertItem( "Previous &15 Minutes", this, SLOT(view15Minutes()) ); m_view_menu->insertItem( "Previous &30 Minutes", this, SLOT(view30Minutes()) ); m_view_menu->insertItem( "Previous &60 Minutes", this, SLOT(view60Minutes()) ); m_view_menu->setItemChecked( m_view_menu->idAt(0), true ); m_view_menu->insertSeparator(); m_exp_rate_menu = new QPopupMenu( this ); m_exp_rate_menu->insertItem( "per &minute", this, SLOT(viewRatePerMinute()) ); m_exp_rate_menu->insertItem( "per &hour", this, SLOT(viewRatePerHour()) ); m_exp_rate_menu->setItemChecked( m_exp_rate_menu->idAt(0), true ); m_view_menu->insertItem( "Experience &Rate", m_exp_rate_menu ); m_view_menu->insertSeparator(); m_view_menu->insertItem( "Clear Kills", this, SLOT(viewClear()) ); m_view_menu->insertSeparator(); m_ZEM_menu = new QPopupMenu( this ); m_ZEM_menu->insertItem( "Calculated Value", this, SLOT(viewZEMcalculated()) ); m_ZEM_menu->insertItem( "Raw Value", this, SLOT(viewZEMraw()) ); m_ZEM_menu->insertItem( "Percent Bonus", this, SLOT(viewZEMpercent()) ); m_ZEM_menu->setItemChecked( m_ZEM_menu->idAt(0), true ); m_view_menu->insertItem( "ZEM View Options", m_ZEM_menu ); m_view_menu->insertItem( "Calculate ZEM on next kill", this, SLOT(calcZEMNextKill()) ); m_layout = new QVBoxLayout(boxLayout()); m_menu_bar = new QMenuBar( this ); m_menu_bar->insertItem( "&View", m_view_menu ); //m_layout->addSpacing( m_menu_bar->height() + 5 ); m_layout->addWidget(m_menu_bar); QGroupBox *listGBox = new QVGroupBox( "Experience Log", this ); m_layout->addWidget( listGBox ); m_exp_listview = new SEQListView(preferenceName(), listGBox); m_exp_listview->addColumn("Time"); m_exp_listview->addColumn("Mob"); m_exp_listview->addColumn("Level"); m_exp_listview->addColumn("Base Exp"); m_exp_listview->addColumn("ZEM total"); m_exp_listview->addColumn("Class total"); m_exp_listview->addColumn("Group total"); m_exp_listview->addColumn("Experience Gained"); m_exp_listview->restoreColumns(); m_exp_listview->setMinimumSize( m_exp_listview->sizeHint().width(), 200 ); QGroupBox *statsGBox = new QVGroupBox( "Statistics", this ); m_layout->addWidget( statsGBox ); QGrid *statsGrid = new QGrid( 4, statsGBox ); new QLabel( "Total Experience Received:", statsGrid ); m_total_received = new QLabel( statsGrid ); new QLabel( "Play Time:", statsGrid ); m_play_time = new QLabel( statsGrid ); new QLabel( "Total Mobs Killed:", statsGrid ); m_mob_count = new QLabel( statsGrid ); m_experience_rate_label = new QLabel( "Experience Rate (per minute):", statsGrid ); m_experience_rate = new QLabel( statsGrid ); new QLabel( "Average Experience per Mob:", statsGrid ); m_average_per_mob = new QLabel( statsGrid ); new QLabel( "Estimated Kills To Level:", statsGrid ); m_kills_to_level = new QLabel( statsGrid ); new QLabel( "Experience Remaining:", statsGrid ); m_experience_remaining = new QLabel( statsGrid ); new QLabel( "Estimated Time To Level:", statsGrid ); m_time_to_level = new QLabel( statsGrid ); // ewww, why can't we just get it from QGrid? :( ((QGridLayout *)statsGrid->layout())->setColStretch( 1, 1 ); ((QGridLayout *)statsGrid->layout())->setColStretch( 3, 1 ); statsGrid->layout()->setSpacing( 5 ); updateAverage( ); // timer to update the average xp QTimer *timer = new QTimer( this ); connect( timer, SIGNAL(timeout()), SLOT(updateAverage())); timer->start(15*1000); // calculate every 15 seconds QFileInfo fileInfo = m_dataLocMgr->findWriteFile("logs", "exp.log"); m_log = fopen(fileInfo.absFilePath(), "a"); if (m_log == 0) { m_log_exp = 0; seqWarn("Error opening exp.log, no exp will be logged this session"); } fileInfo = m_dataLocMgr->findWriteFile("logs", "newexp.log"); m_newExpLogFile = fileInfo.absFilePath(); }
QWidget* CombatWindow::initDefenseWidget() { QWidget *pWidget = new QWidget(m_tab); m_layout_defense = new QVBoxLayout(pWidget); QGroupBox *avoidanceGBox = new QVGroupBox("Avoidance", pWidget); m_layout_defense->addWidget(avoidanceGBox); QGrid *avoidanceGrid = new QGrid(6, avoidanceGBox); new QLabel("Misses:", avoidanceGrid); m_label_defense_avoid_misses = new QLabel(avoidanceGrid); new QLabel("Blocks:", avoidanceGrid); m_label_defense_avoid_block = new QLabel(avoidanceGrid); new QLabel("Parries:", avoidanceGrid); m_label_defense_avoid_parry = new QLabel(avoidanceGrid); new QLabel("Ripostes:", avoidanceGrid); m_label_defense_avoid_riposte = new QLabel(avoidanceGrid); new QLabel("Dodges", avoidanceGrid); m_label_defense_avoid_dodge = new QLabel(avoidanceGrid); new QLabel("Total:", avoidanceGrid); m_label_defense_avoid_total = new QLabel(avoidanceGrid); ((QGridLayout *)avoidanceGrid->layout())->setColStretch(1, 1); ((QGridLayout *)avoidanceGrid->layout())->setColStretch(3, 1); ((QGridLayout *)avoidanceGrid->layout())->setColStretch(5, 1); avoidanceGrid->layout()->setSpacing(5); QGroupBox *mitigationGBox = new QVGroupBox("Mitigation", pWidget); m_layout_defense->addWidget(mitigationGBox); QGrid *mitigationGrid = new QGrid(6, mitigationGBox); new QLabel("Avg. Hit:", mitigationGrid); m_label_defense_mitigate_avghit = new QLabel(mitigationGrid); new QLabel("Min:", mitigationGrid); m_label_defense_mitigate_minhit = new QLabel(mitigationGrid); new QLabel("Max:", mitigationGrid); m_label_defense_mitigate_maxhit = new QLabel(mitigationGrid); ((QGridLayout *)mitigationGrid->layout())->setColStretch(1, 1); ((QGridLayout *)mitigationGrid->layout())->setColStretch(3, 1); ((QGridLayout *)mitigationGrid->layout())->setColStretch(5, 1); mitigationGrid->layout()->setSpacing(5); QGroupBox *summaryGBox = new QVGroupBox("Summary", pWidget); m_layout_defense->addWidget(summaryGBox); QGrid *summaryGrid = new QGrid(6, summaryGBox); new QLabel("Mob Attacks:", summaryGrid); m_label_defense_summary_mobattacks = new QLabel(summaryGrid); new QLabel("% Avoided:", summaryGrid); m_label_defense_summary_percentavoided = new QLabel(summaryGrid); new QLabel("Total Damage:", summaryGrid); m_label_defense_summary_totaldamage = new QLabel(summaryGrid); ((QGridLayout *)summaryGrid->layout())->setColStretch(1, 1); ((QGridLayout *)summaryGrid->layout())->setColStretch(3, 1); ((QGridLayout *)summaryGrid->layout())->setColStretch(5, 1); summaryGrid->layout()->setSpacing(5); return pWidget; }