void ExperienceWindow::viewRatePerMinute() { m_ratio = 1; updateAverage(); m_exp_rate_menu->setItemChecked(m_exp_rate_menu->idAt(0), true); m_exp_rate_menu->setItemChecked(m_exp_rate_menu->idAt(1), false); }
void ExperienceWindow::view60Minutes() { m_timeframe = 60; updateAverage(); m_view_menu->setItemChecked(m_view_menu->idAt(0), false); m_view_menu->setItemChecked(m_view_menu->idAt(1), false); m_view_menu->setItemChecked(m_view_menu->idAt(2), false); m_view_menu->setItemChecked(m_view_menu->idAt(3), true); }
int actUpdatingAvg(ALEInterface& ale, RAMFeatures *ram, BPROFeatures *features, int nextAction, vector<vector<vector<float> > > &w, Parameters param, int totalNumFrames, int gameId, vector<bool> &F, vector<bool> &Fprev){ int reward = 0; //If the selected action was one of the primitive actions if(nextAction < NUM_ACTIONS){ for(int i = 0; i < FRAME_SKIP && totalNumFrames + ale.getEpisodeFrameNumber() < MAX_NUM_FRAMES; i++){ reward += ale.act((Action) nextAction); Fprev.swap(F); F.clear(); ram->getCompleteFeatureVector(ale.getRAM(), F); F.pop_back(); updateAverage(Fprev, F, ale.getEpisodeFrameNumber(), param, gameId); } } //If the selected action was one of the options else{ int currentAction; vector<int> Fbpro; //Set of features active vector<float> Q(NUM_ACTIONS, 0.0); //Q(a) entries int option = nextAction - NUM_ACTIONS; while(rand()%1000 > 1000 * PROB_TERMINATION && !ale.game_over() && totalNumFrames + ale.getEpisodeFrameNumber() < MAX_NUM_FRAMES){ //Get state and features active on that state: Fbpro.clear(); features->getActiveFeaturesIndices(ale.getScreen(), Fbpro); updateQValues(Fbpro, Q, w, option); //Update Q-values for each possible action currentAction = epsilonGreedy(Q); //Take action, observe reward and next state: reward += ale.act((Action) currentAction); Fprev.swap(F); F.clear(); ram->getCompleteFeatureVector(ale.getRAM(), F); F.pop_back(); updateAverage(Fprev, F, ale.getEpisodeFrameNumber(), param, gameId); } } return reward; }
void addValue(INTYPE data) { if( xSemaphoreTake(filterAccess, FILTER_ACCESS_TIMEOUT) ) { /* Push Value into FIFO and update Average */ updateAverage(data); xSemaphoreGive(filterAccess); } else { printf("Semaphore not available for writing to filter\n"); } }
void BasicGesture::update() { if(!colours[0]) return; switch(strictness){ case GESTURE_AVERAGE: updateAverage(); break; case GESTURE_LIBERAL: updateLiberal(); break; default: updateStrict(); break; } lastAppearance[0]=colours[0]->getPosition(); }
void ExperienceWindow::addExpRecord(const QString &mob_name, int mob_level, long xp_gained, QString zone_name ) { ExperienceRecord *xp = new ExperienceRecord(mob_name, mob_level, xp_gained, time(0), zone_name, m_player->classVal(), m_player->level(), m_zoneMgr->zoneExpMultiplier(), m_group->totalLevels(), m_group->groupBonus()); #ifdef DEBUGEXP resize( sizeHint() ); qDebug("ExperienceWindow::addExpRecord() '%s', lvl %d, exp %d", mob_name.ascii(), mob_level, xp_gained); #endif if (m_log_exp) logexp(xp_gained, mob_level); m_exp_list.append( xp ); // convert everything to string representations for the list view QString s_mob_name = mob_name; QString s_mob_level; s_mob_level.setNum(mob_level); QString s_xp_gained; s_xp_gained.setNum(xp_gained); QString s_xp_value; if (m_calcZEM) { calculateZEM(xp_gained, mob_level); m_calcZEM = 0; m_view_menu->setItemChecked(m_view_menu->idAt(10), false); } s_xp_value.setNum(xp->getExpValue()); QString s_xp_valueZEM; switch (m_ZEMviewtype) { case 1 : s_xp_valueZEM.setNum(m_zoneMgr->zoneExpMultiplier()); break; case 2 : s_xp_valueZEM.setNum(((float)(m_zoneMgr->zoneExpMultiplier()-0.75)/0.75)*100); break; default: s_xp_valueZEM.setNum(xp->getExpValueZEM()); break; } QString s_xp_valuep; s_xp_valuep.setNum(xp->getExpValuep()); QString s_xp_valueg; s_xp_valueg.setNum(xp->getExpValueg()); char s_time[64]; time_t timev = xp->getTime(); strftime(s_time, 64, "%m/%d %H:%M:%S", localtime( &timev )); /* Update suggested by Shag */ QListViewItem *new_exp_entry = new QListViewItem( m_exp_listview, s_time, s_mob_name, s_mob_level, s_xp_value, s_xp_valueZEM, s_xp_valuep, s_xp_valueg, s_xp_gained ); m_exp_listview->insertItem( new_exp_entry ); m_exp_listview->setSelected( new_exp_entry, TRUE ); m_exp_listview->ensureItemVisible( new_exp_entry ); // Initial work on new logging mechanism with more data FILE* newlogfp = NULL; // open the file for append newlogfp = fopen(m_newExpLogFile, "a"); if (newlogfp != NULL) { // append a new record entry fprintf(newlogfp, "0\t%s\t%s\t%d\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%d\t%d\t%d", s_time, (const char*)s_mob_name, mob_level, (const char*)s_xp_value, (const char*)s_xp_valueZEM, (const char*)s_xp_valuep, (const char*)s_xp_valueg, (const char*)s_xp_gained, (const char*)m_player->name(), (const char*)m_player->lastName(), m_player->level(), m_player->classVal(), m_group->groupSize()); const Spawn* spawn; // continue with info for group members for (int i=0; i < MAX_GROUP_MEMBERS; i++) { spawn = m_group->memberBySlot(i); if (spawn) fprintf(newlogfp, "\t%d", spawn->level()); } // finish the record with a line fprintf(newlogfp, "\n"); // close the file (so multiple ShowEQ instances can be up at once) fclose(newlogfp); } // and update the average display updateAverage(); }
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(); }
inline void AnalysisBaseTemplate< ResultType >::performMeasurement() { ResultType res = computeRaw(); nMeasurements++; updateAverage(res); }