/*--------------------------------------------------------------------------*
* ** WolfPaw 1.0 ** *
*--------------------------------------------------------------------------*
* WolfPaw 1.0 (c) 1997,1998 by Dale Corse *
*--------------------------------------------------------------------------*
* The WolfPaw Coding Team is headed by: Greywolf *
* With the Assitance from: Callinon, Dhamon, Sentra, Wyverns, Altrag *
* Scryn, Thoric, Justice, Tricops and Mask. *
*--------------------------------------------------------------------------*
* Wolfpaw Custom Menu-Driven OLC Module *
*--------------------------------------------------------------------------*/
#include <stdio.h>
#include <string.h>
#include <time.h>
#include <unistd.h>
#include <ctype.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <errno.h>
#include "mud.h"
#define version "1.0"
/* local function declarations and prototypes */
void display_main_redit_page args( ( CHAR_DATA *ch ) );
int find_exit args( ( ROOM_INDEX_DATA *room, int dir ) );
void gredit_engine args( ( DESCRIPTOR_DATA *d, char *argument ) );
void gredit_cleanup args( ( CHAR_DATA *ch ) );
void add_char args( ( CHAR_DATA *ch ) );
void remove_char args( ( CHAR_DATA *ch ) );
/*
* Begin REDIT Functions. --GW
*/
/*
* Command to start up Room Editor, takes them from game, into Editor,
*/
void do_gredit( CHAR_DATA *ch, char *argument )
{
DESCRIPTOR_DATA *d;
record_call("<do_gredit>");
d = ch->desc;
/* Get Going, remove char from the world, stick em in the editor!*/
act( AT_MAGIC, "$n begins changing the world.",ch,NULL,NULL,TO_ROOM);
/* start up the editor engine */
display_main_redit_page(ch);
remove_char(ch);
ch->substate = SUB_REDIT_MAIN;
ch->desc->connected = CON_GREDITING;
return;
}
/*
* Cleans up the char.. and puts them back in the game.
*/
void gredit_cleanup( CHAR_DATA *ch )
{
record_call("<gredit_cleanup>");
/* finish up, put the char back in the world and exit */
ch->substate = SUB_NONE;
ch->desc->connected = CON_PLAYING;
add_char(ch);
act( AT_MAGIC, "$n has returned from changing the world.",ch,NULL,NULL,TO_ROOM);
return;
}
/*
* Main GRedit Engine .. handles all the character interface command entry.
*/
void gredit_engine( DESCRIPTOR_DATA *d, char *argument )
{
CHAR_DATA *ch;
char arg[MSL];
ch = d->character;
switch( ch->substate )
{
case SUB_REDIT_MAIN:
display_main_redit_page(ch);
one_argument( argument, arg );
switch( *arg )
{
default:
write_to_buffer(d,"Invalid Choice.\n\r",0);
return;
case '1':
ch->substate = SUB_REDIT_RNAME;
break;
case '2':
ch->substate = SUB_REDIT_ROOMDESC;
break;
case '3':
ch->substate = SUB_REDIT_ROOMFLAGS;
break;
case '4':
ch->substate = SUB_REDIT_SECTOR;
break;
case '5':
ch->substate = SUB_REDIT_EXIT_N;
break;
case '6':
ch->substate = SUB_REDIT_EXIT_E;
break;
case '7':
ch->substate = SUB_REDIT_EXIT_S;
break;
case '8':
ch->substate = SUB_REDIT_EXIT_W;
break;
case '9':
ch->substate = SUB_REDIT_EXIT_U;
break;
case 'A':
case 'a':
ch->substate = SUB_REDIT_EXIT_D;
break;
case 'B':
case 'b':
ch->substate = SUB_REDIT_EXTRA_DESC;
break;
case 'Q':
case 'q':
gredit_cleanup(ch);
break;
}
break;
case SUB_REDIT_RNAME:
write_to_buffer( d, "Incomplete..press enter.\n\r",0);
ch->substate = SUB_REDIT_MAIN;
break;
case SUB_REDIT_ROOMDESC:
write_to_buffer( d, "Incomplete..press enter.\n\r",0);
ch->substate = SUB_REDIT_MAIN;
break;
case SUB_REDIT_ROOMFLAGS:
write_to_buffer( d, "Incomplete..press enter.\n\r",0);
ch->substate = SUB_REDIT_MAIN;
break;
case SUB_REDIT_SECTOR:
write_to_buffer( d, "Incomplete..press enter.\n\r",0);
ch->substate = SUB_REDIT_MAIN;
break;
case SUB_REDIT_EXIT_N:
write_to_buffer( d, "Incomplete..press enter.\n\r",0);
ch->substate = SUB_REDIT_MAIN;
break;
case SUB_REDIT_EXIT_E:
write_to_buffer( d, "Incomplete..press enter.\n\r",0);
ch->substate = SUB_REDIT_MAIN;
break;
case SUB_REDIT_EXIT_S:
write_to_buffer( d, "Incomplete..press enter.\n\r",0);
ch->substate = SUB_REDIT_MAIN;
break;
case SUB_REDIT_EXIT_W:
write_to_buffer( d, "Incomplete..press enter.\n\r",0);
ch->substate = SUB_REDIT_MAIN;
break;
case SUB_REDIT_EXIT_U:
write_to_buffer( d, "Incomplete..press enter.\n\r",0);
ch->substate = SUB_REDIT_MAIN;
break;
case SUB_REDIT_EXIT_D:
write_to_buffer( d, "Incomplete..press enter.\n\r",0);
ch->substate = SUB_REDIT_MAIN;
break;
case SUB_REDIT_EXTRA_DESC:
write_to_buffer( d, "Incomplete..press enter.\n\r",0);
ch->substate = SUB_REDIT_MAIN;
break;
default:
bug( "GRedit_Engine: bad substate %d.",ch->substate );
bug( "Calling GRedit_Cleanup on %s",capitalize(ch->name));
gredit_cleanup( ch );
return;
}
return;
}
/*
* Display the Header Line
*/
void display_header( CHAR_DATA *ch )
{
record_call("<display_header>");
do_clear(ch,"");
send_to_char("DONT USE THIS: IT IS INCOMPLETE! --GW\n\r",ch);
send_to_char("\n\r*----------------------------------------------------*\n\r",ch);
ch_printf(ch,"* WolfPaw Menu Driven OLC -- Version %s *",version);
send_to_char("\n\r*----------------------------------------------------*\n\r",ch);
return;
}
/*
* Returns what Vnum an exit direction leads to, -1 if none.
*/
int find_exit( ROOM_INDEX_DATA *room, int dir )
{
EXIT_DATA *pexit;
int cnt;
for ( cnt = 0, pexit = room->first_exit; pexit; pexit = pexit->next )
{
if ( pexit->vdir == dir && pexit->to_room )
{
return pexit->to_room->vnum;
}
}
return -1;
}
/*
* Displays the Mian menu for GRedit
*/
void display_main_redit_page( CHAR_DATA *ch )
{
ROOM_INDEX_DATA *room;
ZONE_DATA *zone;
room = ch->in_room;
if ( ch->in_room->area )
zone = ch->in_room->area->zone;
else
zone = find_zone(1);
display_header(ch);
ch_printf( ch, "Room Number: [%d] Zone #: [%d]\n\r",room->vnum,zone->number);
ch_printf( ch, "Area: [%s]\n\r",room->area ? room->area->name : "None!");
ch_printf( ch, "1) Name: [%s]\n\r",room->name);
send_to_char("2) Description\n\r",ch);
ch_printf( ch, "3) Room Flags: %s\n\r",flag_string(ch->in_room->room_flags,r_flags));
ch_printf( ch, "4) Sector Type: %s\n\r",sector_name(ch->in_room->sector_type));
ch_printf( ch, "5) Exit North: %d\n\r", find_exit( room, DIR_NORTH ) );
ch_printf( ch, "6) Exit East: %d\n\r", find_exit( room, DIR_EAST ) );
ch_printf( ch, "7) Exit South: %d\n\r", find_exit( room, DIR_SOUTH ) );
ch_printf( ch, "8) Exit West: %d\n\r", find_exit( room, DIR_WEST ) );
ch_printf( ch, "9) Exit Up: %d\n\r", find_exit( room, DIR_UP ) );
ch_printf( ch, "A) Exit Down: %d\n\r", find_exit( room, DIR_DOWN ) );
send_to_char("B) Extra Descriptions Menu\n\r",ch);
send_to_char("Q) Quit\n\r",ch);
send_to_char("Enter Choice: ",ch);
return;
}
/*
* Begin GOedit Functions --GW
*/
void do_goedit( CHAR_DATA *ch, char *argument )
{
record_call("<do_goedit>");
return;
}
/*
* Begin GMedit Functions --GW
*/
void do_gmedit( CHAR_DATA *ch, char *argument )
{
record_call("<do_gmedit>");
return;
}