35 void fxMessages::add(
double dSizeMultiplier, laColor rgb,
char* str, ...)
44 vsnprintf(text, 255, str, ap);
49 _laFxMessage msg(text, rgb, dSizeMultiplier);
51 if( !_ttDelay.isElapsed() )
59 std::vector<_laFxMessage>::iterator i;
61 for(i=_vMessages.begin(); i!=_vMessages.end(); i++)
63 double prog = (i->dPassedTime)/_dDispalcementTime;
65 if( (prog < 0.5) && (!strcmp(i->str, text)))
76 strcpy(i->str, msg.str);
77 i->dPassedTime = msg.dPassedTime;
78 i->rgbColor = msg.rgbColor;
79 i->dSizeMultiplier = msg.dSizeMultiplier;
80 i->bDelay = msg.bDelay;
87 _vMessages.push_back( msg );
93 void fxMessages::animate(laTimer &t)
95 M_BOOL bOneUnblocked = M_FALSE;
98 std::vector<_laFxMessage>::iterator i;
99 for(i=_vMessages.begin(); i!=_vMessages.end(); i++)
101 if( (i->bDelay) && (i->dPassedTime >= _ttDelay.getElapseTime()) )
103 bOneUnblocked = M_TRUE;
111 for(i=_vMessages.begin(); i!=_vMessages.end(); i++)
114 if(bOneUnblocked && (i->bDelay)) i->dPassedTime = 0;
115 else i->dPassedTime += t.delta();
123 void fxMessages::draw(
laRenderer *r, laPoint3 pos)
125 PROFILE_REN(fxMessages_draw);
128 if(!_pFont) _pFont = r->
font(
"plain");
129 _pFont->ctlAlignH(_nAlign);
135 std::vector<_laFxMessage>::iterator i;
136 for(i=_vMessages.begin(); i!=_vMessages.end(); i++)
139 double prog = (i->dPassedTime)/_dDispalcementTime;
140 if( (prog > 1) || (i->bDelay) )
continue;
142 laPoint3 pt = pos - laPoint3(0, prog*_dDisplacementDY, prog*_dDisplacementDY);
145 r->styleSet( laColor(i->rgbColor.r(), i->rgbColor.g(), i->rgbColor.b(), (1-prog)*255) );
146 _pFont->ctlSize(_dFontSize*(i->dSizeMultiplier));
148 if(i->nx > 1) _pFont->draw(pt,
"%s (x%d)", i->str, i->nx);
149 else _pFont->draw(pt,
"%s", i->str);
laFont * font(char *strName)
Get a font renderer.
virtual void modeDepthBuffer(M_BOOL bOn)=0
Enable/disable depth buffer.
Virtual interface for the Engine graphics renderer.