// terrain_daemon.c // This file reads in the map of TMI-2's terrain and the accompanying // descriptions. It defines two procedures which take a pair of integers // and return the short and long description of the room at the x,y // coordinates passed. It runs as a daemon, and it will load the first // time it's called. Written by Mobydick@TMI in July 1992, to interact // with a modified version of the virtual room server written by Truilkan // and Whiplash. // Added the exits function and corrected a bug in the terrain reader on // 8-17-92, Mobydick #define SIZE 15 #define NUMDESCS 35 #define TERRAINPATH "/d/grid/data/grid.terrain" #define DESCPATH "/d/grid/data/grid.descs" #define EXITPATH "/d/grid/data/grid.exits" mixed *terrain ; string *descs, *ldescs ; mixed *exits ; void create() { int i ; string str, str2 ; seteuid(getuid()) ; terrain = allocate(SIZE) ; exits = allocate(SIZE) ; descs = allocate(NUMDESCS) ; ldescs = allocate(NUMDESCS) ; for (i=0 ; i<SIZE ; i++) { str = read_file (TERRAINPATH,i+1,1) ; sscanf (str,"%s\n",str2) ; terrain[i] = explode (str2," ") ; } for (i=0 ; i<SIZE ; i++) { str = read_file (EXITPATH,i+1,1) ; sscanf(str,"%s\n",str2) ; exits[i] = explode (str2," ") ; } for (i=0 ; i<NUMDESCS ; i++) { str = read_file(DESCPATH,i*2+1,1) ; sscanf(str,"%s\n",descs[i]) ; ldescs[i] = read_file(DESCPATH,i*2+2,1) ; } } string get_short(int x, int y) { int i ; sscanf(terrain[x][y],"%d",i) ; return descs[i] ; } string get_long(int x, int y) { int i ; sscanf(terrain[x][y],"%d",i) ; return ldescs[i] ; } int get_exits(int x, int y) { int i ; sscanf(exits[x][y],"%d",i) ; return i ; }