author | nemo |
Mon, 14 Nov 2011 22:38:24 -0500 | |
changeset 6383 | c34a8b98d78c |
parent 6382 | 0e76c5cd4250 |
child 6394 | f0a9042e7387 |
permissions | -rw-r--r-- |
4976 | 1 |
(* |
2 |
* Hedgewars, a free turn based strategy game |
|
3 |
* Copyright (c) 2004-2011 Andrey Korotaev <unC0Rr@gmail.com> |
|
4 |
* |
|
5 |
* This program is free software; you can redistribute it and/or modify |
|
6 |
* it under the terms of the GNU General Public License as published by |
|
7 |
* the Free Software Foundation; version 2 of the License |
|
8 |
* |
|
9 |
* This program is distributed in the hope that it will be useful, |
|
10 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
11 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
12 |
* GNU General Public License for more details. |
|
13 |
* |
|
14 |
* You should have received a copy of the GNU General Public License |
|
15 |
* along with this program; if not, write to the Free Software |
|
16 |
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA |
|
17 |
*) |
|
5303
e06bf3954a83
this should fix captions on iOS (and android), though I can't check
Henek
parents:
4976
diff
changeset
|
18 |
|
e06bf3954a83
this should fix captions on iOS (and android), though I can't check
Henek
parents:
4976
diff
changeset
|
19 |
{$INCLUDE "options.inc"} |
4976 | 20 |
|
4393 | 21 |
unit uCaptions; |
22 |
||
23 |
interface |
|
24 |
uses uTypes; |
|
25 |
||
26 |
procedure AddCaption(s: shortstring; Color: Longword; Group: TCapGroup); |
|
27 |
procedure DrawCaptions; |
|
6377
3ce19204b14b
Since I'm storing the text string anyway, might as well recreate captions on resize as well
nemo
parents:
6374
diff
changeset
|
28 |
procedure ReloadCaptions; |
4393 | 29 |
|
30 |
procedure initModule; |
|
31 |
procedure freeModule; |
|
32 |
||
33 |
implementation |
|
4850 | 34 |
uses uTextures, uRenderUtils, uVariables, uRender; |
4393 | 35 |
|
36 |
type TCaptionStr = record |
|
37 |
Tex: PTexture; |
|
38 |
EndTime: LongWord; |
|
6371
c6f73d8e87e2
Skip rerendering the caption if the text is unchanged. Scripts make heavy use of caption, often onGameTick
nemo
parents:
5303
diff
changeset
|
39 |
Text: shortstring; |
6377
3ce19204b14b
Since I'm storing the text string anyway, might as well recreate captions on resize as well
nemo
parents:
6374
diff
changeset
|
40 |
Color: Longword |
4393 | 41 |
end; |
42 |
var |
|
43 |
Captions: array[TCapGroup] of TCaptionStr; |
|
44 |
||
45 |
procedure AddCaption(s: shortstring; Color: Longword; Group: TCapGroup); |
|
46 |
begin |
|
6379 | 47 |
if Captions[Group].Text <> s then |
6371
c6f73d8e87e2
Skip rerendering the caption if the text is unchanged. Scripts make heavy use of caption, often onGameTick
nemo
parents:
5303
diff
changeset
|
48 |
begin |
4393 | 49 |
FreeTexture(Captions[Group].Tex); |
6371
c6f73d8e87e2
Skip rerendering the caption if the text is unchanged. Scripts make heavy use of caption, often onGameTick
nemo
parents:
5303
diff
changeset
|
50 |
Captions[Group].Tex:= nil |
c6f73d8e87e2
Skip rerendering the caption if the text is unchanged. Scripts make heavy use of caption, often onGameTick
nemo
parents:
5303
diff
changeset
|
51 |
end; |
c6f73d8e87e2
Skip rerendering the caption if the text is unchanged. Scripts make heavy use of caption, often onGameTick
nemo
parents:
5303
diff
changeset
|
52 |
|
6374 | 53 |
if Captions[Group].Tex = nil then |
6371
c6f73d8e87e2
Skip rerendering the caption if the text is unchanged. Scripts make heavy use of caption, often onGameTick
nemo
parents:
5303
diff
changeset
|
54 |
begin |
6377
3ce19204b14b
Since I'm storing the text string anyway, might as well recreate captions on resize as well
nemo
parents:
6374
diff
changeset
|
55 |
Captions[Group].Color:= Color; |
6371
c6f73d8e87e2
Skip rerendering the caption if the text is unchanged. Scripts make heavy use of caption, often onGameTick
nemo
parents:
5303
diff
changeset
|
56 |
Captions[Group].Text:= s; |
c6f73d8e87e2
Skip rerendering the caption if the text is unchanged. Scripts make heavy use of caption, often onGameTick
nemo
parents:
5303
diff
changeset
|
57 |
Captions[Group].Tex:= RenderStringTex(s, Color, fntBig) |
c6f73d8e87e2
Skip rerendering the caption if the text is unchanged. Scripts make heavy use of caption, often onGameTick
nemo
parents:
5303
diff
changeset
|
58 |
end; |
4393 | 59 |
|
60 |
case Group of |
|
61 |
capgrpGameState: Captions[Group].EndTime:= RealTicks + 2200 |
|
62 |
else |
|
63 |
Captions[Group].EndTime:= RealTicks + 1400 + LongWord(Captions[Group].Tex^.w) * 3; |
|
64 |
end; |
|
65 |
end; |
|
6382
0e76c5cd4250
move the order of reloading texture to workaround buggy drivers
koda
parents:
6379
diff
changeset
|
66 |
|
6377
3ce19204b14b
Since I'm storing the text string anyway, might as well recreate captions on resize as well
nemo
parents:
6374
diff
changeset
|
67 |
// For uStore texture recreation |
3ce19204b14b
Since I'm storing the text string anyway, might as well recreate captions on resize as well
nemo
parents:
6374
diff
changeset
|
68 |
procedure ReloadCaptions; |
3ce19204b14b
Since I'm storing the text string anyway, might as well recreate captions on resize as well
nemo
parents:
6374
diff
changeset
|
69 |
var Group: TCapGroup; |
3ce19204b14b
Since I'm storing the text string anyway, might as well recreate captions on resize as well
nemo
parents:
6374
diff
changeset
|
70 |
begin |
3ce19204b14b
Since I'm storing the text string anyway, might as well recreate captions on resize as well
nemo
parents:
6374
diff
changeset
|
71 |
for Group:= Low(TCapGroup) to High(TCapGroup) do |
3ce19204b14b
Since I'm storing the text string anyway, might as well recreate captions on resize as well
nemo
parents:
6374
diff
changeset
|
72 |
begin |
6379 | 73 |
FreeTexture(Captions[Group].Tex); |
6383
c34a8b98d78c
increase land tex size to 512, which is the current minimum required just to load a hat. On my system max fps rose from 840 to 890 - about 6% change.
nemo
parents:
6382
diff
changeset
|
74 |
if Captions[Group].Text <> '' then |
c34a8b98d78c
increase land tex size to 512, which is the current minimum required just to load a hat. On my system max fps rose from 840 to 890 - about 6% change.
nemo
parents:
6382
diff
changeset
|
75 |
Captions[Group].Tex:= RenderStringTex(Captions[Group].Text, Captions[Group].Color, fntBig) |
6377
3ce19204b14b
Since I'm storing the text string anyway, might as well recreate captions on resize as well
nemo
parents:
6374
diff
changeset
|
76 |
end |
3ce19204b14b
Since I'm storing the text string anyway, might as well recreate captions on resize as well
nemo
parents:
6374
diff
changeset
|
77 |
end; |
4393 | 78 |
|
79 |
procedure DrawCaptions; |
|
80 |
var |
|
81 |
grp: TCapGroup; |
|
82 |
offset: LongInt; |
|
83 |
begin |
|
4808 | 84 |
{$IFDEF IPHONEOS} |
5303
e06bf3954a83
this should fix captions on iOS (and android), though I can't check
Henek
parents:
4976
diff
changeset
|
85 |
offset:= 48; |
4808 | 86 |
{$ELSE} |
87 |
offset:= 8; |
|
88 |
{$ENDIF} |
|
4393 | 89 |
|
90 |
for grp:= Low(TCapGroup) to High(TCapGroup) do |
|
91 |
with Captions[grp] do |
|
92 |
if Tex <> nil then |
|
6377
3ce19204b14b
Since I'm storing the text string anyway, might as well recreate captions on resize as well
nemo
parents:
6374
diff
changeset
|
93 |
begin |
4393 | 94 |
DrawCentered(0, offset, Tex); |
95 |
inc(offset, Tex^.h + 2); |
|
96 |
if EndTime <= RealTicks then |
|
6377
3ce19204b14b
Since I'm storing the text string anyway, might as well recreate captions on resize as well
nemo
parents:
6374
diff
changeset
|
97 |
begin |
4393 | 98 |
FreeTexture(Tex); |
99 |
Tex:= nil; |
|
6377
3ce19204b14b
Since I'm storing the text string anyway, might as well recreate captions on resize as well
nemo
parents:
6374
diff
changeset
|
100 |
Text:= ''; |
4393 | 101 |
EndTime:= 0 |
6377
3ce19204b14b
Since I'm storing the text string anyway, might as well recreate captions on resize as well
nemo
parents:
6374
diff
changeset
|
102 |
end; |
4393 | 103 |
end; |
104 |
end; |
|
105 |
||
106 |
procedure initModule; |
|
107 |
begin |
|
108 |
FillChar(Captions, sizeof(Captions), 0) |
|
109 |
end; |
|
110 |
||
111 |
procedure freeModule; |
|
6383
c34a8b98d78c
increase land tex size to 512, which is the current minimum required just to load a hat. On my system max fps rose from 840 to 890 - about 6% change.
nemo
parents:
6382
diff
changeset
|
112 |
var group: TCapGroup; |
4393 | 113 |
begin |
4901 | 114 |
for group:= Low(TCapGroup) to High(TCapGroup) do |
6377
3ce19204b14b
Since I'm storing the text string anyway, might as well recreate captions on resize as well
nemo
parents:
6374
diff
changeset
|
115 |
begin |
4901 | 116 |
FreeTexture(Captions[group].Tex); |
6377
3ce19204b14b
Since I'm storing the text string anyway, might as well recreate captions on resize as well
nemo
parents:
6374
diff
changeset
|
117 |
Captions[group].Tex:= nil |
3ce19204b14b
Since I'm storing the text string anyway, might as well recreate captions on resize as well
nemo
parents:
6374
diff
changeset
|
118 |
end |
4393 | 119 |
end; |
120 |
||
121 |
end. |