void Particle::do_show(std::ostream& out) const { internal::PrefixStream preout(&out); preout << "index: " << get_index() << (get_is_active()? " (active)":" (dead)"); preout << std::endl; if (get_is_part_of_model()) { { FloatKeys fks= get_float_keys(); if (!fks.empty()) { preout << "float attributes:" << std::endl; preout.set_prefix(" "); for (FloatKeys::const_iterator it= fks.begin(); it != fks.end(); ++it) { FloatKey k =*it; preout << k << ": " << get_model()->get_attribute(k, id_, false); preout << " (" << get_model()->get_derivative(k, id_, false) << ") "; preout << (get_is_optimized(k)?" (optimized)":""); preout << std::endl; } preout.set_prefix(""); } } show_attributes(get_model(), get_int_keys(), id_, "int", IdentityValue(), preout); show_attributes(get_model(), get_string_keys(), id_, "string", IdentityValue(), preout); show_attributes(get_model(), get_model()->internal::ParticleAttributeTable ::get_attribute_keys(id_) , id_, "particle", NameValue(get_model()), preout); show_attributes(get_model(), get_model()->internal::ObjectAttributeTable ::get_attribute_keys(id_) , id_, "object", DirectNameValue(), preout); show_attributes(get_model(), get_model()->internal ::ParticlesAttributeTable ::get_attribute_keys(id_), id_, "particles", SizeValue<NameValue>(NameValue(get_model())), preout); show_attributes(get_model(), get_model()->internal::ObjectsAttributeTable ::get_attribute_keys(id_), id_, "objects", SizeValue<DirectNameValue>(), preout); show_attributes(get_model(), get_model()->internal::IntsAttributeTable ::get_attribute_keys(id_), id_, "ints", SizeValue<IdentityValue>(), preout); } }
bool_t dump_player_data(player_db_data_t *db_data) { size_t i; for (i = 0; i < db_data->key_data.length; i += sizeof(player_key_t)) { player_key_t *key; key = (player_key_t *) &db_data->key_data.data[i]; show_key_player(key, i); show_attributes(db_data->att_data.data, key); show_stats_career(db_data->career_data.data, key); show_stats_season(db_data->season_data.data, key); INFO("\n"); } return TRUE; }
/* * Set the user attributes */ void set_attributes(UR_OBJECT user) { char name[USER_NAME_LEN + 1], *recname; int i, tmp; if (word_count < 2) { i = -1; } else { /* FIXME: Add abbreviated matching like help() does */ for (i = 0; setstr[i].type; ++i) { if (!strcasecmp(setstr[i].type, word[1])) { break; } } if (!setstr[i].type) { i = -1; } } if (i == -1) { write_user(user, "Attributes you can set are:\n\n"); for (i = 0; setstr[i].type; ++i) { vwrite_user(user, "~FC%s~RS : %s\n", setstr[i].type, setstr[i].desc); } write_user(user, "\n"); return; } write_user(user, "\n"); switch (i) { case SETSHOW: show_attributes(user); return; case SETGEND: *word[2] = tolower(*word[2]); if (*word[2] == 'm' || *word[2] == 'f' || *word[2] == 'n') { switch (*word[2]) { case 'm': user->gender = MALE; write_user(user, "Gender set to Male\n"); break; case 'f': user->gender = FEMALE; write_user(user, "Gender set to Female\n"); break; case 'n': user->gender = NEUTER; write_user(user, "Gender set to Unset\n"); break; } check_autopromote(user, 1); return; } write_user(user, "Usage: set gender m|f|n\n"); return; case SETAGE: if (word_count < 3) { write_user(user, "Usage: set age <age>\n"); return; } tmp = atoi(word[2]); if (tmp < 0 || tmp > 200) { write_user(user, "You can only set your age range between 0 (unset) and 200.\n"); return; } user->age = tmp; vwrite_user(user, "Age now set to: %d\n", user->age); return; case SETWRAP: switch (user->wrap) { case 0: user->wrap = 1; write_user(user, "Word wrap now ON\n"); break; case 1: user->wrap = 0; write_user(user, "Word wrap now OFF\n"); break; } return; case SETEMAIL: strcpy(word[2], colour_com_strip(word[2])); if (strlen(word[2]) > 80) { write_user(user, "The maximum email length you can have is 80 characters.\n"); return; } if (!validate_email(word[2])) { write_user(user, "That email address format is incorrect. Correct format: [email protected]\n"); return; } strcpy(user->email, word[2]); if (!*user->email) { write_user(user, "Email set to : ~FRunset\n"); } else { vwrite_user(user, "Email set to : ~FC%s\n", user->email); } set_forward_email(user); return; case SETHOMEP: strcpy(word[2], colour_com_strip(word[2])); if (strlen(word[2]) > 80) { write_user(user, "The maximum homepage length you can have is 80 characters.\n"); return; } strcpy(user->homepage, word[2]); if (!*user->homepage) { write_user(user, "Homepage set to : ~FRunset\n"); } else { vwrite_user(user, "Homepage set to : ~FC%s\n", user->homepage); } return; case SETHIDEEMAIL: switch (user->hideemail) { case 0: user->hideemail = 1; write_user(user, "Email now showing to only the admins.\n"); break; case 1: user->hideemail = 0; write_user(user, "Email now showing to everyone.\n"); break; } return; case SETCOLOUR: switch (user->colour) { case 0: user->colour = 1; write_user(user, "~FCColour now on\n"); break; case 1: user->colour = 0; write_user(user, "Colour now off\n"); break; } return; case SETPAGER: if (word_count < 3) { write_user(user, "Usage: set pager <length>\n"); return; } user->pager = atoi(word[2]); if (user->pager < MAX_LINES || user->pager > 99) { vwrite_user(user, "Pager can only be set between %d and 99 - setting to default\n", MAX_LINES); user->pager = 23; } vwrite_user(user, "Pager length now set to: %d\n", user->pager); return; case SETROOM: switch (user->lroom) { case 0: user->lroom = 1; write_user(user, "You will log on into the room you left from.\n"); break; case 1: user->lroom = 0; write_user(user, "You will log on into the main room.\n"); break; } return; case SETFWD: if (!*user->email) { write_user(user, "You have not yet set your email address - autofwd cannot be used until you do.\n"); return; } if (!user->mail_verified) { write_user(user, "You have not yet verified your email - autofwd cannot be used until you do.\n"); return; } switch (user->autofwd) { case 0: user->autofwd = 1; write_user(user, "You will also receive smails via email.\n"); break; case 1: user->autofwd = 0; write_user(user, "You will no longer receive smails via email.\n"); break; } return; case SETPASSWD: switch (user->show_pass) { case 0: user->show_pass = 1; write_user(user, "You will now see your password when entering it at login.\n"); break; case 1: user->show_pass = 0; write_user(user, "You will no longer see your password when entering it at login.\n"); break; } return; case SETRDESC: switch (user->show_rdesc) { case 0: user->show_rdesc = 1; write_user(user, "You will now see the room descriptions.\n"); break; case 1: user->show_rdesc = 0; write_user(user, "You will no longer see the room descriptions.\n"); break; } return; case SETCOMMAND: switch (user->cmd_type) { case 0: user->cmd_type = 1; write_user(user, "You will now see commands listed by functionality.\n"); break; case 1: user->cmd_type = 0; write_user(user, "You will now see commands listed by level.\n"); break; } return; case SETRECAP: if (!amsys->allow_recaps) { write_user(user, "Sorry, names cannot be recapped at this present time.\n"); return; } if (word_count < 3) { write_user(user, "Usage: set recap <name as you would like it>\n"); return; } if (strlen(word[2]) > RECAP_NAME_LEN - 3) { write_user(user, "The recapped name length is too long - try using fewer colour codes.\n"); return; } recname = colour_com_strip(word[2]); if (strlen(recname) > USER_NAME_LEN) { write_user(user, "The recapped name still has to match your proper name.\n"); return; } strcpy(name, recname); strtolower(name); *name = toupper(*name); if (strcmp(user->name, name)) { write_user(user, "The recapped name still has to match your proper name.\n"); return; } strcpy(user->recap, word[2]); strcat(user->recap, "~RS"); /* user->recap is allways escaped with a reset to its colours... */ strcpy(user->bw_recap, recname); vwrite_user(user, "Your name will now appear as \"%s~RS\" on the \"who\", \"examine\", tells, etc.\n", user->recap); return; case SETICQ: strcpy(word[2], colour_com_strip(word[2])); if (strlen(word[2]) > ICQ_LEN) { vwrite_user(user, "The maximum ICQ UIN length you can have is %d characters.\n", ICQ_LEN); return; } strcpy(user->icq, word[2]); if (!*user->icq) { write_user(user, "ICQ number set to : ~FRunset\n"); } else { vwrite_user(user, "ICQ number set to : ~FC%s\n", user->icq); } return; case SETALERT: switch (user->alert) { case 0: user->alert = 1; write_user(user, "You will now be alerted if anyone on your friends list logs on.\n"); break; case 1: user->alert = 0; write_user(user, "You will no longer be alerted if anyone on your friends list logs on.\n"); break; } return; case SETREVBUF: switch (user->reverse_buffer) { case 0: user->reverse_buffer = 1; write_user(user, "~FCBuffers are now reversed\n"); break; case 1: user->reverse_buffer = 0; write_user(user, "Buffers now not reversed\n"); break; } return; } }
int change_object( FL_OBJECT * obj, int all ) { FL_OBJECT *retobj; FD_generic_attrib *ui = fd_generic_attrib; FL_FORM * spec_form = NULL; attrib_init( ui ); /* Save current attributes for later restore */ curobj = obj; save_edited_object( obj ); /* Show only required parts */ if ( all ) { fl_show_object( ui->labelobj ); fl_show_object( ui->scobj ); fl_show_object( ui->nameobj ); fl_show_object( ui->cbnameobj ); fl_show_object( ui->argobj ); if ( ( spec_form = create_spec_form( curobj ) ) ) { FL_OBJECT *t; t = fl_addto_tabfolder( fd_attrib->attrib_folder, "Spec", spec_form ); fl_set_object_shortcut( t, "#S", 1 ); } } else { fl_hide_object( ui->labelobj ); fl_hide_object( ui->scobj ); fl_hide_object( ui->nameobj ); fl_hide_object( ui->cbnameobj ); fl_hide_object( ui->argobj ); } /* Show attributes of the current object */ show_attributes( obj ); /* Do interaction */ fl_deactivate_all_forms( ); /* Disable selection */ no_selection = 1; fl_show_form( fd_attrib->attrib, FL_PLACE_GEOMETRY, FL_FULLBORDER, "Attributes" ); fl_set_app_mainform( fd_attrib->attrib ); /* Both cancel and readyobj should have their own callbacks, so we don't need to call fl_do_forms(), but since attribute editing can't be invoked for more than one item at a time we need to block the process_xevent. TODO */ do { XEvent xev; retobj = fl_do_forms( ); if ( retobj == FL_EVENT ) fl_XNextEvent( &xev ); } while ( ! ( ( retobj == fd_attrib->readyobj && validate_attributes( curobj ) ) || retobj == fd_attrib->cancelobj ) ); if ( retobj == fd_attrib->cancelobj ) { restore_edited_object( obj ); redraw_the_form( 0 ); } else { reread_spec_form( obj ); readback_attributes( obj ); spec_to_superspec( obj ); } cleanup_saved_object( ); fl_set_app_mainform( fd_control->control ); fl_set_folder_bynumber( fd_attrib->attrib_folder, 1 ); if ( spec_form ) fl_delete_folder( fd_attrib->attrib_folder, spec_form ); fl_hide_form( fd_attrib->attrib ); fl_activate_all_forms( ); no_selection = 0; return retobj == fd_attrib->readyobj; }