author | translators |
Sat, 06 Dec 2008 18:44:49 +0000 | |
changeset 10409 | a61956ad5da2 |
parent 9898 | 75347c78b276 |
permissions | -rw-r--r-- |
2186 | 1 |
/* $Id$ */ |
2 |
||
9111
48ce04029fe4
(svn r12971) -Documentation: add @file in files that missed them and add something more than whitespace as description of files that don't have a description.
rubidium
parents:
9005
diff
changeset
|
3 |
/** @file texteff.cpp Handling of text effects. */ |
6422
6679df1c05ba
(svn r9558) -Documentation: doxygen and comment changes: 'T' now. Almost done
belugas
parents:
6374
diff
changeset
|
4 |
|
0 | 5 |
#include "stdafx.h" |
1891
862800791170
(svn r2397) - CodeChange: rename all "ttd" files to "openttd" files.
Darkvater
parents:
1881
diff
changeset
|
6 |
#include "openttd.h" |
6453
226bcddeba32
(svn r9609) -Codechange: Move some function prototypes out of functions.h and into landscape.h, and add a few where they didn't exist.
maedhros
parents:
6422
diff
changeset
|
7 |
#include "landscape.h" |
8225
cd84a95b6630
(svn r11788) -Fix (11787): makedepend doesn't mark delete files as changed...
rubidium
parents:
8214
diff
changeset
|
8 |
#include "gfx_func.h" |
2153
ecfc674410b4
(svn r2663) Include variables.h only in these files which need it, not globally via openttd.h
tron
parents:
2062
diff
changeset
|
9 |
#include "variables.h" |
6998
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
10 |
#include "texteff.hpp" |
9898
75347c78b276
(svn r14047) -Codechange: move chatmessage handling to the network directory as that's the only case chat messages are used. Furthermore remove any trace of chatmessages when compiling without network support.
rubidium
parents:
9607
diff
changeset
|
11 |
#include "core/bitmath_func.hpp" |
7849
0a1c0af2c96c
(svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
7749
diff
changeset
|
12 |
#include "transparency.h" |
8114
dd6d21dc99c1
(svn r11675) -Codechange: split the string types from the string functions.
rubidium
parents:
8113
diff
changeset
|
13 |
#include "strings_func.h" |
8130
d2eb7d04f6e1
(svn r11691) -Codechange: move+rename helpers.hpp and only include it when it is really needed.
rubidium
parents:
8121
diff
changeset
|
14 |
#include "core/alloc_func.hpp" |
8131
160939e24ed3
(svn r11692) -Codechange: move some functions from 'functions.h' to a more logical place and remove about 50% of the includes of 'functions.h'
rubidium
parents:
8130
diff
changeset
|
15 |
#include "functions.h" |
8225
cd84a95b6630
(svn r11788) -Fix (11787): makedepend doesn't mark delete files as changed...
rubidium
parents:
8214
diff
changeset
|
16 |
#include "viewport_func.h" |
8270
e7c342f6b14c
(svn r11834) -Codechange: only include settings_type.h if needed.
rubidium
parents:
8264
diff
changeset
|
17 |
#include "settings_type.h" |
0 | 18 |
|
5428
00fab4aeff78
(svn r7632) -Codechange: several small code cleanups of texteff, like moving magic values and defines to an enum and fix coding/documentation style.
rubidium
parents:
5427
diff
changeset
|
19 |
enum { |
9898
75347c78b276
(svn r14047) -Codechange: move chatmessage handling to the network directory as that's the only case chat messages are used. Furthermore remove any trace of chatmessages when compiling without network support.
rubidium
parents:
9607
diff
changeset
|
20 |
INIT_NUM_TEXT_EFFECTS = 20, |
5428
00fab4aeff78
(svn r7632) -Codechange: several small code cleanups of texteff, like moving magic values and defines to an enum and fix coding/documentation style.
rubidium
parents:
5427
diff
changeset
|
21 |
}; |
00fab4aeff78
(svn r7632) -Codechange: several small code cleanups of texteff, like moving magic values and defines to an enum and fix coding/documentation style.
rubidium
parents:
5427
diff
changeset
|
22 |
|
6248
e4a2ed7e5613
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6247
diff
changeset
|
23 |
struct TextEffect { |
0 | 24 |
StringID string_id; |
849
c3407041774f
(svn r1330) Increase size of some vars from int16 to int32 to guard against future overflows
tron
parents:
835
diff
changeset
|
25 |
int32 x; |
c3407041774f
(svn r1330) Increase size of some vars from int16 to int32 to guard against future overflows
tron
parents:
835
diff
changeset
|
26 |
int32 y; |
c3407041774f
(svn r1330) Increase size of some vars from int16 to int32 to guard against future overflows
tron
parents:
835
diff
changeset
|
27 |
int32 right; |
c3407041774f
(svn r1330) Increase size of some vars from int16 to int32 to guard against future overflows
tron
parents:
835
diff
changeset
|
28 |
int32 bottom; |
0 | 29 |
uint16 duration; |
7006
bfa3974da32b
(svn r10262) -Fix (r10258): some places that needed to be changed to uint64 were hidden/forgotten, which caused memory corruptions and that in caused all kinds of assertions to trigger.
rubidium
parents:
6998
diff
changeset
|
30 |
uint64 params_1; |
bfa3974da32b
(svn r10262) -Fix (r10258): some places that needed to be changed to uint64 were hidden/forgotten, which caused memory corruptions and that in caused all kinds of assertions to trigger.
rubidium
parents:
6998
diff
changeset
|
31 |
uint64 params_2; |
6998
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
32 |
TextEffectMode mode; |
6248
e4a2ed7e5613
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6247
diff
changeset
|
33 |
}; |
0 | 34 |
|
7454
e55eea8c05c7
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7170
diff
changeset
|
35 |
/* used for text effects */ |
6998
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
36 |
static TextEffect *_text_effect_list = NULL; |
9898
75347c78b276
(svn r14047) -Codechange: move chatmessage handling to the network directory as that's the only case chat messages are used. Furthermore remove any trace of chatmessages when compiling without network support.
rubidium
parents:
9607
diff
changeset
|
37 |
static uint16 _num_text_effects = INIT_NUM_TEXT_EFFECTS; |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
38 |
|
7545
d44e19c5671e
(svn r11065) -Documentation [FS#1186]: of the dirty marking/repainting subsystem. Patch by Progman.
rubidium
parents:
7535
diff
changeset
|
39 |
/* Text Effects */ |
d44e19c5671e
(svn r11065) -Documentation [FS#1186]: of the dirty marking/repainting subsystem. Patch by Progman.
rubidium
parents:
7535
diff
changeset
|
40 |
/** |
d44e19c5671e
(svn r11065) -Documentation [FS#1186]: of the dirty marking/repainting subsystem. Patch by Progman.
rubidium
parents:
7535
diff
changeset
|
41 |
* Mark the area of the text effect as dirty. |
d44e19c5671e
(svn r11065) -Documentation [FS#1186]: of the dirty marking/repainting subsystem. Patch by Progman.
rubidium
parents:
7535
diff
changeset
|
42 |
* |
d44e19c5671e
(svn r11065) -Documentation [FS#1186]: of the dirty marking/repainting subsystem. Patch by Progman.
rubidium
parents:
7535
diff
changeset
|
43 |
* This function marks the area of a text effect as dirty for repaint. |
d44e19c5671e
(svn r11065) -Documentation [FS#1186]: of the dirty marking/repainting subsystem. Patch by Progman.
rubidium
parents:
7535
diff
changeset
|
44 |
* |
d44e19c5671e
(svn r11065) -Documentation [FS#1186]: of the dirty marking/repainting subsystem. Patch by Progman.
rubidium
parents:
7535
diff
changeset
|
45 |
* @param te The TextEffect to mark the area dirty |
d44e19c5671e
(svn r11065) -Documentation [FS#1186]: of the dirty marking/repainting subsystem. Patch by Progman.
rubidium
parents:
7535
diff
changeset
|
46 |
* @ingroup dirty |
d44e19c5671e
(svn r11065) -Documentation [FS#1186]: of the dirty marking/repainting subsystem. Patch by Progman.
rubidium
parents:
7535
diff
changeset
|
47 |
*/ |
0 | 48 |
static void MarkTextEffectAreaDirty(TextEffect *te) |
49 |
{ |
|
7535
417613ef92fa
(svn r11055) -Fix [FS#1214]: loading indicators would sometimes glitch due to a bounding box that was too small. Patch by frosch.
rubidium
parents:
7454
diff
changeset
|
50 |
/* Width and height of the text effect are doubled, so they are correct in both zoom out levels 1x and 2x. */ |
0 | 51 |
MarkAllViewportsDirty( |
52 |
te->x, |
|
53 |
te->y - 1, |
|
54 |
(te->right - te->x)*2 + te->x + 1, |
|
55 |
(te->bottom - (te->y - 1)) * 2 + (te->y - 1) + 1 |
|
56 |
); |
|
57 |
} |
|
58 |
||
6998
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
59 |
TextEffectID AddTextEffect(StringID msg, int x, int y, uint16 duration, TextEffectMode mode) |
0 | 60 |
{ |
61 |
TextEffect *te; |
|
62 |
int w; |
|
63 |
char buffer[100]; |
|
6998
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
64 |
TextEffectID i; |
0 | 65 |
|
6998
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
66 |
if (_game_mode == GM_MENU) return INVALID_TE_ID; |
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
0
diff
changeset
|
67 |
|
6998
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
68 |
/* Look for a free spot in the text effect array */ |
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
69 |
for (i = 0; i < _num_text_effects; i++) { |
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
70 |
if (_text_effect_list[i].string_id == INVALID_STRING_ID) break; |
0 | 71 |
} |
72 |
||
6998
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
73 |
/* If there is none found, we grow the array */ |
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
74 |
if (i == _num_text_effects) { |
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
75 |
_num_text_effects += 25; |
8037
8aa4ace04383
(svn r11597) -Change: replace all remaining instances of (re|m|c)alloc with (Re|M|C)allocT and add a check for out-of-memory situations to the *allocT functions.
rubidium
parents:
7849
diff
changeset
|
76 |
_text_effect_list = ReallocT<TextEffect>(_text_effect_list, _num_text_effects); |
6998
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
77 |
for (; i < _num_text_effects; i++) _text_effect_list[i].string_id = INVALID_STRING_ID; |
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
78 |
i = _num_text_effects - 1; |
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
79 |
} |
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
80 |
|
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
81 |
te = &_text_effect_list[i]; |
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
82 |
|
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
83 |
/* Start defining this object */ |
0 | 84 |
te->string_id = msg; |
85 |
te->duration = duration; |
|
86 |
te->y = y - 5; |
|
87 |
te->bottom = y + 5; |
|
534
306bc86eb23e
(svn r901) Small step in the process to clean up the DPARAM mess:
tron
parents:
425
diff
changeset
|
88 |
te->params_1 = GetDParam(0); |
306bc86eb23e
(svn r901) Small step in the process to clean up the DPARAM mess:
tron
parents:
425
diff
changeset
|
89 |
te->params_2 = GetDParam(4); |
6998
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
90 |
te->mode = mode; |
0 | 91 |
|
4912
0f51b47cb983
(svn r6884) -Codechange: Add strict bounds checking in string formatting system.
Darkvater
parents:
4609
diff
changeset
|
92 |
GetString(buffer, msg, lastof(buffer)); |
4609
954fe701062f
(svn r6462) -Codechange: Have GetStringWidth() return width as well as the height bounding
Darkvater
parents:
4469
diff
changeset
|
93 |
w = GetStringBoundingBox(buffer).width; |
0 | 94 |
|
95 |
te->x = x - (w >> 1); |
|
96 |
te->right = x + (w >> 1) - 1; |
|
97 |
MarkTextEffectAreaDirty(te); |
|
6998
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
98 |
|
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
99 |
return i; |
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
100 |
} |
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
101 |
|
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
102 |
void UpdateTextEffect(TextEffectID te_id, StringID msg) |
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
103 |
{ |
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
104 |
assert(te_id < _num_text_effects); |
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
105 |
TextEffect *te; |
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
106 |
|
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
107 |
/* Update details */ |
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
108 |
te = &_text_effect_list[te_id]; |
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
109 |
te->string_id = msg; |
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
110 |
te->params_1 = GetDParam(0); |
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
111 |
te->params_2 = GetDParam(4); |
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
112 |
|
7535
417613ef92fa
(svn r11055) -Fix [FS#1214]: loading indicators would sometimes glitch due to a bounding box that was too small. Patch by frosch.
rubidium
parents:
7454
diff
changeset
|
113 |
/* Update width of text effect */ |
417613ef92fa
(svn r11055) -Fix [FS#1214]: loading indicators would sometimes glitch due to a bounding box that was too small. Patch by frosch.
rubidium
parents:
7454
diff
changeset
|
114 |
char buffer[100]; |
417613ef92fa
(svn r11055) -Fix [FS#1214]: loading indicators would sometimes glitch due to a bounding box that was too small. Patch by frosch.
rubidium
parents:
7454
diff
changeset
|
115 |
GetString(buffer, msg, lastof(buffer)); |
417613ef92fa
(svn r11055) -Fix [FS#1214]: loading indicators would sometimes glitch due to a bounding box that was too small. Patch by frosch.
rubidium
parents:
7454
diff
changeset
|
116 |
int w = GetStringBoundingBox(buffer).width; |
417613ef92fa
(svn r11055) -Fix [FS#1214]: loading indicators would sometimes glitch due to a bounding box that was too small. Patch by frosch.
rubidium
parents:
7454
diff
changeset
|
117 |
|
417613ef92fa
(svn r11055) -Fix [FS#1214]: loading indicators would sometimes glitch due to a bounding box that was too small. Patch by frosch.
rubidium
parents:
7454
diff
changeset
|
118 |
/* Only allow to make it broader, so it completely covers the old text. That avoids remnants of the old text. */ |
417613ef92fa
(svn r11055) -Fix [FS#1214]: loading indicators would sometimes glitch due to a bounding box that was too small. Patch by frosch.
rubidium
parents:
7454
diff
changeset
|
119 |
int right_new = te->x + w; |
417613ef92fa
(svn r11055) -Fix [FS#1214]: loading indicators would sometimes glitch due to a bounding box that was too small. Patch by frosch.
rubidium
parents:
7454
diff
changeset
|
120 |
if (te->right < right_new) te->right = right_new; |
417613ef92fa
(svn r11055) -Fix [FS#1214]: loading indicators would sometimes glitch due to a bounding box that was too small. Patch by frosch.
rubidium
parents:
7454
diff
changeset
|
121 |
|
6998
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
122 |
MarkTextEffectAreaDirty(te); |
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
123 |
} |
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
124 |
|
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
125 |
void RemoveTextEffect(TextEffectID te_id) |
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
126 |
{ |
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
127 |
assert(te_id < _num_text_effects); |
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
128 |
TextEffect *te; |
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
129 |
|
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
130 |
te = &_text_effect_list[te_id]; |
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
131 |
MarkTextEffectAreaDirty(te); |
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
132 |
te->string_id = INVALID_STRING_ID; |
0 | 133 |
} |
134 |
||
135 |
static void MoveTextEffect(TextEffect *te) |
|
136 |
{ |
|
6998
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
137 |
/* Never expire for duration of 0xFFFF */ |
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
138 |
if (te->duration == 0xFFFF) return; |
0 | 139 |
if (te->duration < 8) { |
2470 | 140 |
te->string_id = INVALID_STRING_ID; |
0 | 141 |
} else { |
2549 | 142 |
te->duration -= 8; |
0 | 143 |
te->y--; |
144 |
te->bottom--; |
|
145 |
} |
|
146 |
MarkTextEffectAreaDirty(te); |
|
147 |
} |
|
148 |
||
6247 | 149 |
void MoveAllTextEffects() |
0 | 150 |
{ |
6998
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
151 |
for (TextEffectID i = 0; i < _num_text_effects; i++) { |
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
152 |
TextEffect *te = &_text_effect_list[i]; |
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
153 |
if (te->string_id != INVALID_STRING_ID && te->mode == TE_RISING) MoveTextEffect(te); |
0 | 154 |
} |
155 |
} |
|
156 |
||
6247 | 157 |
void InitTextEffects() |
0 | 158 |
{ |
6998
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
159 |
if (_text_effect_list == NULL) _text_effect_list = MallocT<TextEffect>(_num_text_effects); |
0 | 160 |
|
6998
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
161 |
for (TextEffectID i = 0; i < _num_text_effects; i++) _text_effect_list[i].string_id = INVALID_STRING_ID; |
0 | 162 |
} |
163 |
||
164 |
void DrawTextEffects(DrawPixelInfo *dpi) |
|
165 |
{ |
|
4469 | 166 |
switch (dpi->zoom) { |
6624
880e29b1f25e
(svn r9844) -Codechange: replace zoomlevel with an enum
truelight
parents:
6492
diff
changeset
|
167 |
case ZOOM_LVL_NORMAL: |
6998
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
168 |
for (TextEffectID i = 0; i < _num_text_effects; i++) { |
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
169 |
TextEffect *te = &_text_effect_list[i]; |
4469 | 170 |
if (te->string_id != INVALID_STRING_ID && |
171 |
dpi->left <= te->right && |
|
172 |
dpi->top <= te->bottom && |
|
173 |
dpi->left + dpi->width > te->x && |
|
174 |
dpi->top + dpi->height > te->y) { |
|
9413
7042a8ec3fa8
(svn r13325) -Codechange: split the client-side only settings from the settings stored in the savegame so there is no need to have a duplicate copy of it for new games.
rubidium
parents:
9354
diff
changeset
|
175 |
if (te->mode == TE_RISING || (_settings_client.gui.loading_indicators && !IsTransparencySet(TO_LOADING))) { |
6998
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
176 |
AddStringToDraw(te->x, te->y, te->string_id, te->params_1, te->params_2); |
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
177 |
} |
4469 | 178 |
} |
179 |
} |
|
180 |
break; |
|
0 | 181 |
|
6624
880e29b1f25e
(svn r9844) -Codechange: replace zoomlevel with an enum
truelight
parents:
6492
diff
changeset
|
182 |
case ZOOM_LVL_OUT_2X: |
6998
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
183 |
for (TextEffectID i = 0; i < _num_text_effects; i++) { |
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
184 |
TextEffect *te = &_text_effect_list[i]; |
4469 | 185 |
if (te->string_id != INVALID_STRING_ID && |
186 |
dpi->left <= te->right * 2 - te->x && |
|
187 |
dpi->top <= te->bottom * 2 - te->y && |
|
188 |
dpi->left + dpi->width > te->x && |
|
189 |
dpi->top + dpi->height > te->y) { |
|
9413
7042a8ec3fa8
(svn r13325) -Codechange: split the client-side only settings from the settings stored in the savegame so there is no need to have a duplicate copy of it for new games.
rubidium
parents:
9354
diff
changeset
|
190 |
if (te->mode == TE_RISING || (_settings_client.gui.loading_indicators && !IsTransparencySet(TO_LOADING))) { |
6998
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
191 |
AddStringToDraw(te->x, te->y, (StringID)(te->string_id - 1), te->params_1, te->params_2); |
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
192 |
} |
4469 | 193 |
} |
194 |
} |
|
195 |
break; |
|
6624
880e29b1f25e
(svn r9844) -Codechange: replace zoomlevel with an enum
truelight
parents:
6492
diff
changeset
|
196 |
|
6626
207875b9069a
(svn r9846) -Codechange: introduced ZOOM_LVL_MIN and ZOOM_LVL_MAX for the obvious reasons
truelight
parents:
6624
diff
changeset
|
197 |
case ZOOM_LVL_OUT_4X: |
6653
b20fcfed0847
(svn r9884) -Feature: 2 new zoom-out levels: 8 times and 16 times
truelight
parents:
6626
diff
changeset
|
198 |
case ZOOM_LVL_OUT_8X: |
6624
880e29b1f25e
(svn r9844) -Codechange: replace zoomlevel with an enum
truelight
parents:
6492
diff
changeset
|
199 |
break; |
6626
207875b9069a
(svn r9846) -Codechange: introduced ZOOM_LVL_MIN and ZOOM_LVL_MAX for the obvious reasons
truelight
parents:
6624
diff
changeset
|
200 |
|
207875b9069a
(svn r9846) -Codechange: introduced ZOOM_LVL_MIN and ZOOM_LVL_MAX for the obvious reasons
truelight
parents:
6624
diff
changeset
|
201 |
default: NOT_REACHED(); |
0 | 202 |
} |
203 |
} |