rnd-19981016-2
[rocksndiamonds.git] / src / main.h
index c8d1a7177324abda882baf81ae46da8599ccd625..0e967f3d7ca1256bb3f072263e5466a6a12493bd 100644 (file)
@@ -40,6 +40,7 @@
 #endif  /* #ifndef MSDOS */
 
 typedef int BOOL;
+typedef unsigned char byte;
 
 #ifndef FALSE
 #define FALSE 0
@@ -143,12 +144,7 @@ typedef int BOOL;
 #define IS_PUSHABLE(e)         (Elementeigenschaften[e] & EP_BIT_PUSHABLE)
 #define ELEM_IS_PLAYER(e)      (Elementeigenschaften[e] & EP_BIT_PLAYER)
 
-/*
-#define IS_PLAYER(x,y)         (JX == (x) && JY == (y))
-*/
-
 #define IS_PLAYER(x,y)         (ELEM_IS_PLAYER(StorePlayer[x][y]))
-#define IS_LOCAL_PLAYER(x,y)   (StorePlayer[x][y] == EL_SPIELER1)
 
 #define IS_FREE(x,y)           (Feld[x][y] == EL_LEERRAUM && !IS_PLAYER(x,y))
 #define IS_FREE_OR_PLAYER(x,y) (Feld[x][y] == EL_LEERRAUM)
@@ -200,7 +196,8 @@ typedef int BOOL;
 #define MAX_LEVDIR_ENTRIES     15
 #define MAX_SCORE_ENTRIES      15
 
-#define MAX_FILENAME           256
+#define MAX_OPTION_LEN         256
+#define MAX_FILENAME_LEN       256
 #define MAX_NUM_AMOEBA         100
 #define MAX_ELEMENTS           512
 
@@ -212,7 +209,12 @@ struct HiScore
 
 struct PlayerInfo
 {
-  int nr, active, local;
+  BOOL present;                        /* player present in level playfield */
+  BOOL connected;              /* player connected locally or via network */
+  BOOL local;                  /* player connected locally */
+  BOOL active;                 /* player (present && connected) */
+
+  int index_nr, client_nr, element_nr;
 
   char login_name[MAX_NAMELEN];
   char alias_name[MAX_NAMELEN];
@@ -223,13 +225,11 @@ struct PlayerInfo
 
   int jx,jy, last_jx,last_jy;
   int MovDir, MovPos, GfxPos;
-  int Pushing, Frame;
-
-  int gone, LevelSolved, GameOver;
+  int Frame;
 
-  long actual_frame_counter;
-
-  int frame_reset_delay;
+  BOOL Pushing;
+  BOOL gone, LevelSolved, GameOver;
+  BOOL snapped;
 
   long move_delay;
   int last_move_dir;
@@ -237,7 +237,9 @@ struct PlayerInfo
   long push_delay;
   int push_delay_value;
 
-  int snapped;
+  int frame_reset_delay;
+
+  long actual_frame_counter;
 
   int score;
   int gems_still_needed;
@@ -275,7 +277,7 @@ struct LevelDirInfo
 struct RecordingInfo
 {
   int level_nr;
-  unsigned int random_seed;
+  unsigned long random_seed;
   unsigned long date;
   unsigned long counter;
   unsigned long length;
@@ -287,8 +289,8 @@ struct RecordingInfo
   BOOL changed;
   struct
   {
-    unsigned char joystickdata[MAX_PLAYERS];
-    unsigned char delay;
+    byte action[MAX_PLAYERS];
+    byte delay;
   } pos[MAX_TAPELEN];
 };
 
@@ -321,15 +323,17 @@ extern char              *joystick_device_name[2];
 extern char           *level_directory;
 extern int                     width, height;
 
+extern char           *program_name;
 extern char           *display_name;
 extern char           *server_host;
 extern int             server_port;
-extern int             networking;
-extern int             standalone;
+extern int             serveronly;
+extern int             network;
 extern int             verbose;
 
 extern int             game_status;
 extern int             game_emulation;
+extern int             network_playing;
 extern int             button_status, motion_status;
 extern int             key_joystick_mapping;
 extern int             global_joystick_status, joystick_status;
@@ -378,6 +382,8 @@ extern int          AllPlayersGone;
 extern int             FrameCounter, TimeFrames, TimeLeft;
 extern int             MampferNr, SiebAktiv;
 
+extern byte            network_player_action[];
+extern BOOL            network_player_action_received;
 extern int             TestPlayer;
 
 extern struct LevelDirInfo     leveldir[];
@@ -393,8 +399,6 @@ extern char         *sound_name[];
 extern int             background_loop[];
 extern int             num_bg_loops;
 
-extern char            *program_name;
-
 
 /* often used screen positions */
 #define SX                     8
@@ -616,7 +620,11 @@ extern char                *program_name;
 #define EL_CHAR_COPY           (EL_CHAR_ASCII0+94)
 #define EL_CHAR_END            (EL_CHAR_START+79)
 
-#define EL_UNUSED_200          200
+#define EL_MAUER_X             200
+#define EL_MAUER_Y             201
+#define EL_MAUER_XY            202
+
+#define EL_UNUSED_200          203
 /* ... */
 #define EL_UNUSED_255          255
 
@@ -756,15 +764,20 @@ extern char               *program_name;
 #define GFX_MAULWURF           145
 #define GFX_SCHWEIN            146
 #define GFX_DRACHE             147
+#define GFX_MAUER_XY           148
+#define GFX_MAUER_X            149
+#define GFX_MAUER_Y            150
 #define GFX_EDELSTEIN_ROT      152
 #define GFX_EDELSTEIN_LILA     154
 #define GFX_DYNABOMB_XL                156
 #define GFX_SONDE              159
 /* Zeile 10 (160) */
 #define GFX_EDELSTEIN_BD       163
-#define GFX_MAUER_R1           165
+#define GFX_MAUER_RIGHT                165
+#define GFX_MAUER_R1           GFX_MAUER_RIGHT
 #define GFX_MAUER_R            167
-#define GFX_MAUER_L1           168
+#define GFX_MAUER_LEFT         168
+#define GFX_MAUER_L1           GFX_MAUER_LEFT
 #define GFX_MAUER_L            170
 #define GFX_MAUER_LEBT         171
 #define GFX_SIEB2_LEER         172
@@ -824,6 +837,9 @@ extern char         *program_name;
 #define GFX_SPIELER4_RIGHT     (GFX_START_ROCKSHEROES +10*HEROES_PER_LINE + 4)
 #define GFX_SPIELER4_PUSH_RIGHT        (GFX_START_ROCKSHEROES +11*HEROES_PER_LINE + 0)
 #define GFX_SPIELER4_PUSH_LEFT (GFX_START_ROCKSHEROES +11*HEROES_PER_LINE + 4)
+#define GFX_MAUER_DOWN         (GFX_START_ROCKSHEROES +12*HEROES_PER_LINE + 0)
+#define GFX_MAUER_UP           (GFX_START_ROCKSHEROES +12*HEROES_PER_LINE + 3)
+
 #define GFX_SONDE_START                (GFX_START_ROCKSHEROES + 9*HEROES_PER_LINE + 8)
 #define GFX_SCHWEIN_DOWN       (GFX_START_ROCKSHEROES + 0*HEROES_PER_LINE + 8)
 #define GFX_SCHWEIN_UP         (GFX_START_ROCKSHEROES + 0*HEROES_PER_LINE +12)