author | rubidium |
Wed, 19 Dec 2007 23:26:02 +0000 | |
changeset 8108 | b42a0e5c67ef |
parent 8037 | 8aa4ace04383 |
child 8113 | 31b7784db761 |
permissions | -rw-r--r-- |
2186 | 1 |
/* $Id$ */ |
2 |
||
6422
6679df1c05ba
(svn r9558) -Documentation: doxygen and comment changes: 'T' now. Almost done
belugas
parents:
6374
diff
changeset
|
3 |
/** @file texteff.cpp */ |
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" |
2163
b17b313113a0
(svn r2673) Include functions.h directly, not globally via openttd.h
tron
parents:
2153
diff
changeset
|
7 |
#include "functions.h" |
4957
44b747809879
(svn r6956) -Feature: Increase the chatbuffer of chat messages. Messages longer than the allocated
Darkvater
parents:
4956
diff
changeset
|
8 |
#include "macros.h" |
1309
4403a69da4f8
(svn r1813) Declare functions implemented in strings.c in their own shiny new header (though i think some of these function don't belong into strings.c)
tron
parents:
1174
diff
changeset
|
9 |
#include "strings.h" |
0 | 10 |
#include "gfx.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
|
11 |
#include "landscape.h" |
0 | 12 |
#include "viewport.h" |
13 |
#include "saveload.h" |
|
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
14 |
#include "console.h" |
1595
fda318dddab5
(svn r2099) -Fix: no longer chat-messages hang when the game wraps around 2090
truelight
parents:
1569
diff
changeset
|
15 |
#include "string.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
|
16 |
#include "variables.h" |
2218
2132596a35c0
(svn r2736) -Codechange: De-mystified GfxDrawFillRect a bit, and used enums from table/sprites.h. You can now change the number of bits used for sprites and switches in the SpriteSetup enum and the rest should work automagically. Can be used to increase the number of active sprites to 2^19 in case there are no colortables (recolor sprites) in any newgrf. We should possibly move the the colortables to an own list, but how to detect them in a newgrf.
celestar
parents:
2186
diff
changeset
|
17 |
#include "table/sprites.h" |
6937
40c760fcf1f6
(svn r10190) -Codechange: merged renderer and blitter to one single class API: blitter
truelight
parents:
6878
diff
changeset
|
18 |
#include "blitter/factory.hpp" |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
19 |
#include <stdarg.h> /* va_list */ |
4261
28670f743746
(svn r5887) -Cleanup: move date related functions, defines and variables to date.[ch]
rubidium
parents:
2685
diff
changeset
|
20 |
#include "date.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
|
21 |
#include "texteff.hpp" |
7170
923946ec324f
(svn r10444) -Codechange: switch to c++ classes and inheritance for sound/music/video drivers, using self-registration based on the blitter-model.
peter1138
parents:
7006
diff
changeset
|
22 |
#include "video/video_driver.hpp" |
7849
0a1c0af2c96c
(svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
7749
diff
changeset
|
23 |
#include "transparency.h" |
0 | 24 |
|
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
|
25 |
enum { |
6215
bbd141b026b5
(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:
5668
diff
changeset
|
26 |
MAX_TEXTMESSAGE_LENGTH = 200, |
6998
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
27 |
INIT_NUM_TEXT_MESSAGES = 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
|
28 |
MAX_CHAT_MESSAGES = 10, |
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
|
29 |
}; |
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
|
30 |
|
6248
e4a2ed7e5613
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6247
diff
changeset
|
31 |
struct TextEffect { |
0 | 32 |
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
|
33 |
int32 x; |
c3407041774f
(svn r1330) Increase size of some vars from int16 to int32 to guard against future overflows
tron
parents:
835
diff
changeset
|
34 |
int32 y; |
c3407041774f
(svn r1330) Increase size of some vars from int16 to int32 to guard against future overflows
tron
parents:
835
diff
changeset
|
35 |
int32 right; |
c3407041774f
(svn r1330) Increase size of some vars from int16 to int32 to guard against future overflows
tron
parents:
835
diff
changeset
|
36 |
int32 bottom; |
0 | 37 |
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
|
38 |
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
|
39 |
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
|
40 |
TextEffectMode mode; |
6248
e4a2ed7e5613
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6247
diff
changeset
|
41 |
}; |
0 | 42 |
|
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
43 |
|
7454
e55eea8c05c7
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7170
diff
changeset
|
44 |
struct ChatMessage { |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
45 |
char message[MAX_TEXTMESSAGE_LENGTH]; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
46 |
uint16 color; |
4363
8a38cd70dab9
(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
|
47 |
Date end_date; |
6248
e4a2ed7e5613
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6247
diff
changeset
|
48 |
}; |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
49 |
|
7454
e55eea8c05c7
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7170
diff
changeset
|
50 |
/* 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
|
51 |
static TextEffect *_text_effect_list = NULL; |
7454
e55eea8c05c7
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7170
diff
changeset
|
52 |
static uint16 _num_text_effects = INIT_NUM_TEXT_MESSAGES; |
0 | 53 |
|
7454
e55eea8c05c7
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7170
diff
changeset
|
54 |
/* used for chat window */ |
e55eea8c05c7
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7170
diff
changeset
|
55 |
static ChatMessage _chatmsg_list[MAX_CHAT_MESSAGES]; |
e55eea8c05c7
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7170
diff
changeset
|
56 |
static bool _chatmessage_dirty = false; |
e55eea8c05c7
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7170
diff
changeset
|
57 |
static bool _chatmessage_visible = false; |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
58 |
|
4956
49ecd2a36222
(svn r6955) -Codechange: Change some variable names for _textmessage_box, and replace 5 different
Darkvater
parents:
4912
diff
changeset
|
59 |
/* The chatbox grows from the bottom so the coordinates are pixels from |
49ecd2a36222
(svn r6955) -Codechange: Change some variable names for _textmessage_box, and replace 5 different
Darkvater
parents:
4912
diff
changeset
|
60 |
* the left and pixels from the bottom. The height is the maximum height */ |
7454
e55eea8c05c7
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7170
diff
changeset
|
61 |
static const Oblong _chatmsg_box = {10, 30, 500, 150}; |
e55eea8c05c7
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7170
diff
changeset
|
62 |
static uint8 _chatmessage_backup[150 * 500 * 6]; // (height * width) |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
63 |
|
7454
e55eea8c05c7
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7170
diff
changeset
|
64 |
static inline uint GetChatMessageCount() |
4957
44b747809879
(svn r6956) -Feature: Increase the chatbuffer of chat messages. Messages longer than the allocated
Darkvater
parents:
4956
diff
changeset
|
65 |
{ |
4959
9a25901ce3e6
(svn r6958) -Fix (r6956): GCC warning (thx Tron) and a coding style forgotten in r6957
Darkvater
parents:
4958
diff
changeset
|
66 |
uint i; |
4957
44b747809879
(svn r6956) -Feature: Increase the chatbuffer of chat messages. Messages longer than the allocated
Darkvater
parents:
4956
diff
changeset
|
67 |
|
4959
9a25901ce3e6
(svn r6958) -Fix (r6956): GCC warning (thx Tron) and a coding style forgotten in r6957
Darkvater
parents:
4958
diff
changeset
|
68 |
for (i = 0; i < MAX_CHAT_MESSAGES; i++) { |
7454
e55eea8c05c7
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7170
diff
changeset
|
69 |
if (_chatmsg_list[i].message[0] == '\0') break; |
4957
44b747809879
(svn r6956) -Feature: Increase the chatbuffer of chat messages. Messages longer than the allocated
Darkvater
parents:
4956
diff
changeset
|
70 |
} |
44b747809879
(svn r6956) -Feature: Increase the chatbuffer of chat messages. Messages longer than the allocated
Darkvater
parents:
4956
diff
changeset
|
71 |
|
44b747809879
(svn r6956) -Feature: Increase the chatbuffer of chat messages. Messages longer than the allocated
Darkvater
parents:
4956
diff
changeset
|
72 |
return i; |
44b747809879
(svn r6956) -Feature: Increase the chatbuffer of chat messages. Messages longer than the allocated
Darkvater
parents:
4956
diff
changeset
|
73 |
} |
44b747809879
(svn r6956) -Feature: Increase the chatbuffer of chat messages. Messages longer than the allocated
Darkvater
parents:
4956
diff
changeset
|
74 |
|
44b747809879
(svn r6956) -Feature: Increase the chatbuffer of chat messages. Messages longer than the allocated
Darkvater
parents:
4956
diff
changeset
|
75 |
/* Add a text message to the 'chat window' to be shown |
44b747809879
(svn r6956) -Feature: Increase the chatbuffer of chat messages. Messages longer than the allocated
Darkvater
parents:
4956
diff
changeset
|
76 |
* @param color The colour this message is to be shown in |
44b747809879
(svn r6956) -Feature: Increase the chatbuffer of chat messages. Messages longer than the allocated
Darkvater
parents:
4956
diff
changeset
|
77 |
* @param duration The duration of the chat message in game-days |
44b747809879
(svn r6956) -Feature: Increase the chatbuffer of chat messages. Messages longer than the allocated
Darkvater
parents:
4956
diff
changeset
|
78 |
* @param message message itself in printf() style */ |
7454
e55eea8c05c7
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7170
diff
changeset
|
79 |
void CDECL AddChatMessage(uint16 color, uint8 duration, const char *message, ...) |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
80 |
{ |
2455 | 81 |
char buf[MAX_TEXTMESSAGE_LENGTH]; |
4957
44b747809879
(svn r6956) -Feature: Increase the chatbuffer of chat messages. Messages longer than the allocated
Darkvater
parents:
4956
diff
changeset
|
82 |
const char *bufp; |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
83 |
va_list va; |
4957
44b747809879
(svn r6956) -Feature: Increase the chatbuffer of chat messages. Messages longer than the allocated
Darkvater
parents:
4956
diff
changeset
|
84 |
uint msg_count; |
44b747809879
(svn r6956) -Feature: Increase the chatbuffer of chat messages. Messages longer than the allocated
Darkvater
parents:
4956
diff
changeset
|
85 |
uint16 lines; |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
86 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
87 |
va_start(va, message); |
2373
e073ec69bf56
(svn r2899) -Fix: Several format string vulnerabilities and buffer overflows in the network code
tron
parents:
2295
diff
changeset
|
88 |
vsnprintf(buf, lengthof(buf), message, va); |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
89 |
va_end(va); |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
90 |
|
6215
bbd141b026b5
(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:
5668
diff
changeset
|
91 |
|
bbd141b026b5
(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:
5668
diff
changeset
|
92 |
Utf8TrimString(buf, MAX_TEXTMESSAGE_LENGTH); |
bbd141b026b5
(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:
5668
diff
changeset
|
93 |
|
4957
44b747809879
(svn r6956) -Feature: Increase the chatbuffer of chat messages. Messages longer than the allocated
Darkvater
parents:
4956
diff
changeset
|
94 |
/* Force linebreaks for strings that are too long */ |
7454
e55eea8c05c7
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7170
diff
changeset
|
95 |
lines = GB(FormatStringLinebreaks(buf, _chatmsg_box.width - 8), 0, 16) + 1; |
4957
44b747809879
(svn r6956) -Feature: Increase the chatbuffer of chat messages. Messages longer than the allocated
Darkvater
parents:
4956
diff
changeset
|
96 |
if (lines >= MAX_CHAT_MESSAGES) return; |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
97 |
|
7454
e55eea8c05c7
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7170
diff
changeset
|
98 |
msg_count = GetChatMessageCount(); |
4957
44b747809879
(svn r6956) -Feature: Increase the chatbuffer of chat messages. Messages longer than the allocated
Darkvater
parents:
4956
diff
changeset
|
99 |
/* We want to add more chat messages than there is free space for, remove 'old' */ |
44b747809879
(svn r6956) -Feature: Increase the chatbuffer of chat messages. Messages longer than the allocated
Darkvater
parents:
4956
diff
changeset
|
100 |
if (lines > MAX_CHAT_MESSAGES - msg_count) { |
44b747809879
(svn r6956) -Feature: Increase the chatbuffer of chat messages. Messages longer than the allocated
Darkvater
parents:
4956
diff
changeset
|
101 |
int i = lines - (MAX_CHAT_MESSAGES - msg_count); |
7454
e55eea8c05c7
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7170
diff
changeset
|
102 |
memmove(&_chatmsg_list[0], &_chatmsg_list[i], sizeof(_chatmsg_list[0]) * (msg_count - i)); |
4957
44b747809879
(svn r6956) -Feature: Increase the chatbuffer of chat messages. Messages longer than the allocated
Darkvater
parents:
4956
diff
changeset
|
103 |
msg_count = MAX_CHAT_MESSAGES - lines; |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
104 |
} |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
105 |
|
4957
44b747809879
(svn r6956) -Feature: Increase the chatbuffer of chat messages. Messages longer than the allocated
Darkvater
parents:
4956
diff
changeset
|
106 |
for (bufp = buf; lines != 0; lines--) { |
7454
e55eea8c05c7
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7170
diff
changeset
|
107 |
ChatMessage *cmsg = &_chatmsg_list[msg_count++]; |
e55eea8c05c7
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7170
diff
changeset
|
108 |
ttd_strlcpy(cmsg->message, bufp, sizeof(cmsg->message)); |
4957
44b747809879
(svn r6956) -Feature: Increase the chatbuffer of chat messages. Messages longer than the allocated
Darkvater
parents:
4956
diff
changeset
|
109 |
|
44b747809879
(svn r6956) -Feature: Increase the chatbuffer of chat messages. Messages longer than the allocated
Darkvater
parents:
4956
diff
changeset
|
110 |
/* The default colour for a message is player colour. Replace this with |
44b747809879
(svn r6956) -Feature: Increase the chatbuffer of chat messages. Messages longer than the allocated
Darkvater
parents:
4956
diff
changeset
|
111 |
* white for any additional lines */ |
7454
e55eea8c05c7
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7170
diff
changeset
|
112 |
cmsg->color = (bufp == buf && color & IS_PALETTE_COLOR) ? color : (0x1D - 15) | IS_PALETTE_COLOR; |
e55eea8c05c7
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7170
diff
changeset
|
113 |
cmsg->end_date = _date + duration; |
4957
44b747809879
(svn r6956) -Feature: Increase the chatbuffer of chat messages. Messages longer than the allocated
Darkvater
parents:
4956
diff
changeset
|
114 |
|
44b747809879
(svn r6956) -Feature: Increase the chatbuffer of chat messages. Messages longer than the allocated
Darkvater
parents:
4956
diff
changeset
|
115 |
bufp += strlen(bufp) + 1; // jump to 'next line' in the formatted string |
44b747809879
(svn r6956) -Feature: Increase the chatbuffer of chat messages. Messages longer than the allocated
Darkvater
parents:
4956
diff
changeset
|
116 |
} |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
117 |
|
7454
e55eea8c05c7
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7170
diff
changeset
|
118 |
_chatmessage_dirty = true; |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
119 |
} |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
120 |
|
7454
e55eea8c05c7
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7170
diff
changeset
|
121 |
void InitChatMessage() |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
122 |
{ |
2639 | 123 |
uint i; |
124 |
||
125 |
for (i = 0; i < MAX_CHAT_MESSAGES; i++) { |
|
7454
e55eea8c05c7
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7170
diff
changeset
|
126 |
_chatmsg_list[i].message[0] = '\0'; |
2639 | 127 |
} |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
128 |
} |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
129 |
|
7454
e55eea8c05c7
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7170
diff
changeset
|
130 |
/** Hide the chatbox */ |
e55eea8c05c7
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7170
diff
changeset
|
131 |
void UndrawChatMessage() |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
132 |
{ |
7454
e55eea8c05c7
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7170
diff
changeset
|
133 |
if (_chatmessage_visible) { |
6937
40c760fcf1f6
(svn r10190) -Codechange: merged renderer and blitter to one single class API: blitter
truelight
parents:
6878
diff
changeset
|
134 |
Blitter *blitter = BlitterFactoryBase::GetCurrentBlitter(); |
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
|
135 |
/* Sometimes we also need to hide the cursor |
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
|
136 |
* This is because both textmessage and the cursor take a shot of the |
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
|
137 |
* screen before drawing. |
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
|
138 |
* Now the textmessage takes his shot and paints his data before the cursor |
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
|
139 |
* does, so in the shot of the cursor is the screen-data of the textmessage |
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
|
140 |
* included when the cursor hangs somewhere over the textmessage. To |
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
|
141 |
* avoid wrong repaints, we undraw the cursor in that case, and everything |
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
|
142 |
* looks nicely ;) |
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
|
143 |
* (and now hope this story above makes sense to you ;)) |
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
|
144 |
*/ |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
145 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
146 |
if (_cursor.visible) { |
7454
e55eea8c05c7
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7170
diff
changeset
|
147 |
if (_cursor.draw_pos.x + _cursor.draw_size.x >= _chatmsg_box.x && |
e55eea8c05c7
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7170
diff
changeset
|
148 |
_cursor.draw_pos.x <= _chatmsg_box.x + _chatmsg_box.width && |
e55eea8c05c7
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7170
diff
changeset
|
149 |
_cursor.draw_pos.y + _cursor.draw_size.y >= _screen.height - _chatmsg_box.y - _chatmsg_box.height && |
e55eea8c05c7
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7170
diff
changeset
|
150 |
_cursor.draw_pos.y <= _screen.height - _chatmsg_box.y) { |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
151 |
UndrawMouseCursor(); |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
152 |
} |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
153 |
} |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
154 |
|
7454
e55eea8c05c7
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7170
diff
changeset
|
155 |
int x = _chatmsg_box.x; |
e55eea8c05c7
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7170
diff
changeset
|
156 |
int y = _screen.height - _chatmsg_box.y - _chatmsg_box.height; |
e55eea8c05c7
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7170
diff
changeset
|
157 |
int width = _chatmsg_box.width; |
e55eea8c05c7
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7170
diff
changeset
|
158 |
int height = _chatmsg_box.height; |
6366
155956db09e9
(svn r9420) -Fix [FS#701]: crashes when the chatbox would be drawn outside of the main window.
rubidium
parents:
6248
diff
changeset
|
159 |
if (y < 0) { |
7454
e55eea8c05c7
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7170
diff
changeset
|
160 |
height = max(height + y, min(_chatmsg_box.height, _screen.height)); |
6366
155956db09e9
(svn r9420) -Fix [FS#701]: crashes when the chatbox would be drawn outside of the main window.
rubidium
parents:
6248
diff
changeset
|
161 |
y = 0; |
155956db09e9
(svn r9420) -Fix [FS#701]: crashes when the chatbox would be drawn outside of the main window.
rubidium
parents:
6248
diff
changeset
|
162 |
} |
155956db09e9
(svn r9420) -Fix [FS#701]: crashes when the chatbox would be drawn outside of the main window.
rubidium
parents:
6248
diff
changeset
|
163 |
if (x + width >= _screen.width) { |
155956db09e9
(svn r9420) -Fix [FS#701]: crashes when the chatbox would be drawn outside of the main window.
rubidium
parents:
6248
diff
changeset
|
164 |
width = _screen.width - x; |
155956db09e9
(svn r9420) -Fix [FS#701]: crashes when the chatbox would be drawn outside of the main window.
rubidium
parents:
6248
diff
changeset
|
165 |
} |
6374
0de6e30b49db
(svn r9437) -Fix (r9420): dedicated server crashed when the y part of the resolution was less than 10.
rubidium
parents:
6366
diff
changeset
|
166 |
if (width <= 0 || height <= 0) return; |
6366
155956db09e9
(svn r9420) -Fix [FS#701]: crashes when the chatbox would be drawn outside of the main window.
rubidium
parents:
6248
diff
changeset
|
167 |
|
7454
e55eea8c05c7
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7170
diff
changeset
|
168 |
_chatmessage_visible = false; |
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
|
169 |
/* Put our 'shot' back to the screen */ |
7454
e55eea8c05c7
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7170
diff
changeset
|
170 |
blitter->CopyFromBuffer(blitter->MoveTo(_screen.dst_ptr, x, y), _chatmessage_backup, width, height); |
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
|
171 |
/* And make sure it is updated next time */ |
7170
923946ec324f
(svn r10444) -Codechange: switch to c++ classes and inheritance for sound/music/video drivers, using self-registration based on the blitter-model.
peter1138
parents:
7006
diff
changeset
|
172 |
_video_driver->MakeDirty(x, y, width, height); |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
173 |
|
7454
e55eea8c05c7
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7170
diff
changeset
|
174 |
_chatmessage_dirty = true; |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
175 |
} |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
176 |
} |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
177 |
|
6422
6679df1c05ba
(svn r9558) -Documentation: doxygen and comment changes: 'T' now. Almost done
belugas
parents:
6374
diff
changeset
|
178 |
/** Check if a message is expired every day */ |
7454
e55eea8c05c7
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7170
diff
changeset
|
179 |
void ChatMessageDailyLoop() |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
180 |
{ |
2639 | 181 |
uint i; |
182 |
||
1595
fda318dddab5
(svn r2099) -Fix: no longer chat-messages hang when the game wraps around 2090
truelight
parents:
1569
diff
changeset
|
183 |
for (i = 0; i < MAX_CHAT_MESSAGES; i++) { |
7454
e55eea8c05c7
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7170
diff
changeset
|
184 |
ChatMessage *cmsg = &_chatmsg_list[i]; |
e55eea8c05c7
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7170
diff
changeset
|
185 |
if (cmsg->message[0] == '\0') continue; |
1595
fda318dddab5
(svn r2099) -Fix: no longer chat-messages hang when the game wraps around 2090
truelight
parents:
1569
diff
changeset
|
186 |
|
4957
44b747809879
(svn r6956) -Feature: Increase the chatbuffer of chat messages. Messages longer than the allocated
Darkvater
parents:
4956
diff
changeset
|
187 |
/* Message has expired, remove from the list */ |
7454
e55eea8c05c7
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7170
diff
changeset
|
188 |
if (cmsg->end_date < _date) { |
1595
fda318dddab5
(svn r2099) -Fix: no longer chat-messages hang when the game wraps around 2090
truelight
parents:
1569
diff
changeset
|
189 |
/* Move the remaining messages over the current message */ |
7454
e55eea8c05c7
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7170
diff
changeset
|
190 |
if (i != MAX_CHAT_MESSAGES - 1) memmove(cmsg, cmsg + 1, sizeof(*cmsg) * (MAX_CHAT_MESSAGES - i - 1)); |
1595
fda318dddab5
(svn r2099) -Fix: no longer chat-messages hang when the game wraps around 2090
truelight
parents:
1569
diff
changeset
|
191 |
|
fda318dddab5
(svn r2099) -Fix: no longer chat-messages hang when the game wraps around 2090
truelight
parents:
1569
diff
changeset
|
192 |
/* Mark the last item as empty */ |
7454
e55eea8c05c7
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7170
diff
changeset
|
193 |
_chatmsg_list[MAX_CHAT_MESSAGES - 1].message[0] = '\0'; |
e55eea8c05c7
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7170
diff
changeset
|
194 |
_chatmessage_dirty = true; |
1595
fda318dddab5
(svn r2099) -Fix: no longer chat-messages hang when the game wraps around 2090
truelight
parents:
1569
diff
changeset
|
195 |
|
fda318dddab5
(svn r2099) -Fix: no longer chat-messages hang when the game wraps around 2090
truelight
parents:
1569
diff
changeset
|
196 |
/* Go one item back, because we moved the array 1 to the left */ |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
197 |
i--; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
198 |
} |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
199 |
} |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
200 |
} |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
201 |
|
7454
e55eea8c05c7
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7170
diff
changeset
|
202 |
/** Draw the chat message-box */ |
e55eea8c05c7
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7170
diff
changeset
|
203 |
void DrawChatMessage() |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
204 |
{ |
6937
40c760fcf1f6
(svn r10190) -Codechange: merged renderer and blitter to one single class API: blitter
truelight
parents:
6878
diff
changeset
|
205 |
Blitter *blitter = BlitterFactoryBase::GetCurrentBlitter(); |
7454
e55eea8c05c7
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7170
diff
changeset
|
206 |
if (!_chatmessage_dirty) return; |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
207 |
|
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
|
208 |
/* First undraw if needed */ |
7454
e55eea8c05c7
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7170
diff
changeset
|
209 |
UndrawChatMessage(); |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
210 |
|
4959
9a25901ce3e6
(svn r6958) -Fix (r6956): GCC warning (thx Tron) and a coding style forgotten in r6957
Darkvater
parents:
4958
diff
changeset
|
211 |
if (_iconsole_mode == ICONSOLE_FULL) return; |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
212 |
|
1595
fda318dddab5
(svn r2099) -Fix: no longer chat-messages hang when the game wraps around 2090
truelight
parents:
1569
diff
changeset
|
213 |
/* Check if we have anything to draw at all */ |
7454
e55eea8c05c7
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7170
diff
changeset
|
214 |
uint count = GetChatMessageCount(); |
4960
92987006dcca
(svn r6959) -Codechange: Move GfxFillRect() out of the chat-message drawing loop since we already
Darkvater
parents:
4959
diff
changeset
|
215 |
if (count == 0) return; |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
216 |
|
7454
e55eea8c05c7
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7170
diff
changeset
|
217 |
int x = _chatmsg_box.x; |
e55eea8c05c7
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7170
diff
changeset
|
218 |
int y = _screen.height - _chatmsg_box.y - _chatmsg_box.height; |
e55eea8c05c7
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7170
diff
changeset
|
219 |
int width = _chatmsg_box.width; |
e55eea8c05c7
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7170
diff
changeset
|
220 |
int height = _chatmsg_box.height; |
6366
155956db09e9
(svn r9420) -Fix [FS#701]: crashes when the chatbox would be drawn outside of the main window.
rubidium
parents:
6248
diff
changeset
|
221 |
if (y < 0) { |
7454
e55eea8c05c7
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7170
diff
changeset
|
222 |
height = max(height + y, min(_chatmsg_box.height, _screen.height)); |
6366
155956db09e9
(svn r9420) -Fix [FS#701]: crashes when the chatbox would be drawn outside of the main window.
rubidium
parents:
6248
diff
changeset
|
223 |
y = 0; |
155956db09e9
(svn r9420) -Fix [FS#701]: crashes when the chatbox would be drawn outside of the main window.
rubidium
parents:
6248
diff
changeset
|
224 |
} |
155956db09e9
(svn r9420) -Fix [FS#701]: crashes when the chatbox would be drawn outside of the main window.
rubidium
parents:
6248
diff
changeset
|
225 |
if (x + width >= _screen.width) { |
155956db09e9
(svn r9420) -Fix [FS#701]: crashes when the chatbox would be drawn outside of the main window.
rubidium
parents:
6248
diff
changeset
|
226 |
width = _screen.width - x; |
155956db09e9
(svn r9420) -Fix [FS#701]: crashes when the chatbox would be drawn outside of the main window.
rubidium
parents:
6248
diff
changeset
|
227 |
} |
6374
0de6e30b49db
(svn r9437) -Fix (r9420): dedicated server crashed when the y part of the resolution was less than 10.
rubidium
parents:
6366
diff
changeset
|
228 |
if (width <= 0 || height <= 0) return; |
0de6e30b49db
(svn r9437) -Fix (r9420): dedicated server crashed when the y part of the resolution was less than 10.
rubidium
parents:
6366
diff
changeset
|
229 |
|
7454
e55eea8c05c7
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7170
diff
changeset
|
230 |
assert(blitter->BufferSize(width, height) < (int)sizeof(_chatmessage_backup)); |
6985
d50d59dca7c1
(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:
6937
diff
changeset
|
231 |
|
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
|
232 |
/* Make a copy of the screen as it is before painting (for undraw) */ |
7454
e55eea8c05c7
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7170
diff
changeset
|
233 |
blitter->CopyToBuffer(blitter->MoveTo(_screen.dst_ptr, x, y), _chatmessage_backup, width, height); |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
234 |
|
4960
92987006dcca
(svn r6959) -Codechange: Move GfxFillRect() out of the chat-message drawing loop since we already
Darkvater
parents:
4959
diff
changeset
|
235 |
_cur_dpi = &_screen; // switch to _screen painting |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
236 |
|
7454
e55eea8c05c7
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7170
diff
changeset
|
237 |
/* Paint a half-transparent box behind the chat messages */ |
4960
92987006dcca
(svn r6959) -Codechange: Move GfxFillRect() out of the chat-message drawing loop since we already
Darkvater
parents:
4959
diff
changeset
|
238 |
GfxFillRect( |
7454
e55eea8c05c7
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7170
diff
changeset
|
239 |
_chatmsg_box.x, |
e55eea8c05c7
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7170
diff
changeset
|
240 |
_screen.height - _chatmsg_box.y - count * 13 - 2, |
e55eea8c05c7
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7170
diff
changeset
|
241 |
_chatmsg_box.x + _chatmsg_box.width - 1, |
e55eea8c05c7
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7170
diff
changeset
|
242 |
_screen.height - _chatmsg_box.y - 2, |
5668
36b39f4a9032
(svn r8128) -Codechange: Split sprite and palette remap into separate 32 bit values.
peter1138
parents:
5587
diff
changeset
|
243 |
PALETTE_TO_TRANSPARENT | (1 << USE_COLORTABLE) // black, but with some alpha for background |
4960
92987006dcca
(svn r6959) -Codechange: Move GfxFillRect() out of the chat-message drawing loop since we already
Darkvater
parents:
4959
diff
changeset
|
244 |
); |
1595
fda318dddab5
(svn r2099) -Fix: no longer chat-messages hang when the game wraps around 2090
truelight
parents:
1569
diff
changeset
|
245 |
|
7454
e55eea8c05c7
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7170
diff
changeset
|
246 |
/* Paint the chat messages starting with the lowest at the bottom */ |
6366
155956db09e9
(svn r9420) -Fix [FS#701]: crashes when the chatbox would be drawn outside of the main window.
rubidium
parents:
6248
diff
changeset
|
247 |
for (uint y = 13; count-- != 0; y += 13) { |
7454
e55eea8c05c7
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7170
diff
changeset
|
248 |
DoDrawString(_chatmsg_list[count].message, _chatmsg_box.x + 3, _screen.height - _chatmsg_box.y - y + 1, _chatmsg_list[count].color); |
6492
286a52449b54
(svn r9673) -Cleanup: remove spaces before tabs and replace non-indenting tabs with spaces.
rubidium
parents:
6453
diff
changeset
|
249 |
} |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
250 |
|
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
|
251 |
/* Make sure the data is updated next flush */ |
7170
923946ec324f
(svn r10444) -Codechange: switch to c++ classes and inheritance for sound/music/video drivers, using self-registration based on the blitter-model.
peter1138
parents:
7006
diff
changeset
|
252 |
_video_driver->MakeDirty(x, y, width, height); |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
253 |
|
7454
e55eea8c05c7
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7170
diff
changeset
|
254 |
_chatmessage_visible = true; |
e55eea8c05c7
(svn r10932) -Codechange: replace "text" with "chat" for the chat related function and variables.
rubidium
parents:
7170
diff
changeset
|
255 |
_chatmessage_dirty = false; |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
256 |
} |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
257 |
|
7545
d44e19c5671e
(svn r11065) -Documentation [FS#1186]: of the dirty marking/repainting subsystem. Patch by Progman.
rubidium
parents:
7535
diff
changeset
|
258 |
/* Text Effects */ |
d44e19c5671e
(svn r11065) -Documentation [FS#1186]: of the dirty marking/repainting subsystem. Patch by Progman.
rubidium
parents:
7535
diff
changeset
|
259 |
/** |
d44e19c5671e
(svn r11065) -Documentation [FS#1186]: of the dirty marking/repainting subsystem. Patch by Progman.
rubidium
parents:
7535
diff
changeset
|
260 |
* 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
|
261 |
* |
d44e19c5671e
(svn r11065) -Documentation [FS#1186]: of the dirty marking/repainting subsystem. Patch by Progman.
rubidium
parents:
7535
diff
changeset
|
262 |
* 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
|
263 |
* |
d44e19c5671e
(svn r11065) -Documentation [FS#1186]: of the dirty marking/repainting subsystem. Patch by Progman.
rubidium
parents:
7535
diff
changeset
|
264 |
* @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
|
265 |
* @ingroup dirty |
d44e19c5671e
(svn r11065) -Documentation [FS#1186]: of the dirty marking/repainting subsystem. Patch by Progman.
rubidium
parents:
7535
diff
changeset
|
266 |
*/ |
0 | 267 |
static void MarkTextEffectAreaDirty(TextEffect *te) |
268 |
{ |
|
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
|
269 |
/* Width and height of the text effect are doubled, so they are correct in both zoom out levels 1x and 2x. */ |
0 | 270 |
MarkAllViewportsDirty( |
271 |
te->x, |
|
272 |
te->y - 1, |
|
273 |
(te->right - te->x)*2 + te->x + 1, |
|
274 |
(te->bottom - (te->y - 1)) * 2 + (te->y - 1) + 1 |
|
275 |
); |
|
276 |
} |
|
277 |
||
6998
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
278 |
TextEffectID AddTextEffect(StringID msg, int x, int y, uint16 duration, TextEffectMode mode) |
0 | 279 |
{ |
280 |
TextEffect *te; |
|
281 |
int w; |
|
282 |
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
|
283 |
TextEffectID i; |
0 | 284 |
|
6998
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
285 |
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
|
286 |
|
6998
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
287 |
/* 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
|
288 |
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
|
289 |
if (_text_effect_list[i].string_id == INVALID_STRING_ID) break; |
0 | 290 |
} |
291 |
||
6998
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
292 |
/* 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
|
293 |
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
|
294 |
_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
|
295 |
_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
|
296 |
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
|
297 |
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
|
298 |
} |
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
299 |
|
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
300 |
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
|
301 |
|
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
302 |
/* Start defining this object */ |
0 | 303 |
te->string_id = msg; |
304 |
te->duration = duration; |
|
305 |
te->y = y - 5; |
|
306 |
te->bottom = y + 5; |
|
534
306bc86eb23e
(svn r901) Small step in the process to clean up the DPARAM mess:
tron
parents:
425
diff
changeset
|
307 |
te->params_1 = GetDParam(0); |
306bc86eb23e
(svn r901) Small step in the process to clean up the DPARAM mess:
tron
parents:
425
diff
changeset
|
308 |
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
|
309 |
te->mode = mode; |
0 | 310 |
|
4912
0f51b47cb983
(svn r6884) -Codechange: Add strict bounds checking in string formatting system.
Darkvater
parents:
4609
diff
changeset
|
311 |
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
|
312 |
w = GetStringBoundingBox(buffer).width; |
0 | 313 |
|
314 |
te->x = x - (w >> 1); |
|
315 |
te->right = x + (w >> 1) - 1; |
|
316 |
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
|
317 |
|
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
318 |
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
|
319 |
} |
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
320 |
|
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
321 |
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
|
322 |
{ |
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
323 |
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
|
324 |
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
|
325 |
|
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
326 |
/* 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
|
327 |
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
|
328 |
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
|
329 |
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
|
330 |
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
|
331 |
|
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
|
332 |
/* 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
|
333 |
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
|
334 |
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
|
335 |
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
|
336 |
|
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
|
337 |
/* 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
|
338 |
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
|
339 |
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
|
340 |
|
6998
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
341 |
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
|
342 |
} |
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
343 |
|
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
344 |
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
|
345 |
{ |
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
346 |
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
|
347 |
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
|
348 |
|
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
349 |
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
|
350 |
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
|
351 |
te->string_id = INVALID_STRING_ID; |
0 | 352 |
} |
353 |
||
354 |
static void MoveTextEffect(TextEffect *te) |
|
355 |
{ |
|
6998
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
356 |
/* 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
|
357 |
if (te->duration == 0xFFFF) return; |
0 | 358 |
if (te->duration < 8) { |
2470 | 359 |
te->string_id = INVALID_STRING_ID; |
0 | 360 |
} else { |
2549 | 361 |
te->duration -= 8; |
0 | 362 |
te->y--; |
363 |
te->bottom--; |
|
364 |
} |
|
365 |
MarkTextEffectAreaDirty(te); |
|
366 |
} |
|
367 |
||
6247 | 368 |
void MoveAllTextEffects() |
0 | 369 |
{ |
6998
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
370 |
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
|
371 |
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
|
372 |
if (te->string_id != INVALID_STRING_ID && te->mode == TE_RISING) MoveTextEffect(te); |
0 | 373 |
} |
374 |
} |
|
375 |
||
6247 | 376 |
void InitTextEffects() |
0 | 377 |
{ |
6998
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
378 |
if (_text_effect_list == NULL) _text_effect_list = MallocT<TextEffect>(_num_text_effects); |
0 | 379 |
|
6998
39e783d3816c
(svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents:
6988
diff
changeset
|
380 |
for (TextEffectID i = 0; i < _num_text_effects; i++) _text_effect_list[i].string_id = INVALID_STRING_ID; |
0 | 381 |
} |
382 |
||
383 |
void DrawTextEffects(DrawPixelInfo *dpi) |
|
384 |
{ |
|
4469 | 385 |
switch (dpi->zoom) { |
6624
880e29b1f25e
(svn r9844) -Codechange: replace zoomlevel with an enum
truelight
parents:
6492
diff
changeset
|
386 |
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
|
387 |
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
|
388 |
TextEffect *te = &_text_effect_list[i]; |
4469 | 389 |
if (te->string_id != INVALID_STRING_ID && |
390 |
dpi->left <= te->right && |
|
391 |
dpi->top <= te->bottom && |
|
392 |
dpi->left + dpi->width > te->x && |
|
393 |
dpi->top + dpi->height > te->y) { |
|
7849
0a1c0af2c96c
(svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
7749
diff
changeset
|
394 |
if (te->mode == TE_RISING || (_patches.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
|
395 |
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
|
396 |
} |
4469 | 397 |
} |
398 |
} |
|
399 |
break; |
|
0 | 400 |
|
6624
880e29b1f25e
(svn r9844) -Codechange: replace zoomlevel with an enum
truelight
parents:
6492
diff
changeset
|
401 |
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
|
402 |
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
|
403 |
TextEffect *te = &_text_effect_list[i]; |
4469 | 404 |
if (te->string_id != INVALID_STRING_ID && |
405 |
dpi->left <= te->right * 2 - te->x && |
|
406 |
dpi->top <= te->bottom * 2 - te->y && |
|
407 |
dpi->left + dpi->width > te->x && |
|
408 |
dpi->top + dpi->height > te->y) { |
|
7849
0a1c0af2c96c
(svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
7749
diff
changeset
|
409 |
if (te->mode == TE_RISING || (_patches.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
|
410 |
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
|
411 |
} |
4469 | 412 |
} |
413 |
} |
|
414 |
break; |
|
6624
880e29b1f25e
(svn r9844) -Codechange: replace zoomlevel with an enum
truelight
parents:
6492
diff
changeset
|
415 |
|
6626
207875b9069a
(svn r9846) -Codechange: introduced ZOOM_LVL_MIN and ZOOM_LVL_MAX for the obvious reasons
truelight
parents:
6624
diff
changeset
|
416 |
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
|
417 |
case ZOOM_LVL_OUT_8X: |
6624
880e29b1f25e
(svn r9844) -Codechange: replace zoomlevel with an enum
truelight
parents:
6492
diff
changeset
|
418 |
break; |
6626
207875b9069a
(svn r9846) -Codechange: introduced ZOOM_LVL_MIN and ZOOM_LVL_MAX for the obvious reasons
truelight
parents:
6624
diff
changeset
|
419 |
|
207875b9069a
(svn r9846) -Codechange: introduced ZOOM_LVL_MIN and ZOOM_LVL_MAX for the obvious reasons
truelight
parents:
6624
diff
changeset
|
420 |
default: NOT_REACHED(); |
0 | 421 |
} |
422 |
} |
|
423 |
||
7694
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
424 |
/** The table/list with animated tiles. */ |
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
425 |
TileIndex *_animated_tile_list = NULL; |
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
426 |
/** The number of animated tiles in the current state. */ |
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
427 |
uint _animated_tile_count = 0; |
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
428 |
/** The number of slots for animated tiles allocated currently. */ |
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
429 |
static uint _animated_tile_allocated = 0; |
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
430 |
|
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
431 |
/** |
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
432 |
* Removes the given tile from the animated tile table. |
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
433 |
* @param tile the tile to remove |
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
434 |
*/ |
1977
37bbebf94434
(svn r2483) Replace almost 500 "uint tile" (and variants) with "TileIndex tile"
tron
parents:
1891
diff
changeset
|
435 |
void DeleteAnimatedTile(TileIndex tile) |
0 | 436 |
{ |
7694
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
437 |
for (TileIndex *ti = _animated_tile_list; ti < _animated_tile_list + _animated_tile_count; ti++) { |
1977
37bbebf94434
(svn r2483) Replace almost 500 "uint tile" (and variants) with "TileIndex tile"
tron
parents:
1891
diff
changeset
|
438 |
if (tile == *ti) { |
7749
3ed7d92bd966
(svn r11286) -Fix (r11228): NewGRF industries assume that the order of animation always stays the same. Patch by Csaboka.
rubidium
parents:
7694
diff
changeset
|
439 |
/* Remove the hole |
3ed7d92bd966
(svn r11286) -Fix (r11228): NewGRF industries assume that the order of animation always stays the same. Patch by Csaboka.
rubidium
parents:
7694
diff
changeset
|
440 |
* The order of the remaining elements must stay the same, otherwise the animation loop |
3ed7d92bd966
(svn r11286) -Fix (r11228): NewGRF industries assume that the order of animation always stays the same. Patch by Csaboka.
rubidium
parents:
7694
diff
changeset
|
441 |
* may miss a tile; that's why we must use memmove instead of just moving the last element. |
3ed7d92bd966
(svn r11286) -Fix (r11228): NewGRF industries assume that the order of animation always stays the same. Patch by Csaboka.
rubidium
parents:
7694
diff
changeset
|
442 |
*/ |
3ed7d92bd966
(svn r11286) -Fix (r11228): NewGRF industries assume that the order of animation always stays the same. Patch by Csaboka.
rubidium
parents:
7694
diff
changeset
|
443 |
memmove(ti, ti + 1, (_animated_tile_list + _animated_tile_count - (ti + 1)) * sizeof(*ti)); |
7694
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
444 |
_animated_tile_count--; |
0 | 445 |
MarkTileDirtyByTile(tile); |
446 |
return; |
|
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
0
diff
changeset
|
447 |
} |
0 | 448 |
} |
449 |
} |
|
450 |
||
7694
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
451 |
/** |
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
452 |
* Add the given tile to the animated tile table (if it does not exist |
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
453 |
* on that table yet). Also increases the size of the table if necessary. |
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
454 |
* @param tile the tile to make animated |
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
455 |
*/ |
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
456 |
void AddAnimatedTile(TileIndex tile) |
0 | 457 |
{ |
7694
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
458 |
MarkTileDirtyByTile(tile); |
0 | 459 |
|
7694
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
460 |
for (const TileIndex *ti = _animated_tile_list; ti < _animated_tile_list + _animated_tile_count; ti++) { |
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
461 |
if (tile == *ti) return; |
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
0
diff
changeset
|
462 |
} |
0 | 463 |
|
7694
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
464 |
/* Table not large enough, so make it larger */ |
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
465 |
if (_animated_tile_count == _animated_tile_allocated) { |
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
466 |
_animated_tile_allocated *= 2; |
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
467 |
_animated_tile_list = ReallocT<TileIndex>(_animated_tile_list, _animated_tile_allocated); |
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
468 |
} |
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
469 |
|
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
470 |
_animated_tile_list[_animated_tile_count] = tile; |
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
471 |
_animated_tile_count++; |
0 | 472 |
} |
473 |
||
7694
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
474 |
/** |
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
475 |
* Animate all tiles in the animated tile list, i.e.\ call AnimateTile on them. |
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
476 |
*/ |
6247 | 477 |
void AnimateAnimatedTiles() |
0 | 478 |
{ |
7749
3ed7d92bd966
(svn r11286) -Fix (r11228): NewGRF industries assume that the order of animation always stays the same. Patch by Csaboka.
rubidium
parents:
7694
diff
changeset
|
479 |
const TileIndex *ti = _animated_tile_list; |
3ed7d92bd966
(svn r11286) -Fix (r11228): NewGRF industries assume that the order of animation always stays the same. Patch by Csaboka.
rubidium
parents:
7694
diff
changeset
|
480 |
while (ti < _animated_tile_list + _animated_tile_count) { |
3ed7d92bd966
(svn r11286) -Fix (r11228): NewGRF industries assume that the order of animation always stays the same. Patch by Csaboka.
rubidium
parents:
7694
diff
changeset
|
481 |
const TileIndex curr = *ti; |
3ed7d92bd966
(svn r11286) -Fix (r11228): NewGRF industries assume that the order of animation always stays the same. Patch by Csaboka.
rubidium
parents:
7694
diff
changeset
|
482 |
AnimateTile(curr); |
3ed7d92bd966
(svn r11286) -Fix (r11228): NewGRF industries assume that the order of animation always stays the same. Patch by Csaboka.
rubidium
parents:
7694
diff
changeset
|
483 |
/* During the AnimateTile call, DeleteAnimatedTile could have been called, |
3ed7d92bd966
(svn r11286) -Fix (r11228): NewGRF industries assume that the order of animation always stays the same. Patch by Csaboka.
rubidium
parents:
7694
diff
changeset
|
484 |
* deleting an element we've already processed and pushing the rest one |
3ed7d92bd966
(svn r11286) -Fix (r11228): NewGRF industries assume that the order of animation always stays the same. Patch by Csaboka.
rubidium
parents:
7694
diff
changeset
|
485 |
* slot to the left. We can detect this by checking whether the index |
3ed7d92bd966
(svn r11286) -Fix (r11228): NewGRF industries assume that the order of animation always stays the same. Patch by Csaboka.
rubidium
parents:
7694
diff
changeset
|
486 |
* in the current slot has changed - if it has, an element has been deleted, |
3ed7d92bd966
(svn r11286) -Fix (r11228): NewGRF industries assume that the order of animation always stays the same. Patch by Csaboka.
rubidium
parents:
7694
diff
changeset
|
487 |
* and we should process the current slot again instead of going forward. |
3ed7d92bd966
(svn r11286) -Fix (r11228): NewGRF industries assume that the order of animation always stays the same. Patch by Csaboka.
rubidium
parents:
7694
diff
changeset
|
488 |
* NOTE: this will still break if more than one animated tile is being |
3ed7d92bd966
(svn r11286) -Fix (r11228): NewGRF industries assume that the order of animation always stays the same. Patch by Csaboka.
rubidium
parents:
7694
diff
changeset
|
489 |
* deleted during the same AnimateTile call, but no code seems to |
3ed7d92bd966
(svn r11286) -Fix (r11228): NewGRF industries assume that the order of animation always stays the same. Patch by Csaboka.
rubidium
parents:
7694
diff
changeset
|
490 |
* be doing this anyway. |
3ed7d92bd966
(svn r11286) -Fix (r11228): NewGRF industries assume that the order of animation always stays the same. Patch by Csaboka.
rubidium
parents:
7694
diff
changeset
|
491 |
*/ |
3ed7d92bd966
(svn r11286) -Fix (r11228): NewGRF industries assume that the order of animation always stays the same. Patch by Csaboka.
rubidium
parents:
7694
diff
changeset
|
492 |
if (*ti == curr) ++ti; |
0 | 493 |
} |
494 |
} |
|
495 |
||
7694
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
496 |
/** |
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
497 |
* Initialize all animated tile variables to some known begin point |
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
498 |
*/ |
6247 | 499 |
void InitializeAnimatedTiles() |
0 | 500 |
{ |
7694
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
501 |
_animated_tile_list = ReallocT<TileIndex>(_animated_tile_list, 256); |
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
502 |
_animated_tile_count = 0; |
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
503 |
_animated_tile_allocated = 256; |
0 | 504 |
} |
505 |
||
7694
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
506 |
/** |
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
507 |
* Save the ANIT chunk. |
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
508 |
*/ |
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
509 |
static void Save_ANIT() |
0 | 510 |
{ |
7694
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
511 |
SlSetLength(_animated_tile_count * sizeof(*_animated_tile_list)); |
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
512 |
SlArray(_animated_tile_list, _animated_tile_count, SLE_UINT32); |
0 | 513 |
} |
514 |
||
7694
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
515 |
/** |
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
516 |
* Load the ANIT chunk; the chunk containing the animated tiles. |
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
517 |
*/ |
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
518 |
static void Load_ANIT() |
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
519 |
{ |
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
520 |
/* Before version 80 we did NOT have a variable length animated tile table */ |
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
521 |
if (CheckSavegameVersion(80)) { |
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
522 |
/* In pre version 6, we has 16bit per tile, now we have 32bit per tile, convert it ;) */ |
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
523 |
SlArray(_animated_tile_list, 256, CheckSavegameVersion(6) ? (SLE_FILE_U16 | SLE_VAR_U32) : SLE_UINT32); |
0 | 524 |
|
7694
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
525 |
for (_animated_tile_count = 0; _animated_tile_count < 256; _animated_tile_count++) { |
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
526 |
if (_animated_tile_list[_animated_tile_count] == 0) break; |
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
527 |
} |
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
528 |
return; |
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
529 |
} |
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
530 |
|
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
531 |
_animated_tile_count = SlGetFieldLength() / sizeof(*_animated_tile_list); |
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
532 |
|
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
533 |
/* Determine a nice rounded size for the amount of allocated tiles */ |
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
534 |
_animated_tile_allocated = 256; |
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
535 |
while (_animated_tile_allocated < _animated_tile_count) _animated_tile_allocated *= 2; |
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
536 |
|
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
537 |
_animated_tile_list = ReallocT<TileIndex>(_animated_tile_list, _animated_tile_allocated); |
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
538 |
SlArray(_animated_tile_list, _animated_tile_count, SLE_UINT32); |
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
539 |
} |
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
540 |
|
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
541 |
/** |
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
542 |
* "Definition" imported by the saveload code to be able to load and save |
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
543 |
* the animated tile table. |
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
544 |
*/ |
5587
167d9a91ef02
(svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents:
5584
diff
changeset
|
545 |
extern const ChunkHandler _animated_tile_chunk_handlers[] = { |
7694
3c4a0b7894cd
(svn r11228) -Codechange: implement the "moreanimation" feature of TTDP, so we can properly support newindustries.
rubidium
parents:
7545
diff
changeset
|
546 |
{ 'ANIT', Save_ANIT, Load_ANIT, CH_RIFF | CH_LAST}, |
0 | 547 |
}; |