#define XSN_CHANGE_DELAY 30
#define XSN_CHANGE_FACTOR 3
#define XSN_ALPHA_DEFAULT XSN_ALPHA_VALUE(95)
+#define XSN_ALPHA_VISIBLE XSN_ALPHA_VALUE(50)
#define XSN_DEBUG_STEPS 5
static byte xsn_bits_0[] = { 0x05, 0x02, 0x05 };
static byte xsn_bits_1[] = { 0x22, 0x6b, 0x14, 0x2a, 0x14, 0x6b, 0x22 };
static byte xsn_bits_2[] = { 0x14, 0x08, 0x49, 0x36, 0x49, 0x08, 0x14 };
+char debug_xsn_mode[] = { 76,101,116,32,105,116,32,115,110,111,119,33,0 };
+
+void setHideSetupEntry(void *);
+void removeHideSetupEntry(void *);
+
static struct
{
int size;
struct XsnItem items[XSN_MAX_ITEMS];
Bitmap *bitmap;
+
+ int alpha;
};
static struct Xsn xsn = { 0 };
BlitBitmapMasked(xsn.bitmap, xsn.bitmap, xpos1, xsn.max_height,
xsize, xsn.max_height, xpos1, 0);
- SDLSetAlpha(surface_masked, TRUE, XSN_ALPHA_DEFAULT);
+ SDLSetAlpha(surface_masked, TRUE, xsn.alpha);
for (i = xpos1; i < xpos2; i++)
xsn.height[i] = MIN(xsn.height[i] + shrink, xsn.area_ysize - 1);
if (DelayReached(&check_delay, check_delay_value))
{
percent = (debug ? debug_value * 100 / XSN_DEBUG_STEPS : xsn_percent());
+
+ if (debug)
+ setup.debug.xsn_percent = percent;
+
+ if (setup.debug.xsn_mode != AUTO)
+ percent = setup.debug.xsn_percent;
+
+ setup.debug.xsn_percent = percent;
+
active = (percent > 0);
+
+ if ((active && !active_last) || setup.debug.xsn_mode != AUTO)
+ removeHideSetupEntry(&setup.debug.xsn_mode);
+ else if (!active && active_last)
+ setHideSetupEntry(&setup.debug.xsn_mode);
+
+ if (setup.debug.xsn_mode == FALSE)
+ active = FALSE;
}
else if (tile_cursor.xsn_debug)
{
debug = TRUE;
active = FALSE;
- DelayReached(&check_delay, 0);
+ ResetDelayCounter(&check_delay);
+ setup.debug.xsn_mode = (debug_value > 0);
tile_cursor.xsn_debug = FALSE;
}
if (!active)
return;
- if (!active_last)
- {
- start_delay_value = (debug ? 0 : XSN_RND(XSN_START_DELAY * 2) * 1000);
- started = FALSE;
-
- DelayReached(&start_delay, 0);
-
- reinitialize = TRUE;
- }
-
if (!initialized)
{
xsn.area_xsize = gfx.win_xsize;
initialized = TRUE;
}
+ if (!active_last)
+ {
+ start_delay_value = (debug || setup.debug.xsn_mode == TRUE ? 0 :
+ (XSN_START_DELAY + XSN_RND(XSN_START_DELAY)) * 1000);
+ started = FALSE;
+
+ ResetDelayCounter(&start_delay);
+
+ reinitialize = TRUE;
+ }
+
if (reinitialize)
{
xsn.num_items = 0;
xsn.change_type = 0;
xsn.change_dir = 0;
+ xsn.alpha = XSN_ALPHA_DEFAULT;
+
for (i = 0; i < xsn.max_items; i++)
xsn_init_item(i);
}
SDL_SetColorKey(surface_masked, SET_TRANSPARENT_PIXEL,
SDL_MapRGB(surface_masked->format, 0x00, 0x00, 0x00));
- SDLSetAlpha(surface, TRUE, XSN_ALPHA_DEFAULT);
- SDLSetAlpha(surface_masked, TRUE, XSN_ALPHA_DEFAULT);
+ SDLSetAlpha(surface, TRUE, xsn.alpha);
+ SDLSetAlpha(surface_masked, TRUE, xsn.alpha);
SDLCreateBitmapTextures(xsn.bitmap);
growth_delay_value = XSN_GROWTH_DELAY * 1000;
change_delay_value = XSN_CHANGE_DELAY * 1000;
- DelayReached(&growth_delay, 0);
- DelayReached(&update_delay, 0);
- DelayReached(&change_delay, 0);
+ ResetDelayCounter(&growth_delay);
+ ResetDelayCounter(&update_delay);
+ ResetDelayCounter(&change_delay);
started = TRUE;
}
change_delay_value = xsn.change_delay * 1000;
}
+ int xsn_alpha_dx = (gfx.mouse_y > xsn.area_ysize - xsn.max_height ?
+ (xsn.alpha > XSN_ALPHA_VISIBLE ? -1 : 0) :
+ (xsn.alpha < XSN_ALPHA_DEFAULT ? +1 : 0));
+
+ if (xsn_alpha_dx != 0)
+ {
+ xsn.alpha += xsn_alpha_dx;
+
+ SDLSetAlpha(xsn.bitmap->surface_masked, TRUE, xsn.alpha);
+
+ SDLFreeBitmapTextures(xsn.bitmap);
+ SDLCreateBitmapTextures(xsn.bitmap);
+ }
+
BlitToScreenMasked(xsn.bitmap, 0, 0, xsn.area_xsize, xsn.max_height,
0, xsn.area_ysize - xsn.max_height);