Refactored WMUD_CLIENT_STATE_NEWCHAR state

WMUD_CLIENT_STATE_NEWCHAR is now removed in favour of
WMUD_CLIENT_STATE_YESNO

Signed-off-by: Gergely POLONKAI <polesz@w00d5t0ck.info>
This commit is contained in:
Gergely POLONKAI 2012-05-17 22:30:06 +02:00
parent 4e479e0045
commit e821a44c71
3 changed files with 20 additions and 21 deletions

View File

@ -211,7 +211,8 @@ wmud_client_callback(GSocket *client_socket, GIOCondition condition, wmudClient
{ {
client->player = g_new0(wmudPlayer, 1); client->player = g_new0(wmudPlayer, 1);
client->player->player_name = g_strdup(client->buffer->str); client->player->player_name = g_strdup(client->buffer->str);
client->state = WMUD_CLIENT_STATE_NEWCHAR; client->state = WMUD_CLIENT_STATE_YESNO;
client->yesNoCallback = wmud_client_newchar_answer;
wmud_client_send(client, "Is %s new to this game? [Y/N] ", client->buffer->str); wmud_client_send(client, "Is %s new to this game? [Y/N] ", client->buffer->str);
} }
} }
@ -295,23 +296,6 @@ wmud_client_callback(GSocket *client_socket, GIOCondition condition, wmudClient
wmud_client_send(client, "Please enter a 'Y' or 'N' character: "); wmud_client_send(client, "Please enter a 'Y' or 'N' character: ");
} }
break; break;
case WMUD_CLIENT_STATE_NEWCHAR:
if (g_ascii_strcasecmp(client->buffer->str, "n") == 0)
{
wmud_client_send(client, "What is your player-name, then? ");
client->state = WMUD_CLIENT_STATE_FRESH;
}
else if (g_ascii_strcasecmp(client->buffer->str, "y") == 0)
{
g_log(G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "Creating new player\n");
wmud_client_send(client, "Welcome to this MUD!\r\nPlease enter your e-mail address: ");
client->state = WMUD_CLIENT_STATE_REGISTERING;
}
else
{
wmud_client_send(client, "Sorry, but for this question I only understand 'Y' or 'N'.\r\nIs %s a new player here? [Y/N] ", client->player->player_name);
}
break;
case WMUD_CLIENT_STATE_REGISTERING: case WMUD_CLIENT_STATE_REGISTERING:
if (!*(client->buffer->str)) if (!*(client->buffer->str))
{ {
@ -608,3 +592,20 @@ wmud_client_quitanswer(wmudClient *client, gboolean answer)
client->state = WMUD_CLIENT_STATE_MENU; client->state = WMUD_CLIENT_STATE_MENU;
} }
} }
void
wmud_client_newchar_answer(wmudClient *client, gboolean answer)
{
if (answer)
{
g_log(G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "Creating new player\n");
wmud_client_send(client, "Welcome to this MUD!\r\nPlease enter your e-mail address: ");
client->state = WMUD_CLIENT_STATE_REGISTERING;
}
else
{
wmud_client_send(client, "What is your player-name, then? ");
client->state = WMUD_CLIENT_STATE_FRESH;
}
}

View File

@ -65,5 +65,6 @@ extern GSList *clients;
gboolean wmud_networking_init(guint port_number, GMainContext *game_context, GSList *menu_items, GError **err); gboolean wmud_networking_init(guint port_number, GMainContext *game_context, GSList *menu_items, GError **err);
void wmud_client_send(wmudClient *client, const gchar *fmt, ...); void wmud_client_send(wmudClient *client, const gchar *fmt, ...);
void wmud_client_quitanswer(wmudClient *client, gboolean answer); void wmud_client_quitanswer(wmudClient *client, gboolean answer);
void wmud_client_newchar_answer(wmudClient *client, gboolean answer);
#endif #endif

View File

@ -45,8 +45,6 @@
* that are called before and after the client enters a new state, this * that are called before and after the client enters a new state, this
* could be a three-state stuff, in which the player can enter e.g ? as * could be a three-state stuff, in which the player can enter e.g ? as
* the answer, so they would be presented with the question again. * the answer, so they would be presented with the question again.
* @WMUD_CLIENT_STATE_NEWCHAR: Player name entered on the login screen was
* invalid. Waiting for answer if this is a new player
* @WMUD_CLIENT_STATE_REGISTERING: Registering a new player. Waiting for the * @WMUD_CLIENT_STATE_REGISTERING: Registering a new player. Waiting for the
* e-mail address to be given * e-mail address to be given
* @WMUD_CLIENT_STATE_REGEMAIL_CONFIRM: E-mail address entered séms valid, * @WMUD_CLIENT_STATE_REGEMAIL_CONFIRM: E-mail address entered séms valid,
@ -60,7 +58,6 @@ typedef enum {
WMUD_CLIENT_STATE_MENU, WMUD_CLIENT_STATE_MENU,
WMUD_CLIENT_STATE_INGAME, WMUD_CLIENT_STATE_INGAME,
WMUD_CLIENT_STATE_YESNO, WMUD_CLIENT_STATE_YESNO,
WMUD_CLIENT_STATE_NEWCHAR,
WMUD_CLIENT_STATE_REGISTERING, WMUD_CLIENT_STATE_REGISTERING,
WMUD_CLIENT_STATE_REGEMAIL_CONFIRM WMUD_CLIENT_STATE_REGEMAIL_CONFIRM
} wmudClientState; } wmudClientState;