hedgewars/uCaptions.pas
changeset 4393 883b979697e4
child 4808 7c3e5b52344a
--- /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.