Tileset Random Function Works

origin
stpohle 23 years ago
parent 3c8c605b3c
commit e1ddeeedb8

@ -1,4 +1,4 @@
/* $Id: bomberclone.h,v 1.10 2003/05/06 12:09:22 stpohle Exp $ */
/* $Id: bomberclone.h,v 1.11 2003/05/06 20:48:53 stpohle Exp $ */
/* bomberclone.h */
#ifndef _BOMBERCLONE_H_
@ -15,6 +15,8 @@
#include <sys/stat.h>
#ifdef _WIN32
#include <winsock.h>
#define IS_DIR(a) ((a & _S_IFDIR) == _S_IFDIR)
#define IS_REG(a) ((a & _S_IFREG) == _S_IFREG)
#else
#include <sys/time.h>
#include <sys/socket.h>
@ -163,6 +165,7 @@ extern void draw_field ();
extern void draw_stone (int x, int y);
extern void field_new (char *filename);
extern void field_set_playerposition (int usermap);
extern void tileset_random ();
// everything what is declared in players.c
extern void dead_playerani ();

@ -44,8 +44,8 @@ game_init ()
gfx.res.x = 640;
gfx.res.y = 480;
gfx.bpp = 16;
tileset[0] = 0;
random_tileset = 1;
gfx.tileset[0] = 0;
gfx.random_tileset = 1;
bman.fieldsize.x = 25;
bman.fieldsize.y = 17;
sprintf (bman.datapath, "data");

@ -1,4 +1,4 @@
/* $Id: field.c,v 1.11 2003/05/05 20:40:04 stpohle Exp $ */
/* $Id: field.c,v 1.12 2003/05/06 20:48:53 stpohle Exp $ */
/* field.c - procedures which are needed to control the field */
#include <stdlib.h>
@ -372,3 +372,27 @@ field_new (char *filename)
x = y = 0;
}
}
/* load a random tileset */
void
tileset_random () {
_direntry *destart, *de;
char path[LEN_PATHFILENAME];
int max, sel;
sprintf (path, "%s/tileset", bman.datapath);
destart = s_getdir (path);
for (max = 0, de = destart; de != NULL; de = de->next)
if (de->name[0] != '.' && (de->flags & DF_dir) == DF_dir)
max++;
sel = s_random (max);
for (max = 0, de = destart; max < sel && de != NULL; de = de->next)
if (de->name[0] != '.' && (de->flags & DF_dir) == DF_dir)
max++;
if (de != NULL)
strncpy (gfx.tileset, de->name, LEN_TILESETNAME);
gfx.tileset[LEN_TILESETNAME-1] = 0;
}

