/****************************************************************************** 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 ); }