예제 #1
0
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);
  }
}
예제 #2
0
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;
}
예제 #3
0
파일: set.c 프로젝트: amnuts/Amnuts
/*
 * 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;
    }
}
예제 #4
0
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;
}