added some configuration options for global animation properties
authorHolger Schemel <info@artsoft.org>
Wed, 20 Jan 2016 20:33:14 +0000 (21:33 +0100)
committerHolger Schemel <info@artsoft.org>
Tue, 2 Feb 2016 19:26:06 +0000 (20:26 +0100)
src/conf_gfx.c
src/init.c
src/libgame/misc.c
src/libgame/system.h
src/main.h

index 461dd9811854a84e3a38b8894c7817bf80b711e8..860f53d4468fcff86bb3ffd3670b94314053b830 100644 (file)
@@ -45,6 +45,8 @@ struct ConfigTypeInfo image_config_suffix[] =
   { ".diggable_like",                  ARG_UNDEFINED,  TYPE_ELEMENT    },
   { ".border_size",                    ARG_UNDEFINED,  TYPE_INTEGER    },
   { ".step_offset",                    "4",            TYPE_INTEGER    },
+  { ".step_xoffset",                   ARG_UNDEFINED,  TYPE_INTEGER    },
+  { ".step_yoffset",                   ARG_UNDEFINED,  TYPE_INTEGER    },
   { ".step_delay",                     "1",            TYPE_INTEGER    },
   { ".direction",                      ARG_UNDEFINED,  TYPE_STRING     },
   { ".position",                       ARG_UNDEFINED,  TYPE_STRING     },
index 9493ab514d6fe22e1493f99fb9659956a0884466..6a48f576d48ae7ae9aa465c1631b823d9ad1dd99 100644 (file)
@@ -1335,8 +1335,12 @@ static void set_graphic_parameters_ext(int graphic, int *parameter,
     g->post_delay_random = parameter[GFX_ARG_POST_DELAY_RANDOM];
 
   /* this is only used for toon animations */
-  g->step_offset = parameter[GFX_ARG_STEP_OFFSET];
-  g->step_delay  = parameter[GFX_ARG_STEP_DELAY];
+  g->step_offset  = parameter[GFX_ARG_STEP_OFFSET];
+  g->step_xoffset = parameter[GFX_ARG_STEP_XOFFSET];
+  g->step_yoffset = parameter[GFX_ARG_STEP_YOFFSET];
+  g->step_delay   = parameter[GFX_ARG_STEP_DELAY];
+  g->direction    = parameter[GFX_ARG_DIRECTION];
+  g->position     = parameter[GFX_ARG_POSITION];
 
   /* this is only used for drawing font characters */
   g->draw_xoffset = parameter[GFX_ARG_DRAW_XOFFSET];
index 7d5268c21a41c7af4d63812c01dd2149d64d1635..4498e7f49522a8ea9bfcd9485d87ab1cd584771c 100644 (file)
@@ -2653,6 +2653,17 @@ int get_parameter_value(char *value_raw, char *suffix, int type)
              strEqual(value, "up")    ? MV_UP :
              strEqual(value, "down")  ? MV_DOWN : MV_NONE);
   }
