projects
/
rocksndiamonds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
rnd-20070208-2-src
[rocksndiamonds.git]
/
src
/
tools.c
diff --git
a/src/tools.c
b/src/tools.c
index bed28ceee1c3f75979b3f915774d5fb9f3757363..2970cfa911c0e6b5dcbe6a6eafb4ec1497993063 100644
(file)
--- a/
src/tools.c
+++ b/
src/tools.c
@@
-1410,13
+1410,17
@@
void DrawScreenField(int x, int y)
boolean cut_mode = NO_CUTTING;
if (element == EL_QUICKSAND_EMPTYING ||
boolean cut_mode = NO_CUTTING;
if (element == EL_QUICKSAND_EMPTYING ||
+ element == EL_QUICKSAND_FAST_EMPTYING ||
element == EL_MAGIC_WALL_EMPTYING ||
element == EL_BD_MAGIC_WALL_EMPTYING ||
element == EL_MAGIC_WALL_EMPTYING ||
element == EL_BD_MAGIC_WALL_EMPTYING ||
+ element == EL_DC_MAGIC_WALL_EMPTYING ||
element == EL_AMOEBA_DROPPING)
cut_mode = CUT_ABOVE;
else if (element == EL_QUICKSAND_FILLING ||
element == EL_AMOEBA_DROPPING)
cut_mode = CUT_ABOVE;
else if (element == EL_QUICKSAND_FILLING ||
+ element == EL_QUICKSAND_FAST_FILLING ||
element == EL_MAGIC_WALL_FILLING ||
element == EL_MAGIC_WALL_FILLING ||
- element == EL_BD_MAGIC_WALL_FILLING)
+ element == EL_BD_MAGIC_WALL_FILLING ||
+ element == EL_DC_MAGIC_WALL_FILLING)
cut_mode = CUT_BELOW;
if (cut_mode == CUT_ABOVE)
cut_mode = CUT_BELOW;
if (cut_mode == CUT_ABOVE)
@@
-1458,8
+1462,10
@@
void DrawScreenField(int x, int y)
content_old = Store[oldx][oldy];
if (element_old == EL_QUICKSAND_EMPTYING ||
content_old = Store[oldx][oldy];
if (element_old == EL_QUICKSAND_EMPTYING ||
+ element_old == EL_QUICKSAND_FAST_EMPTYING ||
element_old == EL_MAGIC_WALL_EMPTYING ||
element_old == EL_BD_MAGIC_WALL_EMPTYING ||
element_old == EL_MAGIC_WALL_EMPTYING ||
element_old == EL_BD_MAGIC_WALL_EMPTYING ||
+ element_old == EL_DC_MAGIC_WALL_EMPTYING ||
element_old == EL_AMOEBA_DROPPING)
cut_mode = CUT_ABOVE;
element_old == EL_AMOEBA_DROPPING)
cut_mode = CUT_ABOVE;
@@
-1606,9
+1612,17
@@
void AnimateEnvelope(int envelope_nr, int anim_mode, int action)
for (yy = 0; yy < ysize; yy++) for (xx = 0; xx < xsize; xx++)
DrawEnvelopeBackground(envelope_nr, sx,sy, xx,yy, xsize, ysize, font_nr);
for (yy = 0; yy < ysize; yy++) for (xx = 0; xx < xsize; xx++)
DrawEnvelopeBackground(envelope_nr, sx,sy, xx,yy, xsize, ysize, font_nr);
+#if 1
+ DrawTextBuffer(SX + sx + font_width, SY + sy + font_height,
+ level.envelope[envelope_nr].text, font_nr, max_xsize,
+ xsize - 2, ysize - 2, mask_mode,
+ level.envelope[envelope_nr].autowrap,
+ level.envelope[envelope_nr].centered);
+#else
DrawTextToTextArea(SX + sx + font_width, SY + sy + font_height,
level.envelope[envelope_nr].text, font_nr, max_xsize,
xsize - 2, ysize - 2, mask_mode);
DrawTextToTextArea(SX + sx + font_width, SY + sy + font_height,
level.envelope[envelope_nr].text, font_nr, max_xsize,
xsize - 2, ysize - 2, mask_mode);
+#endif
redraw_mask |= REDRAW_FIELD | REDRAW_FROM_BACKBUFFER;
BackToFront();
redraw_mask |= REDRAW_FIELD | REDRAW_FROM_BACKBUFFER;
BackToFront();
@@
-1772,7
+1786,7
@@
static void DrawPreviewLevelExt(int from_x, int from_y)
#define MICROLABEL_IMPORTED_BY_HEAD 6
#define MICROLABEL_IMPORTED_BY 7
#define MICROLABEL_IMPORTED_BY_HEAD 6
#define MICROLABEL_IMPORTED_BY 7
-static int getMaxTextLength(struct
Menu
PosInfo *pos, int font_nr)
+static int getMaxTextLength(struct
Text
PosInfo *pos, int font_nr)
{
int max_text_width = SXSIZE;
int font_width = getFontWidth(font_nr);
{
int max_text_width = SXSIZE;
int font_width = getFontWidth(font_nr);
@@
-1789,7
+1803,7
@@
static int getMaxTextLength(struct MenuPosInfo *pos, int font_nr)
static void DrawPreviewLevelLabelExt(int mode)
{
static void DrawPreviewLevelLabelExt(int mode)
{
- struct
Menu
PosInfo *pos = &menu.main.text.level_info_2;
+ struct
Text
PosInfo *pos = &menu.main.text.level_info_2;
char label_text[MAX_OUTPUT_LINESIZE + 1];
int max_len_label_text;
int font_nr = FONT_TEXT_2;
char label_text[MAX_OUTPUT_LINESIZE + 1];
int max_len_label_text;
int font_nr = FONT_TEXT_2;
@@
-1806,6
+1820,11
@@
static void DrawPreviewLevelLabelExt(int mode)
max_len_label_text = SXSIZE / getFontWidth(font_nr);
#endif
max_len_label_text = SXSIZE / getFontWidth(font_nr);
#endif
+#if 1
+ if (pos->chars != -1)
+ max_len_label_text = pos->chars;
+#endif
+
for (i = 0; i < max_len_label_text; i++)
label_text[i] = ' ';
label_text[max_len_label_text] = '\0';
for (i = 0; i < max_len_label_text; i++)
label_text[i] = ' ';
label_text[max_len_label_text] = '\0';
@@
-1892,7
+1911,7
@@
void DrawPreviewLevel(boolean restart)
if (leveldir_current->name)
{
if (leveldir_current->name)
{
- struct
Menu
PosInfo *pos = &menu.main.text.level_info_1;
+ struct
Text
PosInfo *pos = &menu.main.text.level_info_1;
char label_text[MAX_OUTPUT_LINESIZE + 1];
int font_nr = FONT_TEXT_1;
#if 1
char label_text[MAX_OUTPUT_LINESIZE + 1];
int font_nr = FONT_TEXT_1;
#if 1
@@
-1905,6
+1924,11
@@
void DrawPreviewLevel(boolean restart)
int lxpos, lypos;
#endif
int lxpos, lypos;
#endif
+#if 1
+ if (pos->chars != -1)
+ max_len_label_text = pos->chars;
+#endif
+
strncpy(label_text, leveldir_current->name, max_len_label_text);
label_text[max_len_label_text] = '\0';
strncpy(label_text, leveldir_current->name, max_len_label_text);
label_text[max_len_label_text] = '\0';
@@
-2517,7
+2541,11
@@
boolean Request(char *text, unsigned int req_state)
if (max_word_len > MAX_REQUEST_LINE_FONT1_LEN)
{
max_request_line_len = MAX_REQUEST_LINE_FONT2_LEN;
if (max_word_len > MAX_REQUEST_LINE_FONT1_LEN)
{
max_request_line_len = MAX_REQUEST_LINE_FONT2_LEN;
+#if 1
+ font_nr = FONT_TEXT_1;
+#else
font_nr = FONT_LEVEL_NUMBER;
font_nr = FONT_LEVEL_NUMBER;
+#endif
break;
}
break;
}
@@
-2763,6
+2791,23
@@
boolean Request(char *text, unsigned int req_state)
result = 0;
}
result = 0;
}
+#if 1
+
+ if (game_status == GAME_MODE_PLAYING && local_player->LevelSolved_GameEnd)
+ {
+ HandleGameActions();
+ BackToFront();
+ }
+ else
+ {
+ DoAnimation();
+
+ if (!PendingEvent()) /* delay only if no pending events */
+ Delay(10);
+ }
+
+#else
+
DoAnimation();
#if 1
DoAnimation();
#if 1
@@
-2771,6
+2816,8
@@
boolean Request(char *text, unsigned int req_state)
#else
/* don't eat all CPU time */
Delay(10);
#else
/* don't eat all CPU time */
Delay(10);
+#endif
+
#endif
}
#endif
}
@@
-5405,10
+5452,14
@@
int get_next_element(int element)
{
case EL_QUICKSAND_FILLING: return EL_QUICKSAND_FULL;
case EL_QUICKSAND_EMPTYING: return EL_QUICKSAND_EMPTY;
{
case EL_QUICKSAND_FILLING: return EL_QUICKSAND_FULL;
case EL_QUICKSAND_EMPTYING: return EL_QUICKSAND_EMPTY;
+ case EL_QUICKSAND_FAST_FILLING: return EL_QUICKSAND_FAST_FULL;
+ case EL_QUICKSAND_FAST_EMPTYING: return EL_QUICKSAND_FAST_EMPTY;
case EL_MAGIC_WALL_FILLING: return EL_MAGIC_WALL_FULL;
case EL_MAGIC_WALL_EMPTYING: return EL_MAGIC_WALL_ACTIVE;
case EL_BD_MAGIC_WALL_FILLING: return EL_BD_MAGIC_WALL_FULL;
case EL_BD_MAGIC_WALL_EMPTYING: return EL_BD_MAGIC_WALL_ACTIVE;
case EL_MAGIC_WALL_FILLING: return EL_MAGIC_WALL_FULL;
case EL_MAGIC_WALL_EMPTYING: return EL_MAGIC_WALL_ACTIVE;
case EL_BD_MAGIC_WALL_FILLING: return EL_BD_MAGIC_WALL_FULL;
case EL_BD_MAGIC_WALL_EMPTYING: return EL_BD_MAGIC_WALL_ACTIVE;
+ case EL_DC_MAGIC_WALL_FILLING: return EL_DC_MAGIC_WALL_FULL;
+ case EL_DC_MAGIC_WALL_EMPTYING: return EL_DC_MAGIC_WALL_ACTIVE;
case EL_AMOEBA_DROPPING: return EL_AMOEBA_WET;
default: return element;
case EL_AMOEBA_DROPPING: return EL_AMOEBA_WET;
default: return element;