/******************************************************************************
Snippet: Wilderness system (v1.0).
Author: Richard Woolcock (aka KaVir).
Date: 2nd September 1998.
******************************************************************************
File: wild_data.c
Purpose: Deals with map data.
******************************************************************************
This code is copyright (C) 1998 by Richard Woolcock. It may be used and
distributed freely, as long as you do not remove this copyright notice.
******************************************************************************/
/******************************************************************************
Required libraries
******************************************************************************/
#include <sys/types.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include "merc.h"
#include "wild.h"
/******************************************************************************
Required variables
******************************************************************************/
static bool world_saving = FALSE;
static char vmap_data [WILDERNESS_SIZE] [WILDERNESS_SIZE];
static bool vmap_changed [(WILDERNESS_SIZE/100)] [(WILDERNESS_SIZE/100)];
static MAP_TYPE vmap_big [(WILDERNESS_SIZE/100)] [(WILDERNESS_SIZE/100)] =
{
{ LAND, LAND, LAND, LAND, LAND, LAND, SEA, SEA, SEA, LAND },
{ LAND, LAND, LAND, LAND, LAND, LAND, SEA, LAND, SEA, LAND },
{ SEA, SEA, SEA, SEA, SEA, SEA, SEA, SEA, SEA, SEA },
{ LAND, SEA, LAND, LAND, LAND, LAND, SEA, LAND, SEA, LAND },
{ LAND, SEA, LAND, LAND, LAND, LAND, SEA, LAND, SEA, LAND },
{ LAND, SEA, LAND, LAND, LAND, LAND, SEA, LAND, SEA, LAND },
{ SEA, SEA, SEA, SEA, SEA, SEA, SEA, SEA, SEA, SEA },
{ LAND, LAND, LAND, LAND, LAND, LAND, SEA, LAND, SEA, LAND },
{ LAND, LAND, LAND, LAND, SEA, LAND, SEA, LAND, SEA, LAND },
{ LAND, LAND, LAND, LAND, LAND, LAND, SEA, LAND, SEA, LAND }
};
/******************************************************************************
Local operation prototypes
******************************************************************************/
/* None. */
/******************************************************************************
Global operations
******************************************************************************/
char map_data( int x, int y )
{
char return_value; /* This stores the return value from the call */
/* Check that the 'x' coordinate is valid */
if ( x < 0 || x >= WILDERNESS_SIZE )
{
/* Return value is set to 0 as default */
return_value = 0;
}
/* Check that the 'y' coordinate is valid */
else if ( y < 0 || y >= WILDERNESS_SIZE )
{
/* Return value is set to 0 as default */
return_value = 0;
}
else /* Both 'x' and 'y' coordinates are valid */
{
/* Return value is determined from the map_data array */
return_value = vmap_data[x][y];
}
/* Return the appropriate data */
return ( return_value );
}
void set_map_data( int x, int y, char room_type )
{
/* Check that the 'x' and 'y' coordinates are valid */
if ( x >= 0 && x <= WILDERNESS_SIZE &&
y >= 0 && y <= WILDERNESS_SIZE )
{
/* Set the map_data structure to the room_type parameter */
vmap_data[x][y] = room_type;
}
return;
}
bool map_changed( int x, int y )
{
bool return_value; /* This stores the return value from the call */
/* Check that the 'x' coordinate is valid */
if ( x < 0 || x >= (WILDERNESS_SIZE/100) )
{
/* Return value is set to 0 as default */
return_value = 0;
}
/* Check that the 'y' coordinate is valid */
else if ( y < 0 || y >= (WILDERNESS_SIZE/100) )
{
/* Return value is set to 0 as default */
return_value = 0;
}
else /* Both 'x' and 'y' coordinates are valid */
{
/* Return value is determined from the map_changed array */
return_value = vmap_changed[x][y];
}
/* Return the appropriate data */
return ( return_value );
}
void set_map_changed( int x, int y, bool changed )
{
/* Check that the 'x' and 'y' coordinates are valid */
if ( x >= 0 && x <= (WILDERNESS_SIZE/100) &&
y >= 0 && y <= (WILDERNESS_SIZE/100) )
{
/* Set the map_data structure to the room_type parameter */
vmap_changed[x][y] = changed;
}
return;
}
MAP_TYPE map_big( int x, int y )
{
MAP_TYPE return_value; /* This stores the return value from the call */
/* Check that the 'x' coordinate is valid */
if ( x < 0 || x >= (WILDERNESS_SIZE/100) )
{
/* Return value is set to 0 as default */
return_value = LAND;
}
/* Check that the 'y' coordinate is valid */
else if ( y < 0 || y >= (WILDERNESS_SIZE/100) )
{
/* Return value is set to 0 as default */
return_value = LAND;
}
else /* Both 'x' and 'y' coordinates are valid */
{
/* Return value is determined from the map_changed array */
return_value = vmap_big[x][y];
}
/* Return the appropriate data */
return ( return_value );
}
void set_world_saving( bool save_world )
{
/* Store whether or not the world is autosaving */
world_saving = save_world;
return;
}
bool check_world_saving( void )
{
/* Return whether or not the world is autosaving */
return ( world_saving );
}