+  else if (strEqual(suffix, ".position"))
+  {
+    result = (strEqual(value, "left")   ? POS_LEFT :
+             strEqual(value, "right")  ? POS_RIGHT :
+             strEqual(value, "top")    ? POS_TOP :
+             strEqual(value, "upper")  ? POS_UPPER :
+             strEqual(value, "middle") ? POS_MIDDLE :
+             strEqual(value, "lower")  ? POS_LOWER :
+             strEqual(value, "bottom") ? POS_BOTTOM :
+             strEqual(value, "any")    ? POS_ANY : POS_UNDEFINED);
+  }
   else if (strEqual(suffix, ".align"))
   {
     result = (strEqual(value, "left")   ? ALIGN_LEFT :
@@ -2681,6 +2692,7 @@ int get_parameter_value(char *value_raw, char *suffix, int type)
              string_has_parameter(value, "horizontal") ? ANIM_HORIZONTAL :
              string_has_parameter(value, "vertical")   ? ANIM_VERTICAL :
              string_has_parameter(value, "centered")   ? ANIM_CENTERED :
+             string_has_parameter(value, "all")        ? ANIM_ALL :
              ANIM_DEFAULT);
 
     if (string_has_parameter(value, "reverse"))
index 9fd22f1519639dc06c9a7b51ae033fc3f28bf72a..a27653da930577d34f5d65b5de5776bd83315c21 100644 (file)
 #define ANIM_VERTICAL          (1 << 11)
 #define ANIM_CENTERED          (1 << 12)
 #define ANIM_STATIC_PANEL      (1 << 13)
+#define ANIM_ALL               (1 << 14)
 
 #define ANIM_DEFAULT           ANIM_LOOP
 
 
 #define FADE_MODE_DEFAULT      FADE_MODE_FADE
 
+/* values for toon positions */
+#define POS_UNDEFINED          -1
+#define POS_LEFT               0
+#define POS_RIGHT              1
+#define POS_TOP                        2
+#define POS_UPPER              3
+#define POS_MIDDLE             4
+#define POS_LOWER              5
+#define POS_BOTTOM             6
+#define POS_ANY                        7
+
 /* values for text alignment */
 #define ALIGN_LEFT             (1 << 0)
 #define ALIGN_RIGHT            (1 << 1)
index 2cbb77f03e99a60a4e051103c78728c5cce3fa05..fd07d4e26882093e4a6be0aaef6cb07fdc4be127 100644 (file)
 #define GFX_ARG_DIGGABLE_LIKE          23
 #define GFX_ARG_BORDER_SIZE            24
 #define GFX_ARG_STEP_OFFSET            25
-#define GFX_ARG_STEP_DELAY             26
-#define GFX_ARG_DIRECTION              27
-#define GFX_ARG_POSITION               28
-#define GFX_ARG_DRAW_XOFFSET           29
-#define GFX_ARG_DRAW_YOFFSET           30
-#define GFX_ARG_DRAW_MASKED            31
-#define GFX_ARG_ANIM_DELAY_FIXED       32
-#define GFX_ARG_ANIM_DELAY_RANDOM      33
-#define GFX_ARG_POST_DELAY_FIXED       34
-#define GFX_ARG_POST_DELAY_RANDOM      35
-#define GFX_ARG_NAME                   36
-#define GFX_ARG_SCALE_UP_FACTOR                37
-#define GFX_ARG_TILE_SIZE              38
-#define GFX_ARG_CLONE_FROM             39
-#define GFX_ARG_FADE_MODE              40
-#define GFX_ARG_FADE_DELAY             41
-#define GFX_ARG_POST_DELAY             42
-#define GFX_ARG_AUTO_DELAY             43
-#define GFX_ARG_ALIGN                  44
-#define GFX_ARG_VALIGN                 45
-#define GFX_ARG_SORT_PRIORITY          46
-#define GFX_ARG_CLASS                  47
-#define GFX_ARG_STYLE                  48
-#define GFX_ARG_ACTIVE_XOFFSET         49
-#define GFX_ARG_ACTIVE_YOFFSET         50
-#define GFX_ARG_PRESSED_XOFFSET                51
-#define GFX_ARG_PRESSED_YOFFSET                52
-
-#define NUM_GFX_ARGS                   53
+#define GFX_ARG_STEP_XOFFSET           26
+#define GFX_ARG_STEP_YOFFSET           27
+#define GFX_ARG_STEP_DELAY             28
+#define GFX_ARG_DIRECTION              29
+#define GFX_ARG_POSITION               30
+#define GFX_ARG_DRAW_XOFFSET           31
+#define GFX_ARG_DRAW_YOFFSET           32
+#define GFX_ARG_DRAW_MASKED            33
+#define GFX_ARG_ANIM_DELAY_FIXED       34
+#define GFX_ARG_ANIM_DELAY_RANDOM      35
+#define GFX_ARG_POST_DELAY_FIXED       36
+#define GFX_ARG_POST_DELAY_RANDOM      37
+#define GFX_ARG_NAME                   38
+#define GFX_ARG_SCALE_UP_FACTOR                39
+#define GFX_ARG_TILE_SIZE              40
+#define GFX_ARG_CLONE_FROM             41
+#define GFX_ARG_FADE_MODE              42
+#define GFX_ARG_FADE_DELAY             43
+#define GFX_ARG_POST_DELAY             44
+#define GFX_ARG_AUTO_DELAY             45
+#define GFX_ARG_ALIGN                  46
+#define GFX_ARG_VALIGN                 47
+#define GFX_ARG_SORT_PRIORITY          48
+#define GFX_ARG_CLASS                  49
+#define GFX_ARG_STYLE                  50
+#define GFX_ARG_ACTIVE_XOFFSET         51
+#define GFX_ARG_ACTIVE_YOFFSET         52
+#define GFX_ARG_PRESSED_XOFFSET                53
+#define GFX_ARG_PRESSED_YOFFSET                54
+
+#define NUM_GFX_ARGS                   55
 
 
 /* values for sound configuration suffixes */
@@ -2804,7 +2806,11 @@ struct GraphicInfo
   int post_delay_random;       /* next intervall (bored animation only) */
 
   int step_offset;             /* optional step offset of toon animations */
+  int step_xoffset;            /* optional step offset of toon animations */
+  int step_yoffset;            /* optional step offset of toon animations */
   int step_delay;              /* optional step delay of toon animations */
+  int direction;               /* optional move direction of toon animations */
+  int position;                        /* optional draw position of toon animations */
 
   int draw_xoffset;            /* optional offset for drawing font chars */
   int draw_yoffset;            /* optional offset for drawing font chars */