updated contact info in source file headers
[rocksndiamonds.git] / src / files.c
index 64e204c2bde1ee6ccf13e6cd30226421619af1d1..16af2dd4b4d84769faffc1c981a4153040a98498 100644 (file)
@@ -1,15 +1,13 @@
-/***********************************************************
-* Rocks'n'Diamonds -- McDuffin Strikes Back!               *
-*----------------------------------------------------------*
-* (c) 1995-2006 Artsoft Entertainment                      *
-*               Holger Schemel                             *
-*               Detmolder Strasse 189                      *
-*               33604 Bielefeld                            *
-*               Germany                                    *
-*               e-mail: info@artsoft.org                   *
-*----------------------------------------------------------*
-* files.c                                                  *
-***********************************************************/
+// ============================================================================
+// Rocks'n'Diamonds - McDuffin Strikes Back!
+// ----------------------------------------------------------------------------
+// (c) 1995-2014 by Artsoft Entertainment
+//                         Holger Schemel
+//                 info@artsoft.org
+//                 http://www.artsoft.org/
+// ----------------------------------------------------------------------------
+// files.c
+// ============================================================================
 
 #include <ctype.h>
 #include <sys/stat.h>
@@ -10176,12 +10174,12 @@ boolean SaveLevelChecked(int nr)
   boolean new_level = !fileExists(filename);
   boolean level_saved = FALSE;
 
-  if (new_level || Request("Save this level and kill the old ?", REQ_ASK))
+  if (new_level || Request("Save this level and kill the old?", REQ_ASK))
   {
     SaveLevel(nr);
 
     if (new_level)
-      Request("Level saved !", REQ_CONFIRM);
+      Request("Level saved!", REQ_CONFIRM);
 
     level_saved = TRUE;
   }
@@ -11111,7 +11109,7 @@ void SaveTape(int nr)
   if (fileExists(filename))
   {
     new_tape = FALSE;
-    if (!Request("Replace old tape ?", REQ_ASK))
+    if (!Request("Replace old tape?", REQ_ASK))
       return;
   }
 #endif
@@ -11156,7 +11154,7 @@ void SaveTape(int nr)
 
 #if 0
   if (new_tape)
-    Request("Tape saved !", REQ_CONFIRM);
+    Request("Tape saved!", REQ_CONFIRM);
 #endif
 }
 
@@ -11166,12 +11164,12 @@ boolean SaveTapeChecked(int nr)
   boolean new_tape = !fileExists(filename);
   boolean tape_saved = FALSE;
 
-  if (new_tape || Request("Replace old tape ?", REQ_ASK))
+  if (new_tape || Request("Replace old tape?", REQ_ASK))
   {
     SaveTape(nr);
 
     if (new_tape)
-      Request("Tape saved !", REQ_CONFIRM);
+      Request("Tape saved!", REQ_CONFIRM);
 
     tape_saved = TRUE;
   }
@@ -11347,25 +11345,29 @@ void SaveScore(int nr)
 #define SETUP_TOKEN_FULLSCREEN                 17
 #define SETUP_TOKEN_FULLSCREEN_MODE            18
 #define SETUP_TOKEN_WINDOW_SCALING_PERCENT     19
