/* Do not remove the headers from this file! see /USAGE for more info. */
/*
** userinfo.c -- user information
**
** 950821, Deathblade: created.
*/
#include <config.h>
#include <mudlib.h>
#include <security.h>
void sw_body_handle_new_logon();
object query_body();
void save_me();
varargs void modal_push(function input_func,
mixed prompt,
int secure,
function return_to_func);
varargs void modal_func(function input_func,
mixed prompt,
int secure);
void modal_pop();
/* states */
#define GENDER_QUERY 0
#define GOT_GENDER 1
#define GOT_EMAIL 2
#define GOT_REAL_NAME 3
#define GOT_URL 4
private string email;
private string real_name;
private int ed_setup;
private string url;
//temporary new user vars
nosave private int n_gen = -1;
//### wah! get rid of this. need by sw_body.c; should move to NEW_USER_D
protected nomask int query_n_gen()
{
return n_gen;
}
nomask void set_ed_setup(int code)
{
ed_setup = code;
save_me();
}
nomask int query_ed_setup()
{
return ed_setup;
}
//### ACK! should disappear. need something more secure than this
nomask string query_email()
{
return email;
}
nomask void set_real_name(string new_name)
{
if(this_user() != this_object())
error("illegal attempt to set real name\n");
real_name = new_name;
save_me();
}
nomask void set_email(string new_email)
{
if(this_user() != this_object())
error("illegal attempt to set email address\n");
email = new_email;
save_me();
}
nomask void set_url(string new_url)
{
if(this_user() != this_object())
error("illegal attempt to set URL\n");
url = new_url;
save_me();
}
nomask string query_url()
{
return url;
}
protected nomask varargs
void userinfo_handle_logon(int state, mixed extra, string arg)
{
switch(state)
{
case GENDER_QUERY:
modal_push((: userinfo_handle_logon, GOT_GENDER, 0 :),
"Are you male or female? ");
break;
case GOT_GENDER:
arg = lower_case(arg);
if(arg == "y" || arg == "yes")
{
write("Ha, ha, ha. Which one are you?\n");
return;
}
if(arg == "n" || arg == "no")
{
write("Well, which one would you have liked to be, then?\n");
return;
}
if(arg == "f" || arg == "female")
n_gen = 2;
else if(arg != "m" && arg != "male")
{
write("I've never heard of that gender. Please try again.\n");
return;
}
else
{
n_gen = 1;
}
write("\n"
"The following info is only seen by you and administrators\n"
" if you prepend a # to your response.\n"
"\n"
"You cannot gain wizard status without valid responses to these questions:\n");
modal_func((: userinfo_handle_logon, GOT_EMAIL, 0 :),
"Your email address: ");
break;
case GOT_EMAIL:
email = arg;
modal_func((: userinfo_handle_logon, GOT_REAL_NAME, 0 :),
"Your real name: ");
break;
case GOT_REAL_NAME:
real_name = arg;
modal_func((: userinfo_handle_logon, GOT_URL, 0 :),
"Your home page address (if any): ");
break;
case GOT_URL:
url = arg;
/*
** Done with this series of inputs
*/
modal_pop();
/*
** Let's move on to introducing the character to the mud.
*/
if(file_size(NEW_PLAYER) <= 0)
{
sw_body_handle_new_logon();
return;
}
more_file(NEW_PLAYER, 0, (: sw_body_handle_new_logon :));
}
}