/***********************************************************
* Rocks'n'Diamonds -- McDuffin Strikes Back! *
*----------------------------------------------------------*
-* ©1995 Artsoft Development *
-* Holger Schemel *
-* 33659 Bielefeld-Senne *
-* Telefon: (0521) 493245 *
-* eMail: aeglos@valinor.owl.de *
-* aeglos@uni-paderborn.de *
-* q99492@pbhrzx.uni-paderborn.de *
+* (c) 1995-98 Artsoft Entertainment *
+* Holger Schemel *
+* Oststrasse 11a *
+* 33604 Bielefeld *
+* phone: ++49 +521 290471 *
+* email: aeglos@valinor.owl.de *
*----------------------------------------------------------*
* init.c *
***********************************************************/
+#include <signal.h>
+
#include "init.h"
#include "misc.h"
#include "sound.h"
#include "joystick.h"
#include "gfxload.h"
#include "gifload.h"
-
-#include <signal.h>
+#include "network.h"
#ifdef DEBUG
/*
static int sound_process_id = 0;
+static void InitServer(void);
static void InitLevelAndPlayerInfo(void);
static void InitDisplay(int, char **);
static void InitSound(void);
void OpenAll(int argc, char *argv[])
{
InitLevelAndPlayerInfo();
+ InitServer();
InitCounter();
InitSound();
void InitLevelAndPlayerInfo()
{
+ local_player = &stored_player[0];
+
if (!LoadLevelInfo()) /* global level info */
CloseAll();
LoadPlayerInfo(PLAYER_LEVEL); /* level specific info */
}
+void InitServer()
+{
+ standalone = FALSE;
+
+ if (standalone)
+ return;
+
+ if (!ConnectToServer(server_host, server_port))
+ {
+ fprintf(stderr,"%s: cannot connect to multiplayer server.\n",
+ progname);
+ exit(-1);
+ }
+
+ SendNicknameToServer(local_player->alias_name);
+ SendProtocolVersionToServer();
+}
+
void InitSound()
{
int i;
}
tile_needs_clipping[] =
{
- { GFX_SPIELER_UP, 4 },
- { GFX_SPIELER_DOWN, 4 },
- { GFX_SPIELER_LEFT, 4 },
- { GFX_SPIELER_RIGHT, 4 },
- { GFX_SPIELER_PUSH_LEFT, 4 },
- { GFX_SPIELER_PUSH_RIGHT, 4 },
+ { GFX_SPIELER1_UP, 4 },
+ { GFX_SPIELER1_DOWN, 4 },
+ { GFX_SPIELER1_LEFT, 4 },
+ { GFX_SPIELER1_RIGHT, 4 },
+ { GFX_SPIELER1_PUSH_LEFT, 4 },
+ { GFX_SPIELER1_PUSH_RIGHT, 4 },
+ { GFX_SPIELER2_UP, 4 },
+ { GFX_SPIELER2_DOWN, 4 },
+ { GFX_SPIELER2_LEFT, 4 },
+ { GFX_SPIELER2_RIGHT, 4 },
+ { GFX_SPIELER2_PUSH_LEFT, 4 },
+ { GFX_SPIELER2_PUSH_RIGHT, 4 },
+ { GFX_SPIELER3_UP, 4 },
+ { GFX_SPIELER3_DOWN, 4 },
+ { GFX_SPIELER3_LEFT, 4 },
+ { GFX_SPIELER3_RIGHT, 4 },
+ { GFX_SPIELER3_PUSH_LEFT, 4 },
+ { GFX_SPIELER3_PUSH_RIGHT, 4 },
+ { GFX_SPIELER4_UP, 4 },
+ { GFX_SPIELER4_DOWN, 4 },
+ { GFX_SPIELER4_LEFT, 4 },
+ { GFX_SPIELER4_RIGHT, 4 },
+ { GFX_SPIELER4_PUSH_LEFT, 4 },
+ { GFX_SPIELER4_PUSH_RIGHT, 4 },
{ GFX_GEBLUBBER, 4 },
{ GFX_DYNAMIT, 7 },
{ GFX_DYNABOMB, 4 },
{ GFX_SOKOBAN_OBJEKT, 1 },
- { GFX_MASK_SPARKLING, 3 },
+ { GFX_FUNKELN_BLAU, 3 },
+ { GFX_FUNKELN_WEISS, 3 },
{ -1, 0 }
};
int src_x, src_y;
Pixmap src_pixmap;
- if (tile_needs_clipping[i].start == GFX_MASK_SPARKLING)
- {
- /* special case -- should be cleaned up sometimes... */
- src_pixmap = clipmask[PIX_BACK];
- src_x = SX + GFX_PER_LINE*TILEX;
- src_y = SY + j*TILEY;
- }
- else if (graphic >= GFX_START_ROCKSSCREEN &&
- graphic <= GFX_END_ROCKSSCREEN)
+ if (graphic >= GFX_START_ROCKSSCREEN &&
+ graphic <= GFX_END_ROCKSSCREEN)
{
src_pixmap = clipmask[PIX_BACK];
graphic -= GFX_START_ROCKSSCREEN;
};
static int ep_pushable_num = sizeof(ep_pushable)/sizeof(int);
+ static int ep_player[] =
+ {
+ EL_SPIELFIGUR,
+ EL_SPIELER1,
+ EL_SPIELER2,
+ EL_SPIELER3,
+ EL_SPIELER4
+ };
+ static int ep_player_num = sizeof(ep_player)/sizeof(int);
+
static long ep_bit[] =
{
EP_BIT_AMOEBALIVE,
EP_BIT_INACTIVE,
EP_BIT_EXPLOSIVE,
EP_BIT_MAMPF3,
- EP_BIT_PUSHABLE
+ EP_BIT_PUSHABLE,
+ EP_BIT_PLAYER
};
static int *ep_array[] =
{
ep_inactive,
ep_explosive,
ep_mampf3,
- ep_pushable
+ ep_pushable,
+ ep_player
};
static int *ep_num[] =
{
&ep_inactive_num,
&ep_explosive_num,
&ep_mampf3_num,
- &ep_pushable_num
+ &ep_pushable_num,
+ &ep_player_num
};
static int num_properties = sizeof(ep_num)/sizeof(int *);