diff -r 95e27e12d0e9 -r 883b979697e4 hedgewars/uCaptions.pas --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hedgewars/uCaptions.pas Sun Nov 21 16:53:31 2010 +0300 @@ -0,0 +1,75 @@ +unit uCaptions; + +interface +uses uTypes; + +procedure AddCaption(s: shortstring; Color: Longword; Group: TCapGroup); +procedure DrawCaptions; + +procedure initModule; +procedure freeModule; + +implementation +uses uTextures, uRenderUtils, uVariables, uRender, uConsts; + +type TCaptionStr = record + Tex: PTexture; + EndTime: LongWord; + end; +var + Captions: array[TCapGroup] of TCaptionStr; + +procedure AddCaption(s: shortstring; Color: Longword; Group: TCapGroup); +begin + if Captions[Group].Tex <> nil then + FreeTexture(Captions[Group].Tex); + Captions[Group].Tex:= nil; + + Captions[Group].Tex:= RenderStringTex(s, Color, fntBig); + + case Group of + capgrpGameState: Captions[Group].EndTime:= RealTicks + 2200 + else + Captions[Group].EndTime:= RealTicks + 1400 + LongWord(Captions[Group].Tex^.w) * 3; + end; +end; + +procedure DrawCaptions; +var + grp: TCapGroup; + offset: LongInt; +begin + {$IFDEF IPHONEOS} + offset:= 40; + {$ELSE} + if ((TrainingFlags and tfTimeTrial) <> 0) and (TimeTrialStartTime > 0) then + offset:= 48 + else + offset:= 8; + {$ENDIF} + + for grp:= Low(TCapGroup) to High(TCapGroup) do + with Captions[grp] do + if Tex <> nil then + begin + DrawCentered(0, offset, Tex); + inc(offset, Tex^.h + 2); + if EndTime <= RealTicks then + begin + FreeTexture(Tex); + Tex:= nil; + EndTime:= 0 + end; + end; +end; + +procedure initModule; +begin + FillChar(Captions, sizeof(Captions), 0) +end; + +procedure freeModule; +begin +end; + +end.