wxString AmeCtrlJobList::OnGetItemText(long item, long column) const{ if(column==0) return wxString::Format(_T("%d"), item); if(item>=(long)wxGetApp().m_jl->count()) return _T("ERR");//TODO lock? AmeJob* j = wxGetApp().m_jl->get(item); AdbFile *f = j->getAdbFile(); switch(column){ //case 0: return wxString::Format(_T("%d"), j->getID()); case 1: return j->getAbsolutePath(); case 2: return j->getStatusText(); case 3: if(f) return f->m_anime->ann; break; case 4: if(f) return f->m_episode->epn; break; case 5: if(f && f->m_group) return f->m_group->grp; break; case 6: if(f) return SPD(f->m_lid); break; case 7: if(f) return f->toMds(); break; } return wxT("N/A"); }
/** * Refresh the view */ void TViewBoard::Refresh() { int x, y, i, pos; char s[256]; char tmp[200]; Int2D v[4]; double fBestLapSpeed = 0.0; int iBestLapCar = 0, iFirstCarShown, // first car shown on the board iLastCarShown; // last car shown on the board // leader board x = 1; y = BOARD_Y; // set iFirstCarShown to see the follow car and min. (iShowCarsBehind) cars behind the car on ViewBoard iFirstCarShown = race_data.m_aPosOfCar[m_iFollowCar]-(iMaxCarsShown-m_iShowCarsBehind-1); // iFirstCarShown stays same if viewing last (iShowCarsBehind+1) cars, to avoid empty lines when enough cars available if(iFirstCarShown > args.m_iNumCar-iMaxCarsShown) iFirstCarShown = args.m_iNumCar-iMaxCarsShown; // iFirstCarShown should not be less then 0 if(iFirstCarShown < 0) iFirstCarShown = 0; iLastCarShown = min(iFirstCarShown+iMaxCarsShown-1,args.m_iNumCar-1); for( i=iFirstCarShown ; i<=iLastCarShown; i++ ) { pos = race_data.m_aCarInPos[i]; int color; if( race_data.cars[pos]->out == 1 ) color = oMAGENTA; else if( race_data.cars[pos]->out == 2 ) color = oGREEN; else if( race_data.cars[pos]->offroad ) color = oWHITE; else if( pos == m_iFollowCar ) color = oYELLOW; else if (race_data.cars[pos]->collision_draw) color = oRED; else color = oBLACK; if( pos==m_iFollowCar ) strcpy(s, ">"); else strcpy(s, " "); sprintf(tmp, " %-9s", drivers[pos]->getName() ); strcat( s, tmp ); // Time if (race_data.cars[pos]->out == 1) { sprintf( tmp, " out "); } else if (race_data.cars[pos]->out == 2) { sprintf( tmp, " pit "); } else if (i == 0) { format_time(race_data.cars[pos]->last_crossing, tmp); } else if (race_data.cars[pos]->laps < (race_data.cars[race_data.m_aCarInPos[0]]->laps - 1)) { sprintf(tmp, "%2ld lap(s) ", race_data.cars[race_data.m_aCarInPos[0]]->laps - 1 - race_data.cars[pos]->laps); } else if (race_data.cars[pos]->laps == race_data.cars[race_data.m_aCarInPos[0]]->laps) { format_time(race_data.cars[pos]->last_crossing - race_data.cars[race_data.m_aCarInPos[0]]->last_crossing, tmp); } else { format_time(race_data.cars[pos]->last_crossing - race_data.cars[race_data.m_aCarInPos[0]]->last_crossing + race_data.cars[race_data.m_aCarInPos[0]]->lap_time, tmp); } strcat(s, tmp); if(m_bShowMoreInfos) { sprintf( tmp, "%4d%7.2f%7.2f%4ld+%03ld%4ld%7.2f%7.2f%7.2f%7.2f%3d%4ld%7.2f%6lu%7.2f%5.2f%4ld%7.2f" , i+1 , race_data.cars[pos]->Behind_next , race_data.cars[pos]->Ahead_next , race_data.cars[pos]->Laps , args.m_iNumLap-race_data.cars[pos]->Laps , race_data.cars[pos]->Laps_lead , SPD(race_data.cars[pos]->xdot, race_data.cars[pos]->ydot) * MPH_FPS , race_data.cars[pos]->speed_avg * MPH_FPS , race_data.cars[pos]->bestlap_speed * MPH_FPS , race_data.cars[pos]->lastlap_speed * MPH_FPS , race_data.cars[pos]->Pit_stops , race_data.cars[pos]->Last_pit_visit , race_data.cars[pos]->Total_pit_time , race_data.cars[pos]->damage , race_data.cars[pos]->fuel , race_data.cars[pos]->fuel_mileage , race_data.cars[pos]->projected_laps , race_data.cars[pos]->RobotTime / race_data.m_fElapsedTime ); } else { sprintf( tmp, "%4d%7.2f%7.2f%4ld+%03ld%7.2f%7.2f%7.2f%3d%8lu%8.2f%7.2f" , i+1 , race_data.cars[pos]->Behind_next , race_data.cars[pos]->Ahead_next , race_data.cars[pos]->Laps , args.m_iNumLap-race_data.cars[pos]->Laps , SPD(race_data.cars[pos]->xdot, race_data.cars[pos]->ydot) * MPH_FPS , race_data.cars[pos]->bestlap_speed * MPH_FPS , race_data.cars[pos]->lastlap_speed * MPH_FPS , race_data.cars[pos]->Pit_stops , race_data.cars[pos]->damage , race_data.cars[pos]->fuel , race_data.cars[pos]->RobotTime / race_data.m_fElapsedTime ); } strcat(s, tmp); DrawStringOpaque(s, x, y, color ); v[0].x = x+20; v[0].y = y+2; v[1].x = x+20; v[1].y = y+6; v[2].x = x+10; v[2].y = y+6; v[3].x = x+10; v[3].y = y+2; DrawPolyTexture( v, 4, -2.0, 0.0, &(g_ViewManager->m_aBitmapCar[pos]) ); y += 8; if( fBestLapSpeed<=race_data.cars[pos]->bestlap_speed) { iBestLapCar = pos; fBestLapSpeed = race_data.cars[pos]->bestlap_speed; } } // fastest lap + BestView mode x=1; y=m_SizeY-8; char *mode[] = { "manual Update","any Overtaking", "for Position", "Nobody" }; sprintf( s, "%10s %6.2f mi/h %-18s", drivers[iBestLapCar]->getName(), race_data.cars[iBestLapCar]->bestlap_speed * MPH_FPS, mode[g_ViewManager->m_iFollowMode] ); DrawStringOpaque(s, x+190, y ); // fps sprintf( s, "%7.2f fps", g_ViewManager->m_fFps ); DrawStringOpaque( s, m_SizeX-88, y ); }