-#define SETUP_TOKEN_ASK_ON_ESCAPE              20
-#define SETUP_TOKEN_ASK_ON_ESCAPE_EDITOR       21
-#define SETUP_TOKEN_QUICK_SWITCH               22
-#define SETUP_TOKEN_INPUT_ON_FOCUS             23
-#define SETUP_TOKEN_PREFER_AGA_GRAPHICS                24
-#define SETUP_TOKEN_GAME_FRAME_DELAY           25
-#define SETUP_TOKEN_SP_SHOW_BORDER_ELEMENTS    26
-#define SETUP_TOKEN_SMALL_GAME_GRAPHICS                27
-#define SETUP_TOKEN_GRAPHICS_SET               28
-#define SETUP_TOKEN_SOUNDS_SET                 29
-#define SETUP_TOKEN_MUSIC_SET                  30
-#define SETUP_TOKEN_OVERRIDE_LEVEL_GRAPHICS    31
-#define SETUP_TOKEN_OVERRIDE_LEVEL_SOUNDS      32
-#define SETUP_TOKEN_OVERRIDE_LEVEL_MUSIC       33
-#define SETUP_TOKEN_VOLUME_SIMPLE              34
-#define SETUP_TOKEN_VOLUME_LOOPS               35
-#define SETUP_TOKEN_VOLUME_MUSIC               36
-
-#define NUM_GLOBAL_SETUP_TOKENS                        37
+#define SETUP_TOKEN_WINDOW_SCALING_QUALITY     20
+#define SETUP_TOKEN_ASK_ON_ESCAPE              21
+#define SETUP_TOKEN_ASK_ON_ESCAPE_EDITOR       22
+#define SETUP_TOKEN_QUICK_SWITCH               23
+#define SETUP_TOKEN_INPUT_ON_FOCUS             24
+#define SETUP_TOKEN_PREFER_AGA_GRAPHICS                25
+#define SETUP_TOKEN_GAME_FRAME_DELAY           26
+#define SETUP_TOKEN_SP_SHOW_BORDER_ELEMENTS    27
+#define SETUP_TOKEN_SMALL_GAME_GRAPHICS                28
+#define SETUP_TOKEN_GRAPHICS_SET               29
+#define SETUP_TOKEN_SOUNDS_SET                 30
+#define SETUP_TOKEN_MUSIC_SET                  31
+#define SETUP_TOKEN_OVERRIDE_LEVEL_GRAPHICS    32
+#define SETUP_TOKEN_OVERRIDE_LEVEL_SOUNDS      33
+#define SETUP_TOKEN_OVERRIDE_LEVEL_MUSIC       34
+#define SETUP_TOKEN_VOLUME_SIMPLE              35
+#define SETUP_TOKEN_VOLUME_LOOPS               36
+#define SETUP_TOKEN_VOLUME_MUSIC               37
+#define SETUP_TOKEN_TOUCH_CONTROL_TYPE         38
+#define SETUP_TOKEN_TOUCH_MOVE_DISTANCE                39
+#define SETUP_TOKEN_TOUCH_DROP_DISTANCE                40
+
+#define NUM_GLOBAL_SETUP_TOKENS                        41
 
 /* editor setup */
 #define SETUP_TOKEN_EDITOR_EL_BOULDERDASH      0
@@ -11495,6 +11497,7 @@ static struct TokenInfo global_setup_tokens[] =
   { TYPE_SWITCH, &si.fullscreen,              "fullscreen"             },
   { TYPE_STRING, &si.fullscreen_mode,         "fullscreen_mode"                },
   { TYPE_INTEGER,&si.window_scaling_percent,  "window_scaling_percent" },
+  { TYPE_STRING, &si.window_scaling_quality,  "window_scaling_quality" },
   { TYPE_SWITCH, &si.ask_on_escape,           "ask_on_escape"          },
   { TYPE_SWITCH, &si.ask_on_escape_editor,    "ask_on_escape_editor"   },
   { TYPE_SWITCH, &si.quick_switch,            "quick_player_switch"    },
@@ -11512,6 +11515,9 @@ static struct TokenInfo global_setup_tokens[] =
   { TYPE_INTEGER,&si.volume_simple,           "volume_simple"          },
   { TYPE_INTEGER,&si.volume_loops,            "volume_loops"           },
   { TYPE_INTEGER,&si.volume_music,            "volume_music"           },
+  { TYPE_STRING, &si.touch.control_type,      "touch.control_type"     },
+  { TYPE_INTEGER,&si.touch.move_distance,     "touch.move_distance"    },
+  { TYPE_INTEGER,&si.touch.drop_distance,     "touch.drop_distance"    },
 };
 
 static boolean not_used = FALSE;
@@ -11667,6 +11673,7 @@ static void setSetupInfoToDefaults(struct SetupInfo *si)
   si->fullscreen = FALSE;
   si->fullscreen_mode = getStringCopy(DEFAULT_FULLSCREEN_MODE);
   si->window_scaling_percent = STD_WINDOW_SCALING_PERCENT;
+  si->window_scaling_quality = getStringCopy(SCALING_QUALITY_DEFAULT);
   si->ask_on_escape = TRUE;
   si->ask_on_escape_editor = TRUE;
   si->quick_switch = FALSE;
