author | Tero Marttila <terom@fixme.fi> |
Fri, 18 Jul 2008 21:28:42 +0300 | |
changeset 11175 | 020c61e39c94 |
parent 11092 | e4fce2b3cded |
permissions | -rw-r--r-- |
2186 | 1 |
/* $Id$ */ |
2 |
||
10429
1b99254f9607
(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:
10268
diff
changeset
|
3 |
/** @file texteff.cpp Handling of text effects. */ |
6918
5589c415e28f
(svn r9558) -Documentation: doxygen and comment changes: 'T' now. Almost done
belugas
parents:
6700
diff
changeset
|
4 |
|
0 | 5 |
#include "stdafx.h" |
1891
92a3b0aa0946
(svn r2397) - CodeChange: rename all "ttd" files to "openttd" files.
Darkvater
parents:
1881
diff
changeset
|
6 |
#include "openttd.h" |
6949
72d11a1e1e60
(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:
6918
diff
changeset
|
7 |
#include "landscape.h" |
8721
b7971ad9bdd9
(svn r11788) -Fix (11787): makedepend doesn't mark delete files as changed...
rubidium
parents:
8710
diff
changeset
|
8 |
#include "gfx_func.h" |
10684 | 9 |
#include "console_func.h" |
2153
91e89aa8c299
(svn r2663) Include variables.h only in these files which need it, not globally via openttd.h
tron
parents:
2062
diff
changeset
|
10 |
#include "variables.h" |
7433
8e410e7ec0d7
(svn r10190) -Codechange: merged renderer and blitter to one single class API: blitter
truelight
parents:
7374
diff
changeset
|
11 |
#include "blitter/factory.hpp" |
7494
99eac2a2cd8b
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
7484
diff
changeset
|
12 |
#include "texteff.hpp" |
7666
a5fccd76176a
(svn r10444) -Codechange: switch to c++ classes and inheritance for sound/music/video drivers, using self-registration based on the blitter-model.
peter1138
parents:
7502
diff
changeset
|
13 |
#include "video/video_driver.hpp" |
8345
6caa3fdb972c
(svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
8245
diff
changeset
|
14 |
#include "transparency.h" |
8610
17cc343a23dd
(svn r11675) -Codechange: split the string types from the string functions.
rubidium
parents:
8609
diff
changeset
|
15 |
#include "strings_func.h" |
8626
440dfcd14c4a
(svn r11691) -Codechange: move+rename helpers.hpp and only include it when it is really needed.
rubidium
parents:
8617
diff
changeset
|
16 |
#include "core/alloc_func.hpp" |
8636
2b158acb649c
(svn r11702) -Codechange: move all date related stuff to date*.
rubidium
parents:
8627
diff
changeset
|
17 |
#include "date_func.h" |
8627
448ebf3a8291
(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:
8626
diff
changeset
|
18 |
#include "functions.h" |
8721
b7971ad9bdd9
(svn r11788) -Fix (11787): makedepend doesn't mark delete files as changed...
rubidium
parents:
8710
diff
changeset
|
19 |
#include "viewport_func.h" |
8766
c86cfa3a7580
(svn r11834) -Codechange: only include settings_type.h if needed.
rubidium
parents:
8760
diff
changeset
|
20 |
#include "settings_type.h" |
0 | 21 |
|
8760
ce0891c412ce
(svn r11828) -Codechange: include table/* as the last includes and remove an unneeded include from openttd.h.
rubidium
parents:
8721
diff
changeset
|
22 |
#include "table/sprites.h" |
ce0891c412ce
(svn r11828) -Codechange: include table/* as the last includes and remove an unneeded include from openttd.h.
rubidium
parents:
8721
diff
changeset
|
23 |
|
ce0891c412ce
(svn r11828) -Codechange: include table/* as the last includes and remove an unneeded include from openttd.h.
rubidium
parents:
8721
diff
changeset
|
24 |
#include <stdarg.h> /* va_list */ |
ce0891c412ce
(svn r11828) -Codechange: include table/* as the last includes and remove an unneeded include from openttd.h.
rubidium
parents:
8721
diff
changeset
|
25 |
|
5679
a478b04c1fd0
(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:
5678
diff
changeset
|
26 |
enum { |
6541
ff575414f0d2
(svn r9012) -Fix/Feature (UTF8): When cutting strings into multiple lines also take into consideration whitespace characters of more than 1 byte length (eg IDEOGRAPHIC SPACE, IsWhitespace() function). When trimming such strings, account for multiple-byte long sequences so use *Utf8PrevChar(v) = '\0'.
Darkvater
parents:
5919
diff
changeset
|
27 |
MAX_TEXTMESSAGE_LENGTH = 200, |
7494
99eac2a2cd8b
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
7484
diff
changeset
|
28 |
INIT_NUM_TEXT_MESSAGES = 20, |
5679
a478b04c1fd0
(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:
5678
diff
changeset
|
29 |
MAX_CHAT_MESSAGES = 10, |
a478b04c1fd0
(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:
5678
diff
changeset
|
30 |
}; |
a478b04c1fd0
(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:
5678
diff
changeset
|
31 |
|
6574
e1d1a12faaf7
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6573
diff
changeset
|
32 |
struct TextEffect { |
0 | 33 |
StringID string_id; |
849
c6223dbdb202
(svn r1330) Increase size of some vars from int16 to int32 to guard against future overflows
tron
parents:
835
diff
changeset
|
34 |
int32 x; |
c6223dbdb202
(svn r1330) Increase size of some vars from int16 to int32 to guard against future overflows
tron
parents:
835
diff
changeset
|
35 |
int32 y; |
c6223dbdb202
(svn r1330) Increase size of some vars from int16 to int32 to guard against future overflows
tron
parents:
835
diff
changeset
|
36 |
int32 right; |
c6223dbdb202
(svn r1330) Increase size of some vars from int16 to int32 to guard against future overflows
tron
parents:
835
diff
changeset
|
37 |
int32 bottom; |
0 | 38 |
uint16 duration; |
7502
71f5d2c6a605
(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:
7494
diff
changeset
|
39 |
uint64 params_1; |
71f5d2c6a605
(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:
7494
diff
changeset
|
40 |
uint64 params_2; |
7494
99eac2a2cd8b
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
7484
diff
changeset
|
41 |
TextEffectMode mode; |
6574
e1d1a12faaf7
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6573
diff
changeset
|
42 |
}; |
0 | 43 |
|
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
44 |
|
7950
3d3ed007127a
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7666
diff
changeset
|
45 |
struct ChatMessage { |
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
46 |
char message[MAX_TEXTMESSAGE_LENGTH]; |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
47 |
uint16 color; |
4363
3a3a2a3dda00
(svn r6078) -Fix: forgot one uint16 -> Date conversion. Tnx to #openttdcoop team for detecting and Rubidium for finding the cause.
truelight
parents:
4261
diff
changeset
|
48 |
Date end_date; |
6574
e1d1a12faaf7
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6573
diff
changeset
|
49 |
}; |
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
50 |
|
7950
3d3ed007127a
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7666
diff
changeset
|
51 |
/* used for text effects */ |
7494
99eac2a2cd8b
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
7484
diff
changeset
|
52 |
static TextEffect *_text_effect_list = NULL; |
7950
3d3ed007127a
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7666
diff
changeset
|
53 |
static uint16 _num_text_effects = INIT_NUM_TEXT_MESSAGES; |
0 | 54 |
|
7950
3d3ed007127a
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7666
diff
changeset
|
55 |
/* used for chat window */ |
3d3ed007127a
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7666
diff
changeset
|
56 |
static ChatMessage _chatmsg_list[MAX_CHAT_MESSAGES]; |
3d3ed007127a
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7666
diff
changeset
|
57 |
static bool _chatmessage_dirty = false; |
3d3ed007127a
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7666
diff
changeset
|
58 |
static bool _chatmessage_visible = false; |
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
59 |
|
4956
76db5a2689fc
(svn r6955) -Codechange: Change some variable names for _textmessage_box, and replace 5 different
Darkvater
parents:
4912
diff
changeset
|
60 |
/* The chatbox grows from the bottom so the coordinates are pixels from |
76db5a2689fc
(svn r6955) -Codechange: Change some variable names for _textmessage_box, and replace 5 different
Darkvater
parents:
4912
diff
changeset
|
61 |
* the left and pixels from the bottom. The height is the maximum height */ |
8617
931e0970d509
(svn r11682) -Codechange: move some 'generic' geometry related types into a single file and do not include gfx.h everywhere to get a Point type.
rubidium
parents:
8615
diff
changeset
|
62 |
static const PointDimension _chatmsg_box = {10, 30, 500, 150}; |
7950
3d3ed007127a
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7666
diff
changeset
|
63 |
static uint8 _chatmessage_backup[150 * 500 * 6]; // (height * width) |
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
64 |
|
7950
3d3ed007127a
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7666
diff
changeset
|
65 |
static inline uint GetChatMessageCount() |
4957
8588d2e7f409
(svn r6956) -Feature: Increase the chatbuffer of chat messages. Messages longer than the allocated
Darkvater
parents:
4956
diff
changeset
|
66 |
{ |
4959
828f9223446d
(svn r6958) -Fix (r6956): GCC warning (thx Tron) and a coding style forgotten in r6957
Darkvater
parents:
4958
diff
changeset
|
67 |
uint i; |
4957
8588d2e7f409
(svn r6956) -Feature: Increase the chatbuffer of chat messages. Messages longer than the allocated
Darkvater
parents:
4956
diff
changeset
|
68 |
|
4959
828f9223446d
(svn r6958) -Fix (r6956): GCC warning (thx Tron) and a coding style forgotten in r6957
Darkvater
parents:
4958
diff
changeset
|
69 |
for (i = 0; i < MAX_CHAT_MESSAGES; i++) { |
7950
3d3ed007127a
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7666
diff
changeset
|
70 |
if (_chatmsg_list[i].message[0] == '\0') break; |
4957
8588d2e7f409
(svn r6956) -Feature: Increase the chatbuffer of chat messages. Messages longer than the allocated
Darkvater
parents:
4956
diff
changeset
|
71 |
} |
8588d2e7f409
(svn r6956) -Feature: Increase the chatbuffer of chat messages. Messages longer than the allocated
Darkvater
parents:
4956
diff
changeset
|
72 |
|
8588d2e7f409
(svn r6956) -Feature: Increase the chatbuffer of chat messages. Messages longer than the allocated
Darkvater
parents:
4956
diff
changeset
|
73 |
return i; |
8588d2e7f409
(svn r6956) -Feature: Increase the chatbuffer of chat messages. Messages longer than the allocated
Darkvater
parents:
4956
diff
changeset
|
74 |
} |
8588d2e7f409
(svn r6956) -Feature: Increase the chatbuffer of chat messages. Messages longer than the allocated
Darkvater
parents:
4956
diff
changeset
|
75 |
|
8588d2e7f409
(svn r6956) -Feature: Increase the chatbuffer of chat messages. Messages longer than the allocated
Darkvater
parents:
4956
diff
changeset
|
76 |
/* Add a text message to the 'chat window' to be shown |
8588d2e7f409
(svn r6956) -Feature: Increase the chatbuffer of chat messages. Messages longer than the allocated
Darkvater
parents:
4956
diff
changeset
|
77 |
* @param color The colour this message is to be shown in |
8588d2e7f409
(svn r6956) -Feature: Increase the chatbuffer of chat messages. Messages longer than the allocated
Darkvater
parents:
4956
diff
changeset
|
78 |
* @param duration The duration of the chat message in game-days |
8588d2e7f409
(svn r6956) -Feature: Increase the chatbuffer of chat messages. Messages longer than the allocated
Darkvater
parents:
4956
diff
changeset
|
79 |
* @param message message itself in printf() style */ |
7950
3d3ed007127a
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7666
diff
changeset
|
80 |
void CDECL AddChatMessage(uint16 color, uint8 duration, const char *message, ...) |
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
81 |
{ |
2455 | 82 |
char buf[MAX_TEXTMESSAGE_LENGTH]; |
4957
8588d2e7f409
(svn r6956) -Feature: Increase the chatbuffer of chat messages. Messages longer than the allocated
Darkvater
parents:
4956
diff
changeset
|
83 |
const char *bufp; |
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
84 |
va_list va; |
4957
8588d2e7f409
(svn r6956) -Feature: Increase the chatbuffer of chat messages. Messages longer than the allocated
Darkvater
parents:
4956
diff
changeset
|
85 |
uint msg_count; |
8588d2e7f409
(svn r6956) -Feature: Increase the chatbuffer of chat messages. Messages longer than the allocated
Darkvater
parents:
4956
diff
changeset
|
86 |
uint16 lines; |
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
87 |
|
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
88 |
va_start(va, message); |
2373
f06403621870
(svn r2899) -Fix: Several format string vulnerabilities and buffer overflows in the network code
tron
parents:
2295
diff
changeset
|
89 |
vsnprintf(buf, lengthof(buf), message, va); |
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
90 |
va_end(va); |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
91 |
|
6541
ff575414f0d2
(svn r9012) -Fix/Feature (UTF8): When cutting strings into multiple lines also take into consideration whitespace characters of more than 1 byte length (eg IDEOGRAPHIC SPACE, IsWhitespace() function). When trimming such strings, account for multiple-byte long sequences so use *Utf8PrevChar(v) = '\0'.
Darkvater
parents:
5919
diff
changeset
|
92 |
|
ff575414f0d2
(svn r9012) -Fix/Feature (UTF8): When cutting strings into multiple lines also take into consideration whitespace characters of more than 1 byte length (eg IDEOGRAPHIC SPACE, IsWhitespace() function). When trimming such strings, account for multiple-byte long sequences so use *Utf8PrevChar(v) = '\0'.
Darkvater
parents:
5919
diff
changeset
|
93 |
Utf8TrimString(buf, MAX_TEXTMESSAGE_LENGTH); |
ff575414f0d2
(svn r9012) -Fix/Feature (UTF8): When cutting strings into multiple lines also take into consideration whitespace characters of more than 1 byte length (eg IDEOGRAPHIC SPACE, IsWhitespace() function). When trimming such strings, account for multiple-byte long sequences so use *Utf8PrevChar(v) = '\0'.
Darkvater
parents:
5919
diff
changeset
|
94 |
|
4957
8588d2e7f409
(svn r6956) -Feature: Increase the chatbuffer of chat messages. Messages longer than the allocated
Darkvater
parents:
4956
diff
changeset
|
95 |
/* Force linebreaks for strings that are too long */ |
7950
3d3ed007127a
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7666
diff
changeset
|
96 |
lines = GB(FormatStringLinebreaks(buf, _chatmsg_box.width - 8), 0, 16) + 1; |
4957
8588d2e7f409
(svn r6956) -Feature: Increase the chatbuffer of chat messages. Messages longer than the allocated
Darkvater
parents:
4956
diff
changeset
|
97 |
if (lines >= MAX_CHAT_MESSAGES) return; |
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
98 |
|
7950
3d3ed007127a
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7666
diff
changeset
|
99 |
msg_count = GetChatMessageCount(); |
4957
8588d2e7f409
(svn r6956) -Feature: Increase the chatbuffer of chat messages. Messages longer than the allocated
Darkvater
parents:
4956
diff
changeset
|
100 |
/* We want to add more chat messages than there is free space for, remove 'old' */ |
8588d2e7f409
(svn r6956) -Feature: Increase the chatbuffer of chat messages. Messages longer than the allocated
Darkvater
parents:
4956
diff
changeset
|
101 |
if (lines > MAX_CHAT_MESSAGES - msg_count) { |
8588d2e7f409
(svn r6956) -Feature: Increase the chatbuffer of chat messages. Messages longer than the allocated
Darkvater
parents:
4956
diff
changeset
|
102 |
int i = lines - (MAX_CHAT_MESSAGES - msg_count); |
7950
3d3ed007127a
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7666
diff
changeset
|
103 |
memmove(&_chatmsg_list[0], &_chatmsg_list[i], sizeof(_chatmsg_list[0]) * (msg_count - i)); |
4957
8588d2e7f409
(svn r6956) -Feature: Increase the chatbuffer of chat messages. Messages longer than the allocated
Darkvater
parents:
4956
diff
changeset
|
104 |
msg_count = MAX_CHAT_MESSAGES - lines; |
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
105 |
} |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
106 |
|
4957
8588d2e7f409
(svn r6956) -Feature: Increase the chatbuffer of chat messages. Messages longer than the allocated
Darkvater
parents:
4956
diff
changeset
|
107 |
for (bufp = buf; lines != 0; lines--) { |
7950
3d3ed007127a
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7666
diff
changeset
|
108 |
ChatMessage *cmsg = &_chatmsg_list[msg_count++]; |
3d3ed007127a
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7666
diff
changeset
|
109 |
ttd_strlcpy(cmsg->message, bufp, sizeof(cmsg->message)); |
4957
8588d2e7f409
(svn r6956) -Feature: Increase the chatbuffer of chat messages. Messages longer than the allocated
Darkvater
parents:
4956
diff
changeset
|
110 |
|
8588d2e7f409
(svn r6956) -Feature: Increase the chatbuffer of chat messages. Messages longer than the allocated
Darkvater
parents:
4956
diff
changeset
|
111 |
/* The default colour for a message is player colour. Replace this with |
8588d2e7f409
(svn r6956) -Feature: Increase the chatbuffer of chat messages. Messages longer than the allocated
Darkvater
parents:
4956
diff
changeset
|
112 |
* white for any additional lines */ |
7950
3d3ed007127a
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7666
diff
changeset
|
113 |
cmsg->color = (bufp == buf && color & IS_PALETTE_COLOR) ? color : (0x1D - 15) | IS_PALETTE_COLOR; |
3d3ed007127a
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7666
diff
changeset
|
114 |
cmsg->end_date = _date + duration; |
4957
8588d2e7f409
(svn r6956) -Feature: Increase the chatbuffer of chat messages. Messages longer than the allocated
Darkvater
parents:
4956
diff
changeset
|
115 |
|
8588d2e7f409
(svn r6956) -Feature: Increase the chatbuffer of chat messages. Messages longer than the allocated
Darkvater
parents:
4956
diff
changeset
|
116 |
bufp += strlen(bufp) + 1; // jump to 'next line' in the formatted string |
8588d2e7f409
(svn r6956) -Feature: Increase the chatbuffer of chat messages. Messages longer than the allocated
Darkvater
parents:
4956
diff
changeset
|
117 |
} |
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
118 |
|
7950
3d3ed007127a
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7666
diff
changeset
|
119 |
_chatmessage_dirty = true; |
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
120 |
} |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
121 |
|
7950
3d3ed007127a
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7666
diff
changeset
|
122 |
void InitChatMessage() |
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
123 |
{ |
2639 | 124 |
uint i; |
125 |
||
126 |
for (i = 0; i < MAX_CHAT_MESSAGES; i++) { |
|
7950
3d3ed007127a
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7666
diff
changeset
|
127 |
_chatmsg_list[i].message[0] = '\0'; |
2639 | 128 |
} |
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
129 |
} |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
130 |
|
7950
3d3ed007127a
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7666
diff
changeset
|
131 |
/** Hide the chatbox */ |
3d3ed007127a
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7666
diff
changeset
|
132 |
void UndrawChatMessage() |
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
133 |
{ |
7950
3d3ed007127a
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7666
diff
changeset
|
134 |
if (_chatmessage_visible) { |
7433
8e410e7ec0d7
(svn r10190) -Codechange: merged renderer and blitter to one single class API: blitter
truelight
parents:
7374
diff
changeset
|
135 |
Blitter *blitter = BlitterFactoryBase::GetCurrentBlitter(); |
5679
a478b04c1fd0
(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:
5678
diff
changeset
|
136 |
/* Sometimes we also need to hide the cursor |
a478b04c1fd0
(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:
5678
diff
changeset
|
137 |
* This is because both textmessage and the cursor take a shot of the |
a478b04c1fd0
(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:
5678
diff
changeset
|
138 |
* screen before drawing. |
a478b04c1fd0
(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:
5678
diff
changeset
|
139 |
* Now the textmessage takes his shot and paints his data before the cursor |
a478b04c1fd0
(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:
5678
diff
changeset
|
140 |
* does, so in the shot of the cursor is the screen-data of the textmessage |
a478b04c1fd0
(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:
5678
diff
changeset
|
141 |
* included when the cursor hangs somewhere over the textmessage. To |
a478b04c1fd0
(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:
5678
diff
changeset
|
142 |
* avoid wrong repaints, we undraw the cursor in that case, and everything |
a478b04c1fd0
(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:
5678
diff
changeset
|
143 |
* looks nicely ;) |
a478b04c1fd0
(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:
5678
diff
changeset
|
144 |
* (and now hope this story above makes sense to you ;)) |
a478b04c1fd0
(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:
5678
diff
changeset
|
145 |
*/ |
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
146 |
|
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
147 |
if (_cursor.visible) { |
7950
3d3ed007127a
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7666
diff
changeset
|
148 |
if (_cursor.draw_pos.x + _cursor.draw_size.x >= _chatmsg_box.x && |
3d3ed007127a
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7666
diff
changeset
|
149 |
_cursor.draw_pos.x <= _chatmsg_box.x + _chatmsg_box.width && |
3d3ed007127a
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7666
diff
changeset
|
150 |
_cursor.draw_pos.y + _cursor.draw_size.y >= _screen.height - _chatmsg_box.y - _chatmsg_box.height && |
3d3ed007127a
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7666
diff
changeset
|
151 |
_cursor.draw_pos.y <= _screen.height - _chatmsg_box.y) { |
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
152 |
UndrawMouseCursor(); |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
153 |
} |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
154 |
} |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
155 |
|
7950
3d3ed007127a
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7666
diff
changeset
|
156 |
int x = _chatmsg_box.x; |
3d3ed007127a
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7666
diff
changeset
|
157 |
int y = _screen.height - _chatmsg_box.y - _chatmsg_box.height; |
3d3ed007127a
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7666
diff
changeset
|
158 |
int width = _chatmsg_box.width; |
3d3ed007127a
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7666
diff
changeset
|
159 |
int height = _chatmsg_box.height; |
6692
983dbcb48cac
(svn r9420) -Fix [FS#701]: crashes when the chatbox would be drawn outside of the main window.
rubidium
parents:
6574
diff
changeset
|
160 |
if (y < 0) { |
7950
3d3ed007127a
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7666
diff
changeset
|
161 |
height = max(height + y, min(_chatmsg_box.height, _screen.height)); |
6692
983dbcb48cac
(svn r9420) -Fix [FS#701]: crashes when the chatbox would be drawn outside of the main window.
rubidium
parents:
6574
diff
changeset
|
162 |
y = 0; |
983dbcb48cac
(svn r9420) -Fix [FS#701]: crashes when the chatbox would be drawn outside of the main window.
rubidium
parents:
6574
diff
changeset
|
163 |
} |
983dbcb48cac
(svn r9420) -Fix [FS#701]: crashes when the chatbox would be drawn outside of the main window.
rubidium
parents:
6574
diff
changeset
|
164 |
if (x + width >= _screen.width) { |
983dbcb48cac
(svn r9420) -Fix [FS#701]: crashes when the chatbox would be drawn outside of the main window.
rubidium
parents:
6574
diff
changeset
|
165 |
width = _screen.width - x; |
983dbcb48cac
(svn r9420) -Fix [FS#701]: crashes when the chatbox would be drawn outside of the main window.
rubidium
parents:
6574
diff
changeset
|
166 |
} |
6700
0cee66ecb04a
(svn r9437) -Fix (r9420): dedicated server crashed when the y part of the resolution was less than 10.
rubidium
parents:
6692
diff
changeset
|
167 |
if (width <= 0 || height <= 0) return; |
6692
983dbcb48cac
(svn r9420) -Fix [FS#701]: crashes when the chatbox would be drawn outside of the main window.
rubidium
parents:
6574
diff
changeset
|
168 |
|
7950
3d3ed007127a
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7666
diff
changeset
|
169 |
_chatmessage_visible = false; |
5679
a478b04c1fd0
(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:
5678
diff
changeset
|
170 |
/* Put our 'shot' back to the screen */ |
7950
3d3ed007127a
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7666
diff
changeset
|
171 |
blitter->CopyFromBuffer(blitter->MoveTo(_screen.dst_ptr, x, y), _chatmessage_backup, width, height); |
5679
a478b04c1fd0
(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:
5678
diff
changeset
|
172 |
/* And make sure it is updated next time */ |
7666
a5fccd76176a
(svn r10444) -Codechange: switch to c++ classes and inheritance for sound/music/video drivers, using self-registration based on the blitter-model.
peter1138
parents:
7502
diff
changeset
|
173 |
_video_driver->MakeDirty(x, y, width, height); |
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
174 |
|
7950
3d3ed007127a
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7666
diff
changeset
|
175 |
_chatmessage_dirty = true; |
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
176 |
} |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
177 |
} |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
178 |
|
6918
5589c415e28f
(svn r9558) -Documentation: doxygen and comment changes: 'T' now. Almost done
belugas
parents:
6700
diff
changeset
|
179 |
/** Check if a message is expired every day */ |
7950
3d3ed007127a
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7666
diff
changeset
|
180 |
void ChatMessageDailyLoop() |
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
181 |
{ |
2639 | 182 |
uint i; |
183 |
||
1595
b1a8323c1024
(svn r2099) -Fix: no longer chat-messages hang when the game wraps around 2090
truelight
parents:
1569
diff
changeset
|
184 |
for (i = 0; i < MAX_CHAT_MESSAGES; i++) { |
7950
3d3ed007127a
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7666
diff
changeset
|
185 |
ChatMessage *cmsg = &_chatmsg_list[i]; |
3d3ed007127a
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7666
diff
changeset
|
186 |
if (cmsg->message[0] == '\0') continue; |
1595
b1a8323c1024
(svn r2099) -Fix: no longer chat-messages hang when the game wraps around 2090
truelight
parents:
1569
diff
changeset
|
187 |
|
4957
8588d2e7f409
(svn r6956) -Feature: Increase the chatbuffer of chat messages. Messages longer than the allocated
Darkvater
parents:
4956
diff
changeset
|
188 |
/* Message has expired, remove from the list */ |
7950
3d3ed007127a
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7666
diff
changeset
|
189 |
if (cmsg->end_date < _date) { |
1595
b1a8323c1024
(svn r2099) -Fix: no longer chat-messages hang when the game wraps around 2090
truelight
parents:
1569
diff
changeset
|
190 |
/* Move the remaining messages over the current message */ |
7950
3d3ed007127a
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7666
diff
changeset
|
191 |
if (i != MAX_CHAT_MESSAGES - 1) memmove(cmsg, cmsg + 1, sizeof(*cmsg) * (MAX_CHAT_MESSAGES - i - 1)); |
1595
b1a8323c1024
(svn r2099) -Fix: no longer chat-messages hang when the game wraps around 2090
truelight
parents:
1569
diff
changeset
|
192 |
|
b1a8323c1024
(svn r2099) -Fix: no longer chat-messages hang when the game wraps around 2090
truelight
parents:
1569
diff
changeset
|
193 |
/* Mark the last item as empty */ |
7950
3d3ed007127a
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7666
diff
changeset
|
194 |
_chatmsg_list[MAX_CHAT_MESSAGES - 1].message[0] = '\0'; |
3d3ed007127a
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7666
diff
changeset
|
195 |
_chatmessage_dirty = true; |
1595
b1a8323c1024
(svn r2099) -Fix: no longer chat-messages hang when the game wraps around 2090
truelight
parents:
1569
diff
changeset
|
196 |
|
b1a8323c1024
(svn r2099) -Fix: no longer chat-messages hang when the game wraps around 2090
truelight
parents:
1569
diff
changeset
|
197 |
/* Go one item back, because we moved the array 1 to the left */ |
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
198 |
i--; |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
199 |
} |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
200 |
} |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
201 |
} |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
202 |
|
7950
3d3ed007127a
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7666
diff
changeset
|
203 |
/** Draw the chat message-box */ |
3d3ed007127a
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7666
diff
changeset
|
204 |
void DrawChatMessage() |
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
205 |
{ |
7433
8e410e7ec0d7
(svn r10190) -Codechange: merged renderer and blitter to one single class API: blitter
truelight
parents:
7374
diff
changeset
|
206 |
Blitter *blitter = BlitterFactoryBase::GetCurrentBlitter(); |
7950
3d3ed007127a
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7666
diff
changeset
|
207 |
if (!_chatmessage_dirty) return; |
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
208 |
|
5679
a478b04c1fd0
(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:
5678
diff
changeset
|
209 |
/* First undraw if needed */ |
7950
3d3ed007127a
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7666
diff
changeset
|
210 |
UndrawChatMessage(); |
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
211 |
|
4959
828f9223446d
(svn r6958) -Fix (r6956): GCC warning (thx Tron) and a coding style forgotten in r6957
Darkvater
parents:
4958
diff
changeset
|
212 |
if (_iconsole_mode == ICONSOLE_FULL) return; |
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
213 |
|
1595
b1a8323c1024
(svn r2099) -Fix: no longer chat-messages hang when the game wraps around 2090
truelight
parents:
1569
diff
changeset
|
214 |
/* Check if we have anything to draw at all */ |
7950
3d3ed007127a
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7666
diff
changeset
|
215 |
uint count = GetChatMessageCount(); |
4960
cb06aa866acb
(svn r6959) -Codechange: Move GfxFillRect() out of the chat-message drawing loop since we already
Darkvater
parents:
4959
diff
changeset
|
216 |
if (count == 0) return; |
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
217 |
|
7950
3d3ed007127a
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7666
diff
changeset
|
218 |
int x = _chatmsg_box.x; |
3d3ed007127a
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7666
diff
changeset
|
219 |
int y = _screen.height - _chatmsg_box.y - _chatmsg_box.height; |
3d3ed007127a
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7666
diff
changeset
|
220 |
int width = _chatmsg_box.width; |
3d3ed007127a
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7666
diff
changeset
|
221 |
int height = _chatmsg_box.height; |
6692
983dbcb48cac
(svn r9420) -Fix [FS#701]: crashes when the chatbox would be drawn outside of the main window.
rubidium
parents:
6574
diff
changeset
|
222 |
if (y < 0) { |
7950
3d3ed007127a
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7666
diff
changeset
|
223 |
height = max(height + y, min(_chatmsg_box.height, _screen.height)); |
6692
983dbcb48cac
(svn r9420) -Fix [FS#701]: crashes when the chatbox would be drawn outside of the main window.
rubidium
parents:
6574
diff
changeset
|
224 |
y = 0; |
983dbcb48cac
(svn r9420) -Fix [FS#701]: crashes when the chatbox would be drawn outside of the main window.
rubidium
parents:
6574
diff
changeset
|
225 |
} |
983dbcb48cac
(svn r9420) -Fix [FS#701]: crashes when the chatbox would be drawn outside of the main window.
rubidium
parents:
6574
diff
changeset
|
226 |
if (x + width >= _screen.width) { |
983dbcb48cac
(svn r9420) -Fix [FS#701]: crashes when the chatbox would be drawn outside of the main window.
rubidium
parents:
6574
diff
changeset
|
227 |
width = _screen.width - x; |
983dbcb48cac
(svn r9420) -Fix [FS#701]: crashes when the chatbox would be drawn outside of the main window.
rubidium
parents:
6574
diff
changeset
|
228 |
} |
6700
0cee66ecb04a
(svn r9437) -Fix (r9420): dedicated server crashed when the y part of the resolution was less than 10.
rubidium
parents:
6692
diff
changeset
|
229 |
if (width <= 0 || height <= 0) return; |
0cee66ecb04a
(svn r9437) -Fix (r9420): dedicated server crashed when the y part of the resolution was less than 10.
rubidium
parents:
6692
diff
changeset
|
230 |
|
7950
3d3ed007127a
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7666
diff
changeset
|
231 |
assert(blitter->BufferSize(width, height) < (int)sizeof(_chatmessage_backup)); |
7481
699607d457a0
(svn r10241) -Codechange: CopyToBuffer now produces a buffer that is unreadable from outside the blitter, so the blitter can store anything he likes
truelight
parents:
7433
diff
changeset
|
232 |
|
5679
a478b04c1fd0
(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:
5678
diff
changeset
|
233 |
/* Make a copy of the screen as it is before painting (for undraw) */ |
7950
3d3ed007127a
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7666
diff
changeset
|
234 |
blitter->CopyToBuffer(blitter->MoveTo(_screen.dst_ptr, x, y), _chatmessage_backup, width, height); |
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
235 |
|
4960
cb06aa866acb
(svn r6959) -Codechange: Move GfxFillRect() out of the chat-message drawing loop since we already
Darkvater
parents:
4959
diff
changeset
|
236 |
_cur_dpi = &_screen; // switch to _screen painting |
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
237 |
|
7950
3d3ed007127a
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7666
diff
changeset
|
238 |
/* Paint a half-transparent box behind the chat messages */ |
4960
cb06aa866acb
(svn r6959) -Codechange: Move GfxFillRect() out of the chat-message drawing loop since we already
Darkvater
parents:
4959
diff
changeset
|
239 |
GfxFillRect( |
7950
3d3ed007127a
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7666
diff
changeset
|
240 |
_chatmsg_box.x, |
3d3ed007127a
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7666
diff
changeset
|
241 |
_screen.height - _chatmsg_box.y - count * 13 - 2, |
3d3ed007127a
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7666
diff
changeset
|
242 |
_chatmsg_box.x + _chatmsg_box.width - 1, |
3d3ed007127a
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7666
diff
changeset
|
243 |
_screen.height - _chatmsg_box.y - 2, |
11092
e4fce2b3cded
(svn r13649) -Codechange: Split the GfxFillRect() special flags from 'color' into their own parameter.
frosch
parents:
10775
diff
changeset
|
244 |
PALETTE_TO_TRANSPARENT, FILLRECT_RECOLOR // black, but with some alpha for background |
4960
cb06aa866acb
(svn r6959) -Codechange: Move GfxFillRect() out of the chat-message drawing loop since we already
Darkvater
parents:
4959
diff
changeset
|
245 |
); |
1595
b1a8323c1024
(svn r2099) -Fix: no longer chat-messages hang when the game wraps around 2090
truelight
parents:
1569
diff
changeset
|
246 |
|
7950
3d3ed007127a
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7666
diff
changeset
|
247 |
/* Paint the chat messages starting with the lowest at the bottom */ |
6692
983dbcb48cac
(svn r9420) -Fix [FS#701]: crashes when the chatbox would be drawn outside of the main window.
rubidium
parents:
6574
diff
changeset
|
248 |
for (uint y = 13; count-- != 0; y += 13) { |
7950
3d3ed007127a
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7666
diff
changeset
|
249 |
DoDrawString(_chatmsg_list[count].message, _chatmsg_box.x + 3, _screen.height - _chatmsg_box.y - y + 1, _chatmsg_list[count].color); |
6988
76eba6a9cc6f
(svn r9673) -Cleanup: remove spaces before tabs and replace non-indenting tabs with spaces.
rubidium
parents:
6949
diff
changeset
|
250 |
} |
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
251 |
|
5679
a478b04c1fd0
(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:
5678
diff
changeset
|
252 |
/* Make sure the data is updated next flush */ |
7666
a5fccd76176a
(svn r10444) -Codechange: switch to c++ classes and inheritance for sound/music/video drivers, using self-registration based on the blitter-model.
peter1138
parents:
7502
diff
changeset
|
253 |
_video_driver->MakeDirty(x, y, width, height); |
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
254 |
|
7950
3d3ed007127a
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7666
diff
changeset
|
255 |
_chatmessage_visible = true; |
3d3ed007127a
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7666
diff
changeset
|
256 |
_chatmessage_dirty = false; |
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
257 |
} |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
258 |
|
8041
63e760418a15
(svn r11065) -Documentation [FS#1186]: of the dirty marking/repainting subsystem. Patch by Progman.
rubidium
parents:
8031
diff
changeset
|
259 |
/* Text Effects */ |
63e760418a15
(svn r11065) -Documentation [FS#1186]: of the dirty marking/repainting subsystem. Patch by Progman.
rubidium
parents:
8031
diff
changeset
|
260 |
/** |
63e760418a15
(svn r11065) -Documentation [FS#1186]: of the dirty marking/repainting subsystem. Patch by Progman.
rubidium
parents:
8031
diff
changeset
|
261 |
* Mark the area of the text effect as dirty. |
63e760418a15
(svn r11065) -Documentation [FS#1186]: of the dirty marking/repainting subsystem. Patch by Progman.
rubidium
parents:
8031
diff
changeset
|
262 |
* |
63e760418a15
(svn r11065) -Documentation [FS#1186]: of the dirty marking/repainting subsystem. Patch by Progman.
rubidium
parents:
8031
diff
changeset
|
263 |
* This function marks the area of a text effect as dirty for repaint. |
63e760418a15
(svn r11065) -Documentation [FS#1186]: of the dirty marking/repainting subsystem. Patch by Progman.
rubidium
parents:
8031
diff
changeset
|
264 |
* |
63e760418a15
(svn r11065) -Documentation [FS#1186]: of the dirty marking/repainting subsystem. Patch by Progman.
rubidium
parents:
8031
diff
changeset
|
265 |
* @param te The TextEffect to mark the area dirty |
63e760418a15
(svn r11065) -Documentation [FS#1186]: of the dirty marking/repainting subsystem. Patch by Progman.
rubidium
parents:
8031
diff
changeset
|
266 |
* @ingroup dirty |
63e760418a15
(svn r11065) -Documentation [FS#1186]: of the dirty marking/repainting subsystem. Patch by Progman.
rubidium
parents:
8031
diff
changeset
|
267 |
*/ |
0 | 268 |
static void MarkTextEffectAreaDirty(TextEffect *te) |
269 |
{ |
|
8031
65a6e355c493
(svn r11055) -Fix [FS#1214]: loading indicators would sometimes glitch due to a bounding box that was too small. Patch by frosch.
rubidium
parents:
7950
diff
changeset
|
270 |
/* Width and height of the text effect are doubled, so they are correct in both zoom out levels 1x and 2x. */ |
0 | 271 |
MarkAllViewportsDirty( |
272 |
te->x, |
|
273 |
te->y - 1, |
|
274 |
(te->right - te->x)*2 + te->x + 1, |
|
275 |
(te->bottom - (te->y - 1)) * 2 + (te->y - 1) + 1 |
|
276 |
); |
|
277 |
} |
|
278 |
||
7494
99eac2a2cd8b
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
7484
diff
changeset
|
279 |
TextEffectID AddTextEffect(StringID msg, int x, int y, uint16 duration, TextEffectMode mode) |
0 | 280 |
{ |
281 |
TextEffect *te; |
|
282 |
int w; |
|
283 |
char buffer[100]; |
|
7494
99eac2a2cd8b
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
7484
diff
changeset
|
284 |
TextEffectID i; |
0 | 285 |
|
7494
99eac2a2cd8b
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
7484
diff
changeset
|
286 |
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
|
287 |
|
7494
99eac2a2cd8b
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
7484
diff
changeset
|
288 |
/* Look for a free spot in the text effect array */ |
99eac2a2cd8b
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
7484
diff
changeset
|
289 |
for (i = 0; i < _num_text_effects; i++) { |
99eac2a2cd8b
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
7484
diff
changeset
|
290 |
if (_text_effect_list[i].string_id == INVALID_STRING_ID) break; |
0 | 291 |
} |
292 |
||
7494
99eac2a2cd8b
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
7484
diff
changeset
|
293 |
/* If there is none found, we grow the array */ |
99eac2a2cd8b
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
7484
diff
changeset
|
294 |
if (i == _num_text_effects) { |
99eac2a2cd8b
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
7484
diff
changeset
|
295 |
_num_text_effects += 25; |
8533
a9b708fe4a00
(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:
8345
diff
changeset
|
296 |
_text_effect_list = ReallocT<TextEffect>(_text_effect_list, _num_text_effects); |
7494
99eac2a2cd8b
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
7484
diff
changeset
|
297 |
for (; i < _num_text_effects; i++) _text_effect_list[i].string_id = INVALID_STRING_ID; |
99eac2a2cd8b
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
7484
diff
changeset
|
298 |
i = _num_text_effects - 1; |
99eac2a2cd8b
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
7484
diff
changeset
|
299 |
} |
99eac2a2cd8b
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
7484
diff
changeset
|
300 |
|
99eac2a2cd8b
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
7484
diff
changeset
|
301 |
te = &_text_effect_list[i]; |
99eac2a2cd8b
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
7484
diff
changeset
|
302 |
|
99eac2a2cd8b
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
7484
diff
changeset
|
303 |
/* Start defining this object */ |
0 | 304 |
te->string_id = msg; |
305 |
te->duration = duration; |
|
306 |
te->y = y - 5; |
|
307 |
te->bottom = y + 5; |
|
534
17ab2f22ff74
(svn r901) Small step in the process to clean up the DPARAM mess:
tron
parents:
425
diff
changeset
|
308 |
te->params_1 = GetDParam(0); |
17ab2f22ff74
(svn r901) Small step in the process to clean up the DPARAM mess:
tron
parents:
425
diff
changeset
|
309 |
te->params_2 = GetDParam(4); |
7494
99eac2a2cd8b
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
7484
diff
changeset
|
310 |
te->mode = mode; |
0 | 311 |
|
4912
d04b3f2bca70
(svn r6884) -Codechange: Add strict bounds checking in string formatting system.
Darkvater
parents:
4609
diff
changeset
|
312 |
GetString(buffer, msg, lastof(buffer)); |
4609
6c337b3fbf4b
(svn r6462) -Codechange: Have GetStringWidth() return width as well as the height bounding
Darkvater
parents:
4469
diff
changeset
|
313 |
w = GetStringBoundingBox(buffer).width; |
0 | 314 |
|
315 |
te->x = x - (w >> 1); |
|
316 |
te->right = x + (w >> 1) - 1; |
|
317 |
MarkTextEffectAreaDirty(te); |
|
7494
99eac2a2cd8b
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
7484
diff
changeset
|
318 |
|
99eac2a2cd8b
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
7484
diff
changeset
|
319 |
return i; |
99eac2a2cd8b
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
7484
diff
changeset
|
320 |
} |
99eac2a2cd8b
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
7484
diff
changeset
|
321 |
|
99eac2a2cd8b
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
7484
diff
changeset
|
322 |
void UpdateTextEffect(TextEffectID te_id, StringID msg) |
99eac2a2cd8b
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
7484
diff
changeset
|
323 |
{ |
99eac2a2cd8b
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
7484
diff
changeset
|
324 |
assert(te_id < _num_text_effects); |
99eac2a2cd8b
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
7484
diff
changeset
|
325 |
TextEffect *te; |
99eac2a2cd8b
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
7484
diff
changeset
|
326 |
|
99eac2a2cd8b
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
7484
diff
changeset
|
327 |
/* Update details */ |
99eac2a2cd8b
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
7484
diff
changeset
|
328 |
te = &_text_effect_list[te_id]; |
99eac2a2cd8b
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
7484
diff
changeset
|
329 |
te->string_id = msg; |
99eac2a2cd8b
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
7484
diff
changeset
|
330 |
te->params_1 = GetDParam(0); |
99eac2a2cd8b
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
7484
diff
changeset
|
331 |
te->params_2 = GetDParam(4); |
99eac2a2cd8b
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
7484
diff
changeset
|
332 |
|
8031
65a6e355c493
(svn r11055) -Fix [FS#1214]: loading indicators would sometimes glitch due to a bounding box that was too small. Patch by frosch.
rubidium
parents:
7950
diff
changeset
|
333 |
/* Update width of text effect */ |
65a6e355c493
(svn r11055) -Fix [FS#1214]: loading indicators would sometimes glitch due to a bounding box that was too small. Patch by frosch.
rubidium
parents:
7950
diff
changeset
|
334 |
char buffer[100]; |
65a6e355c493
(svn r11055) -Fix [FS#1214]: loading indicators would sometimes glitch due to a bounding box that was too small. Patch by frosch.
rubidium
parents:
7950
diff
changeset
|
335 |
GetString(buffer, msg, lastof(buffer)); |
65a6e355c493
(svn r11055) -Fix [FS#1214]: loading indicators would sometimes glitch due to a bounding box that was too small. Patch by frosch.
rubidium
parents:
7950
diff
changeset
|
336 |
int w = GetStringBoundingBox(buffer).width; |
65a6e355c493
(svn r11055) -Fix [FS#1214]: loading indicators would sometimes glitch due to a bounding box that was too small. Patch by frosch.
rubidium
parents:
7950
diff
changeset
|
337 |
|
65a6e355c493
(svn r11055) -Fix [FS#1214]: loading indicators would sometimes glitch due to a bounding box that was too small. Patch by frosch.
rubidium
parents:
7950
diff
changeset
|
338 |
/* Only allow to make it broader, so it completely covers the old text. That avoids remnants of the old text. */ |
65a6e355c493
(svn r11055) -Fix [FS#1214]: loading indicators would sometimes glitch due to a bounding box that was too small. Patch by frosch.
rubidium
parents:
7950
diff
changeset
|
339 |
int right_new = te->x + w; |
65a6e355c493
(svn r11055) -Fix [FS#1214]: loading indicators would sometimes glitch due to a bounding box that was too small. Patch by frosch.
rubidium
parents:
7950
diff
changeset
|
340 |
if (te->right < right_new) te->right = right_new; |
65a6e355c493
(svn r11055) -Fix [FS#1214]: loading indicators would sometimes glitch due to a bounding box that was too small. Patch by frosch.
rubidium
parents:
7950
diff
changeset
|
341 |
|
7494
99eac2a2cd8b
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
7484
diff
changeset
|
342 |
MarkTextEffectAreaDirty(te); |
99eac2a2cd8b
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
7484
diff
changeset
|
343 |
} |
99eac2a2cd8b
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
7484
diff
changeset
|
344 |
|
99eac2a2cd8b
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
7484
diff
changeset
|
345 |
void RemoveTextEffect(TextEffectID te_id) |
99eac2a2cd8b
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
7484
diff
changeset
|
346 |
{ |
99eac2a2cd8b
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
7484
diff
changeset
|
347 |
assert(te_id < _num_text_effects); |
99eac2a2cd8b
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
7484
diff
changeset
|
348 |
TextEffect *te; |
99eac2a2cd8b
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
7484
diff
changeset
|
349 |
|
99eac2a2cd8b
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
7484
diff
changeset
|
350 |
te = &_text_effect_list[te_id]; |
99eac2a2cd8b
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
7484
diff
changeset
|
351 |
MarkTextEffectAreaDirty(te); |
99eac2a2cd8b
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
7484
diff
changeset
|
352 |
te->string_id = INVALID_STRING_ID; |
0 | 353 |
} |
354 |
||
355 |
static void MoveTextEffect(TextEffect *te) |
|
356 |
{ |
|
7494
99eac2a2cd8b
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
7484
diff
changeset
|
357 |
/* Never expire for duration of 0xFFFF */ |
99eac2a2cd8b
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
7484
diff
changeset
|
358 |
if (te->duration == 0xFFFF) return; |
0 | 359 |
if (te->duration < 8) { |
2470 | 360 |
te->string_id = INVALID_STRING_ID; |
0 | 361 |
} else { |
2549 | 362 |
te->duration -= 8; |
0 | 363 |
te->y--; |
364 |
te->bottom--; |
|
365 |
} |
|
366 |
MarkTextEffectAreaDirty(te); |
|
367 |
} |
|
368 |
||
6573 | 369 |
void MoveAllTextEffects() |
0 | 370 |
{ |
7494
99eac2a2cd8b
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
7484
diff
changeset
|
371 |
for (TextEffectID i = 0; i < _num_text_effects; i++) { |
99eac2a2cd8b
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
7484
diff
changeset
|
372 |
TextEffect *te = &_text_effect_list[i]; |
99eac2a2cd8b
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
7484
diff
changeset
|
373 |
if (te->string_id != INVALID_STRING_ID && te->mode == TE_RISING) MoveTextEffect(te); |
0 | 374 |
} |
375 |
} |
|
376 |
||
6573 | 377 |
void InitTextEffects() |
0 | 378 |
{ |
7494
99eac2a2cd8b
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
7484
diff
changeset
|
379 |
if (_text_effect_list == NULL) _text_effect_list = MallocT<TextEffect>(_num_text_effects); |
0 | 380 |
|
7494
99eac2a2cd8b
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
7484
diff
changeset
|
381 |
for (TextEffectID i = 0; i < _num_text_effects; i++) _text_effect_list[i].string_id = INVALID_STRING_ID; |
0 | 382 |
} |
383 |
||
384 |
void DrawTextEffects(DrawPixelInfo *dpi) |
|
385 |
{ |
|
4469 | 386 |
switch (dpi->zoom) { |
7120
e31767effc16
(svn r9844) -Codechange: replace zoomlevel with an enum
truelight
parents:
6988
diff
changeset
|
387 |
case ZOOM_LVL_NORMAL: |
7494
99eac2a2cd8b
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
7484
diff
changeset
|
388 |
for (TextEffectID i = 0; i < _num_text_effects; i++) { |
99eac2a2cd8b
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
7484
diff
changeset
|
389 |
TextEffect *te = &_text_effect_list[i]; |
4469 | 390 |
if (te->string_id != INVALID_STRING_ID && |
391 |
dpi->left <= te->right && |
|
392 |
dpi->top <= te->bottom && |
|
393 |
dpi->left + dpi->width > te->x && |
|
394 |
dpi->top + dpi->height > te->y) { |
|
10775
7061477bfbcf
(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:
10703
diff
changeset
|
395 |
if (te->mode == TE_RISING || (_settings_client.gui.loading_indicators && !IsTransparencySet(TO_LOADING))) { |
7494
99eac2a2cd8b
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
7484
diff
changeset
|
396 |
AddStringToDraw(te->x, te->y, te->string_id, te->params_1, te->params_2); |
99eac2a2cd8b
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
7484
diff
changeset
|
397 |
} |
4469 | 398 |
} |
399 |
} |
|
400 |
break; |
|
0 | 401 |
|
7120
e31767effc16
(svn r9844) -Codechange: replace zoomlevel with an enum
truelight
parents:
6988
diff
changeset
|
402 |
case ZOOM_LVL_OUT_2X: |
7494
99eac2a2cd8b
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
7484
diff
changeset
|
403 |
for (TextEffectID i = 0; i < _num_text_effects; i++) { |
99eac2a2cd8b
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
7484
diff
changeset
|
404 |
TextEffect *te = &_text_effect_list[i]; |
4469 | 405 |
if (te->string_id != INVALID_STRING_ID && |
406 |
dpi->left <= te->right * 2 - te->x && |
|
407 |
dpi->top <= te->bottom * 2 - te->y && |
|
408 |
dpi->left + dpi->width > te->x && |
|
409 |
dpi->top + dpi->height > te->y) { |
|
10775
7061477bfbcf
(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:
10703
diff
changeset
|
410 |
if (te->mode == TE_RISING || (_settings_client.gui.loading_indicators && !IsTransparencySet(TO_LOADING))) { |
7494
99eac2a2cd8b
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
7484
diff
changeset
|
411 |
AddStringToDraw(te->x, te->y, (StringID)(te->string_id - 1), te->params_1, te->params_2); |
99eac2a2cd8b
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
7484
diff
changeset
|
412 |
} |
4469 | 413 |
} |
414 |
} |
|
415 |
break; |
|
7120
e31767effc16
(svn r9844) -Codechange: replace zoomlevel with an enum
truelight
parents:
6988
diff
changeset
|
416 |
|
7122
0607a15aedc0
(svn r9846) -Codechange: introduced ZOOM_LVL_MIN and ZOOM_LVL_MAX for the obvious reasons
truelight
parents:
7120
diff
changeset
|
417 |
case ZOOM_LVL_OUT_4X: |
7149
ba2798e551a3
(svn r9884) -Feature: 2 new zoom-out levels: 8 times and 16 times
truelight
parents:
7122
diff
changeset
|
418 |
case ZOOM_LVL_OUT_8X: |
7120
e31767effc16
(svn r9844) -Codechange: replace zoomlevel with an enum
truelight
parents:
6988
diff
changeset
|
419 |
break; |
7122
0607a15aedc0
(svn r9846) -Codechange: introduced ZOOM_LVL_MIN and ZOOM_LVL_MAX for the obvious reasons
truelight
parents:
7120
diff
changeset
|
420 |
|
0607a15aedc0
(svn r9846) -Codechange: introduced ZOOM_LVL_MIN and ZOOM_LVL_MAX for the obvious reasons
truelight
parents:
7120
diff
changeset
|
421 |
default: NOT_REACHED(); |
0 | 422 |
} |
423 |
} |