+static uint8_t set_char_by_string_comparison(char * string, char * comparand,
+ char * c_to_set, char value)
+{
+ if (!strcmp(string, comparand))
+ {
+ * c_to_set = value;
+ return 1;
+ }
+ return 0;
+}
+
+
+
+static uint8_t parse_player_command_1arg(char * tok0, char * tok1)
+{
+ struct Thing * player = get_player();
+ if (
+ parse_val(tok0, tok1, s[S_CMD_DROP], '8', (char *) &player->arg)
+ || parse_val(tok0, tok1, s[S_CMD_USE], '8', (char *) &player->arg))
+ {
+ player->command = get_thing_action_id_by_name(tok0);
+ turn_over();
+ }
+ else if (!strcmp(tok0, s[S_CMD_MOVE]))
+ {
+ char dir = '\0';
+ if (!( set_char_by_string_comparison(tok1, "east", &dir, 'd')
+ || set_char_by_string_comparison(tok1, "south-east", &dir, 'c')
+ || set_char_by_string_comparison(tok1, "south-west", &dir, 'x')
+ || set_char_by_string_comparison(tok1, "west", &dir, 's')
+ || set_char_by_string_comparison(tok1, "north-west", &dir, 'w')
+ || set_char_by_string_comparison(tok1, "north-east", &dir, 'e')))
+ {
+ return 0;
+ }
+ player->arg = dir;
+ player->command = get_thing_action_id_by_name(tok0);
+ turn_over();
+ }
+ else
+ {
+ return 0;
+ }
+ return 1;
+}
+
+
+
+static uint8_t parse_command_1arg(char * tok0, char * tok1)
+{
+ char * tok2 = token_from_line(NULL);
+ if ( parse_thing_manipulation(tok0, tok1)
+ || parse_player_command_1arg(tok0, tok1)
+ || parse_val(tok0, tok1, s[S_CMD_SEED_RAND], 'U', (char *) &world.seed)
+ || parse_val(tok0, tok1, s[S_CMD_TURN], 'u', (char *) &world.turn)
+ || parse_do_fov(tok0, tok1));
+ else if (parse_val(tok0,tok1,s[S_CMD_SEED_MAP],'U',(char *)&world.seed_map))
+
+ {
+ remake_map();
+ }
+ else if (parse_val(tok0, tok1, s[S_CMD_MAKE_WORLD],'U',(char *)&world.seed))
+ {
+ remake_world();
+ }
+ else
+ {
+ return 0;
+ }
+ char * err = "But one argument expected, ignoring further arguments.";
+ err_line (NULL != tok2, err);
+ return 1;
+}
+
+
+