void LCPBar::setValue(int num, int value, int diff) { std::ostringstream compname; compname << "pbar_text" << (num+1); Paragraph* p = getParagraph(*this, compname.str()); std::ostringstream os; os<<std::fixed; os<<std::setprecision(1); if(num==PTECH) { os<<value/10000.0; } else if(num==PMONEY) { if(abs(value)>=1000000000) os<<value/1000000<<"M"; else if(abs(value)>1000000) os<<value/1000000.0<<"M"; else if(abs(value)>1000) os<<value/1000.0<<"K"; else os<<value; } else os<<value; if( diff != 0 ){ p->setText(os.str()); } os.str(""); os<<"pbar_barview"<<(num+1); float sv=0; switch(num) { case PPOP: sv=pbar_adjust_pop(diff); break; case PTECH: sv=pbar_adjust_tech(diff); break; case PFOOD: sv=pbar_adjust_food(diff);break; case PJOBS: sv=pbar_adjust_jobs(diff);break; case PCOAL: sv=pbar_adjust_coal(diff);break; case PGOODS: sv=pbar_adjust_goods(diff);break; case PORE: sv=pbar_adjust_ore(diff);break; case PSTEEL: sv=pbar_adjust_steel(diff);break; case PMONEY: sv=pbar_adjust_money(diff);break; }; sv/=10.0; if(sv>1.0) sv=1.0; if(sv<-1.0) sv=-1.0; Component *c=findComponent(os.str()+"a"); if(c) { BarView *bv=dynamic_cast<BarView*>(c); if(bv) { bv->setValue(sv); } } c=findComponent(os.str()+"b"); if(c) { BarView *bv=dynamic_cast<BarView*>(c); if(bv) { bv->setValue(sv); } } }
/* static int Pbarorder[] = { Construction::STUFF_FOOD, Construction::STUFF_JOBS, Construction::STUFF_GOODS, Construction::STUFF_COAL, Construction::STUFF_ORE, Construction::STUFF_STEEL, Construction::STUFF_WASTE, Construction::STUFF_KWH, Construction::STUFF_MWH, Construction::STUFF_WATER, }; */ void LCPBar::setValue(int num, int value, int diff) { if ((num > 8) && (pbarGlobalStyle == 0)) { return;} if ((pbarGlobalStyle == 1) && (num > 2) && (num < 9)) { return;} std::ostringstream os; int line_number = num+1; if ( (pbarGlobalStyle == 1) && (num>8)) { line_number -= PBAR_PAGE_SHIFT;} os << "pbar_text" << line_number; Paragraph* p = getParagraph(*this, os.str()); os.str(""); //compname << "pbar_title" << line_number; //Paragraph* pt = getParagraph(*this, compname.str()); if(num==PTECH) { os<<std::fixed; os<<std::setprecision(1); os<<value/10000.0; } else if(num==PMONEY || num==PPOP || num==PPOL) { char s[12]; num_to_ansi (s, sizeof(s), value); os<<s; } else if ((num >= PFOOD) && (num <= PHOUSE)) //percentages { os<<value<<"%"; } else { os<<"default"; } if (p) { p->setText(os.str());} float sv=0; switch(num) { case PPOP: sv = pbar_adjust_pop(diff); break; case PTECH: sv = pbar_adjust_tech(diff); break; case PPOL: sv = value<5000?100*diff/(1+value):value<25000?500*diff/value:5000*diff/value; break; case PMONEY: sv = pbar_adjust_money(diff); break; default: sv = diff; break; }; sv/=10.0; if(sv>1.0) sv=1.0; if(sv<-1.0) sv=-1.0; os.str(""); os<<"pbar_barview"<< line_number; Component *c=findComponent(os.str()+"a"); if(c) { BarView *bv=dynamic_cast<BarView*>(c); if(bv) { bv->setValue(sv); } } c=findComponent(os.str()+"b"); if(c) { BarView *bv=dynamic_cast<BarView*>(c); if(bv) { bv->setValue(sv); } } }