@@ -11683,9 +11690,13 @@ static void setSetupInfoToDefaults(struct SetupInfo *si)
   si->override_level_sounds = FALSE;
   si->override_level_music = FALSE;
 
-  si->volume_simple = 100;     /* percent */
-  si->volume_loops = 100;      /* percent */
-  si->volume_music = 100;      /* percent */
+  si->volume_simple = 100;             /* percent */
+  si->volume_loops = 100;              /* percent */
+  si->volume_music = 100;              /* percent */
+
+  si->touch.control_type = getStringCopy(TOUCH_CONTROL_DEFAULT);
+  si->touch.move_distance = TOUCH_MOVE_DISTANCE_DEFAULT;       /* percent */
+  si->touch.drop_distance = TOUCH_DROP_DISTANCE_DEFAULT;       /* percent */
 
   si->editor.el_boulderdash            = TRUE;
   si->editor.el_emerald_mine           = TRUE;
@@ -11765,6 +11776,10 @@ static void setSetupInfoToDefaults(struct SetupInfo *si)
   si->override_level_sounds = AUTO;
   si->override_level_music = AUTO;
 #endif
+
+#if defined(PLATFORM_ANDROID)
+  si->fullscreen = TRUE;
+#endif
 }
 
 static void setSetupInfoToDefaults_EditorCascade(struct SetupInfo *si)
@@ -11950,7 +11965,8 @@ void SaveSetup()
     /* just to make things nicer :) */
     if (i == SETUP_TOKEN_PLAYER_NAME + 1 ||
        i == SETUP_TOKEN_GRAPHICS_SET ||
-       i == SETUP_TOKEN_VOLUME_SIMPLE)
+       i == SETUP_TOKEN_VOLUME_SIMPLE ||
+       i == SETUP_TOKEN_TOUCH_CONTROL_TYPE)
       fprintf(file, "\n");
 
     fprintf(file, "%s\n", getSetupLine(global_setup_tokens, "", i));