@ -661,7 +661,8 @@ void gfx_load_tileset (char *tilesetname) {
SDL_Surface *tmpimage, *tmpimage1;
float sfkt;
d_printf ("Loading Tileset: %s\n", tileset);
d_printf ("Loading Tileset: %s\n", tilesetname);
strncpy (tileset, tilesetname, LEN_TILESETNAME);
/* Calculate the Best Size of the Images */
gfx.block.x = gfx.res.x / (bman.fieldsize.x+1);

@ -1,4 +1,4 @@
/* $Id: menu.c,v 1.6 2003/05/06 12:25:30 stpohle Exp $ */
/* $Id: menu.c,v 1.7 2003/05/06 20:48:54 stpohle Exp $ */
/* menu's for the game */
#include <SDL.h>
@ -348,5 +348,80 @@ menu_displaymessage (char *title, char *text)
s_delay (100);
}
};
/***
*** Menu Selection of a file ior a directory
***/
#define DIRSCRMAX 10
static char menu_selectedfile[LEN_PATHFILENAME];
/* draws the selection on the screen..
dirstart - first entry do display
flags - flags what should be shown directorys or files
selected - Selected file in the list
*/
int menu_dir_draw (_direntry *dirstart, signed char dirflags, _direntry *select) {
}
char *menu_dir_select (char *path, signed char dirflags) {
_direntry *destart, *de;
int max = 0, sel = -1, done = 0;
/* get the directory list and count the numbers */
destart = s_getdir (path);
for (max = 0, de = destart; de != NULL; de = de->next)
if (de->name[0] != '.' && (de->flags & dirflags) != 0)
max++;
if (max <= 0)
return NULL;
while (done == 0 || (done == 1 && keypressed == 1)) {
/* do the network loop if we have to */
if (bman.gametype == GT_multi && bman.sock != -1)
network_loop ();
if (SDL_PollEvent (&event) != 0)
switch (event.type) {
case (SDL_QUIT):
menuselect = -1;
bman.state = GS_quit;
done = 1;
}
/* keyboard handling */
keys = SDL_GetKeyState (NULL);
if (keys[SDLK_DOWN] && event.type == SDL_KEYDOWN && keypressed == 0) {
keypressed = 1;
menuselect++;
if (menuselect >= lastentry)
menuselect = 0;
}
if (keys[SDLK_UP] && event.type == SDL_KEYDOWN && keypressed == 0) {
keypressed = 1;
menuselect--;
if (menuselect < 0)
menuselect = lastentry - 1;
}
if (keys[SDLK_ESCAPE] && event.type == SDL_KEYDOWN) {
keypressed = 1;
return -1;
}
if (!keys[SDLK_ESCAPE] && event.type == SDL_KEYUP)
keypressed = 0;
if (keys[SDLK_RETURN] && event.type == SDL_KEYDOWN) {
done = 1;
keypressed = 1;
}
if (!keys[SDLK_RETURN] && event.type == SDL_KEYUP)
keypressed = 0;
s_delay (100);
}
};
#undef DIRSCRMAX

@ -190,6 +190,8 @@ host_multiplayer_game ()
bman.state = GS_update;
net_new_game ();
field_new (bman.fieldpath);
if (gfx.random_tileset)
tileset_random ();
net_send_servermode ();
gfx_game_init ();
net_new_gamedata ();

@ -267,7 +267,7 @@ do_servermode (struct pkg_servermode *s_mod, _net_addr * addr)
bman.fieldsize.x = s_mod->fieldsize_x;
bman.fieldsize.y = s_mod->fieldsize_y;
}
strncpy (gfx.tileset, s_mod.tileset, LEN_TILESETNAME);
strncpy (gfx.tileset, s_mod->tileset, LEN_TILESETNAME);
};
@ -981,7 +981,7 @@ do_pkg (struct pkg *packet, _net_addr * addr)
}
/* check if the incoming packet have the right size */
if (packet->h.tye == PKG_servermode && packet->h.len != sizeof (pkg_servermode))
if (packet->h.typ == PKG_servermode && packet->h.len != sizeof (struct pkg_servermode))
send_error (addr, "pkg_servermode: packetsize incorrect.");
switch (packet->h.typ) {

@ -1,4 +1,4 @@
/* $Id: single.c,v 1.5 2003/05/05 15:53:27 stpohle Exp $ */
/* $Id: single.c,v 1.6 2003/05/06 20:48:54 stpohle Exp $ */
/* single player */
#include "basic.h"
@ -38,6 +38,7 @@ single_game_new (int ai_players)
bman.last_ex_nr = 1;
field_new (bman.fieldpath);
tileset_random ();
bman.players_nr_s = 1;
bman.players_nr = 1;

@ -1,4 +1,4 @@
/* $Id: sysfunc.c,v 1.2 2003/05/06 12:09:22 stpohle Exp $
/* $Id: sysfunc.c,v 1.3 2003/05/06 20:48:54 stpohle Exp $
sysfunc.c - this file hold some routines for the system functions..
like d_delay
*/
@ -71,7 +71,7 @@ s_gethomedir ()
direntrys[entrynr].name[LEN_FILENAME - 1] = 0;
sprintf (filename, "%s/%s\0", path, direntrys[entrynr].name);
lstat (filename, &fstat);
stat (filename, &fstat);
if (S_ISREG (fstat.st_mode)) {
direntrys[entrynr].flags = DF_file;
direntrys[entrynr].next = &direntrys[entrynr + 1];

Loading…
Cancel
Save