@@ -12344,44 +12360,72 @@ static void LoadMenuDesignSettingsFromFilename(char *filename)
   /* (eg, init "viewport.door_1.MAIN.xyz" from "viewport.door_1.xyz") */
   for (i = 0; i < NUM_SPECIAL_GFX_ARGS; i++)
   {
-    char *token_1 = "viewport.playfield.x";
-    char *token_2 = "viewport.playfield.y";
-    char *token_3 = "viewport.playfield.width";
-    char *token_4 = "viewport.playfield.height";
-    char *token_5 = "viewport.playfield.border_size";
-    char *token_6 = "viewport.door_1.x";
-    char *token_7 = "viewport.door_1.y";
-    char *token_8 = "viewport.door_2.x";
-    char *token_9 = "viewport.door_2.y";
-    char *value_1 = getHashEntry(setup_file_hash, token_1);
-    char *value_2 = getHashEntry(setup_file_hash, token_2);
-    char *value_3 = getHashEntry(setup_file_hash, token_3);
-    char *value_4 = getHashEntry(setup_file_hash, token_4);
-    char *value_5 = getHashEntry(setup_file_hash, token_5);
-    char *value_6 = getHashEntry(setup_file_hash, token_6);
-    char *value_7 = getHashEntry(setup_file_hash, token_7);
-    char *value_8 = getHashEntry(setup_file_hash, token_8);
-    char *value_9 = getHashEntry(setup_file_hash, token_9);
-
-    if (value_1 != NULL)
-      viewport.playfield[i].x = get_token_parameter_value(token_1, value_1);
-    if (value_2 != NULL)
-      viewport.playfield[i].y = get_token_parameter_value(token_2, value_2);
-    if (value_3 != NULL)
-      viewport.playfield[i].width = get_token_parameter_value(token_3, value_3);
-    if (value_4 != NULL)
-      viewport.playfield[i].height = get_token_parameter_value(token_4,value_4);
-    if (value_5 != NULL)
-      viewport.playfield[i].border_size = get_token_parameter_value(token_5,
-                                                                   value_5);
-    if (value_6 != NULL)
-      viewport.door_1[i].x = get_token_parameter_value(token_6, value_6);
-    if (value_7 != NULL)
-      viewport.door_1[i].y = get_token_parameter_value(token_7, value_7);
-    if (value_8 != NULL)
-      viewport.door_2[i].x = get_token_parameter_value(token_8, value_8);
-    if (value_9 != NULL)
-      viewport.door_2[i].y = get_token_parameter_value(token_9, value_9);
+    char *token_01 = "viewport.playfield.x";
+    char *token_02 = "viewport.playfield.y";
+    char *token_03 = "viewport.playfield.width";
+    char *token_04 = "viewport.playfield.height";
+    char *token_05 = "viewport.playfield.border_size";
+    char *token_06 = "viewport.door_1.x";
+    char *token_07 = "viewport.door_1.y";
+    char *token_08 = "viewport.door_1.width";
+    char *token_09 = "viewport.door_1.height";
+    char *token_10 = "viewport.door_1.border_size";
+    char *token_11 = "viewport.door_2.x";
+    char *token_12 = "viewport.door_2.y";
+    char *token_13 = "viewport.door_2.width";
+    char *token_14 = "viewport.door_2.height";
+    char *token_15 = "viewport.door_2.border_size";
+    char *value_01 = getHashEntry(setup_file_hash, token_01);
+    char *value_02 = getHashEntry(setup_file_hash, token_02);
+    char *value_03 = getHashEntry(setup_file_hash, token_03);
+    char *value_04 = getHashEntry(setup_file_hash, token_04);
+    char *value_05 = getHashEntry(setup_file_hash, token_05);
+    char *value_06 = getHashEntry(setup_file_hash, token_06);
+    char *value_07 = getHashEntry(setup_file_hash, token_07);
+    char *value_08 = getHashEntry(setup_file_hash, token_08);
+    char *value_09 = getHashEntry(setup_file_hash, token_09);
+    char *value_10 = getHashEntry(setup_file_hash, token_10);
+    char *value_11 = getHashEntry(setup_file_hash, token_11);
+    char *value_12 = getHashEntry(setup_file_hash, token_12);
+    char *value_13 = getHashEntry(setup_file_hash, token_13);
+    char *value_14 = getHashEntry(setup_file_hash, token_14);
+    char *value_15 = getHashEntry(setup_file_hash, token_15);
+
+    if (value_01 != NULL)
+      viewport.playfield[i].x = get_token_parameter_value(token_01, value_01);
+    if (value_02 != NULL)
+      viewport.playfield[i].y = get_token_parameter_value(token_02, value_02);
+    if (value_03 != NULL)
+      viewport.playfield[i].width = get_token_parameter_value(token_03,
+                                                             value_03);
+    if (value_04 != NULL)
+      viewport.playfield[i].height = get_token_parameter_value(token_04,
+                                                              value_04);
+    if (value_05 != NULL)
+      viewport.playfield[i].border_size = get_token_parameter_value(token_05,
+                                                                   value_05);
+    if (value_06 != NULL)
+      viewport.door_1[i].x = get_token_parameter_value(token_06, value_06);
+    if (value_07 != NULL)
+      viewport.door_1[i].y = get_token_parameter_value(token_07, value_07);
+    if (value_08 != NULL)
+      viewport.door_1[i].width = get_token_parameter_value(token_08, value_08);
+    if (value_09 != NULL)
+      viewport.door_1[i].height = get_token_parameter_value(token_09, value_09);
+    if (value_10 != NULL)
+      viewport.door_1[i].border_size = get_token_parameter_value(token_10,
+                                                                value_10);
+    if (value_11 != NULL)
+      viewport.door_2[i].x = get_token_parameter_value(token_11, value_11);
+    if (value_12 != NULL)
+      viewport.door_2[i].y = get_token_parameter_value(token_12, value_12);
+    if (value_13 != NULL)
+      viewport.door_2[i].width = get_token_parameter_value(token_13, value_13);
+    if (value_14 != NULL)
+      viewport.door_2[i].height = get_token_parameter_value(token_14, value_14);
+    if (value_15 != NULL)
+      viewport.door_1[i].border_size = get_token_parameter_value(token_15,
+                                                                value_15);
   }
 
   /* special case: initialize with default values that may be overwritten */