本文整理汇总了C++中path_build函数的典型用法代码示例。如果您正苦于以下问题:C++ path_build函数的具体用法?C++ path_build怎么用?C++ path_build使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了path_build函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: init_file_paths
//.........这里部分代码省略.........
/*** Build the sub-directory names ***/
/* Build a path name */
strcpy(tail, "apex");
ANGBAND_DIR_APEX = string_make(path);
/* Build a path name */
strcpy(tail, "bone");
ANGBAND_DIR_BONE = string_make(path);
/* Build a path name */
strcpy(tail, "data");
ANGBAND_DIR_DATA = string_make(path);
/* Build a path name */
strcpy(tail, "edit");
ANGBAND_DIR_EDIT = string_make(path);
/* Build a path name */
strcpy(tail, "file");
ANGBAND_DIR_FILE = string_make(path);
/* Build a path name */
strcpy(tail, "help");
ANGBAND_DIR_HELP = string_make(path);
/* Build a path name */
strcpy(tail, "info");
ANGBAND_DIR_INFO = string_make(path);
/* Build a path name */
strcpy(tail, "save");
ANGBAND_DIR_SAVE = string_make(path);
/* Build a path name */
strcpy(tail, "pref");
ANGBAND_DIR_PREF = string_make(path);
#ifdef PRIVATE_USER_PATH
/* Build the path to the user specific directory */
path_build(buf, 1024, PRIVATE_USER_PATH, VERSION_NAME);
/* Build a relative path name */
ANGBAND_DIR_USER = string_make(buf);
#else /* PRIVATE_USER_PATH */
/* Build a path name */
strcpy(tail, "user");
ANGBAND_DIR_USER = string_make(path);
#endif /* PRIVATE_USER_PATH */
/* Build a path name */
strcpy(tail, "xtra");
ANGBAND_DIR_XTRA = string_make(path);
#endif /* VM */
#ifdef NeXT
/* Allow "fat binary" usage with NeXT */
if (TRUE)
{
cptr next = NULL;
# if defined(m68k)
next = "m68k";
# endif
# if defined(i386)
next = "i386";
# endif
# if defined(sparc)
next = "sparc";
# endif
# if defined(hppa)
next = "hppa";
# endif
/* Use special directory */
if (next)
{
/* Forget the old path name */
string_free(ANGBAND_DIR_DATA);
/* Build a new path name */
sprintf(tail, "data-%s", next);
ANGBAND_DIR_DATA = string_make(path);
}
}
#endif /* NeXT */
}
开发者ID:myshkin,项目名称:steamband,代码行数:101,代码来源:init2.c
示例2: stats_collect
/**
* This is the function called from wiz-debug.c.
*/
void stats_collect(void)
{
static int simtype;
static bool auto_flag;
char buf[1024];
/* Prompt the user for sim params */
simtype = stats_prompt();
/* Make sure the results are good! */
if (!((simtype == 1) || (simtype == 2)))
return;
/* Are we in diving or clearing mode */
if (simtype == 2)
clearing = TRUE;
else
clearing = FALSE;
/* Open log file */
path_build(buf, sizeof(buf), ANGBAND_DIR_USER, "stats.log");
stats_log = file_open(buf, MODE_WRITE, FTYPE_TEXT);
/* Logging didn't work */
if (!stats_log) {
msg("Error - can't open stats.log for writing.");
exit(1);
}
/* Turn on auto-more. This will clear prompts for items
* that drop under the player, or that can't fit on the
* floor due to too many items. This is a very small amount
* of items, even on deeper levels, so it's not worth worrying
* too much about.
*/
auto_flag = FALSE;
if (!OPT(auto_more)) {
/* Remember that we turned off auto_more */
auto_flag = TRUE;
/* Turn on auto-more */
option_set(option_name(OPT_auto_more),TRUE);
}
/* Print heading for the file */
print_heading();
/* Make sure all stats are 0 */
init_stat_vals();
/* Select diving option */
if (!clearing) diving_stats();
/* Select clearing option */
if (clearing) clearing_stats();
/* Turn auto-more back off */
if (auto_flag) option_set(option_name(OPT_auto_more), FALSE);
/* Close log file */
if (!file_close(stats_log)) {
msg("Error - can't close randart.log file.");
exit(1);
}
}
开发者ID:NickMcConnell,项目名称:FirstAgeAngband,代码行数:69,代码来源:wiz-stats.c
示例3: do_cmd_save_screen_text
/*
* Save a simple text screendump.
*/
static void do_cmd_save_screen_text(void)
{
int y, x;
byte a = 0;
char c = ' ';
ang_file *fff;
char buf[1024];
/* Build the filename */
path_build(buf, 1024, ANGBAND_DIR_USER, "dump.txt");
fff = file_open(buf, MODE_WRITE, FTYPE_TEXT);
if (!fff) return;
/* Save screen */
screen_save();
/* Dump the screen */
for (y = 0; y < 24; y++)
{
/* Dump each row */
for (x = 0; x < 79; x++)
{
/* Get the attr/char */
(void)(Term_what(x, y, &a, &c));
/* Dump it */
buf[x] = c;
}
/* Terminate */
buf[x] = '\0';
/* End the row */
file_putf(fff, "%s\n", buf);
}
/* Skip a line */
file_putf(fff, "\n");
/* Dump the screen */
for (y = 0; y < 24; y++)
{
/* Dump each row */
for (x = 0; x < 79; x++)
{
/* Get the attr/char */
(void)(Term_what(x, y, &a, &c));
/* Dump it */
buf[x] = hack[a & 0x0F];
}
/* Terminate */
buf[x] = '\0';
/* End the row */
file_putf(fff, "%s\n", buf);
}
/* Skip a line */
file_putf(fff, "\n");
/* Close it */
file_close(fff);
/* Message */
msg("Screen dump saved.");
message_flush();
/* Load screen */
screen_load();
}
开发者ID:Chiinatso,项目名称:Anquestria,代码行数:84,代码来源:cmd4.c
示例4: spoil_mon_desc
/*
* Create a spoiler file for monsters
*/
static void spoil_mon_desc(const char *fname)
{
int i, n = 0;
char buf[1024];
char nam[80];
char lev[80];
char rar[80];
char spd[80];
char ac[80];
char hp[80];
char exp[80];
u16b *who;
/* We use either ascii or system-specific encoding */
int encoding = (OPT(xchars_to_file)) ? SYSTEM_SPECIFIC : ASCII;
/* Build the filename */
path_build(buf, sizeof(buf), ANGBAND_DIR_USER, fname);
fh = file_open(buf, MODE_WRITE, FTYPE_TEXT);
/* Oops */
if (!fh)
{
msg("Cannot create spoiler file.");
return;
}
/* Dump the header */
x_file_putf(fh, encoding, "Monster Spoilers for %s\n", buildid);
x_file_putf(fh, encoding, "------------------------------------------\n\n");
/* Dump the header */
x_file_putf(fh, encoding, "%-40.40s%4s%4s%6s%8s%4s %11.11s\n",
"Name", "Lev", "Rar", "Spd", "Hp", "Ac", "Visual Info");
x_file_putf(fh, encoding, "%-40.40s%4s%4s%6s%8s%4s %11.11s\n",
"----", "---", "---", "---", "--", "--", "-----------");
/* Allocate the "who" array */
who = C_ZNEW(z_info->r_max, u16b);
/* Scan the monsters (except the ghost) */
for (i = 1; i < z_info->r_max - 1; i++)
{
monster_race *r_ptr = &r_info[i];
/* Use that monster */
if (r_ptr->name) who[n++] = (u16b)i;
}
/* Sort the array by dungeon depth of monsters */
sort(who, n, sizeof(*who), cmp_monsters);
/* Scan again */
for (i = 0; i < n; i++)
{
monster_race *r_ptr = &r_info[who[i]];
const char *name = r_ptr->name;
/* Get the "name" */
if (rf_has(r_ptr->flags, RF_QUESTOR))
{
strnfmt(nam, sizeof(nam), "[Q] %s", name);
}
else if (rf_has(r_ptr->flags, RF_UNIQUE))
{
strnfmt(nam, sizeof(nam), "[U] %s", name);
}
else
{
strnfmt(nam, sizeof(nam), "The %s", name);
}
/* Level */
strnfmt(lev, sizeof(lev), "%d", r_ptr->level);
/* Rarity */
strnfmt(rar, sizeof(rar), "%d", r_ptr->rarity);
/* Speed */
if (r_ptr->speed >= 110)
strnfmt(spd, sizeof(spd), "+%d", (r_ptr->speed - 110));
else
strnfmt(spd, sizeof(spd), "-%d", (110 - r_ptr->speed));
/* Armor Class */
strnfmt(ac, sizeof(ac), "%d", r_ptr->ac);
/* Hitpoints */
strnfmt(hp, sizeof(hp), "%d", r_ptr->avg_hp);
/* Experience */
//.........这里部分代码省略.........
开发者ID:apwhite,项目名称:angband,代码行数:101,代码来源:wiz-spoil.c
示例5: timestamp
void
timestamp(
char *target,
time_t *time )
{
PATHNAME f1, f2;
BINDING binding, *b = &binding;
string buf[1];
# ifdef DOWNSHIFT_PATHS
string path;
char *p;
string_copy( &path, target );
p = path.value;
do
*p = tolower( *p );
while( *p++ );
target = path.value;
# endif
string_new( buf );
if( !bindhash )
bindhash = hashinit( sizeof( BINDING ), "bindings" );
/* Quick path - is it there? */
b->name = target;
b->time = b->flags = 0;
b->progress = BIND_INIT;
if( hashenter( bindhash, (HASHDATA **)&b ) )
b->name = newstr( target ); /* never freed */
if( b->progress != BIND_INIT )
goto afterscanning;
b->progress = BIND_NOENTRY;
/* Not found - have to scan for it */
path_parse( target, &f1 );
/* Scan directory if not already done so */
{
BINDING binding, *b = &binding;
f2 = f1;
f2.f_grist.len = 0;
path_parent( &f2 );
path_build( &f2, buf, 0 );
b->name = buf->value;
b->time = b->flags = 0;
b->progress = BIND_INIT;
if( hashenter( bindhash, (HASHDATA **)&b ) )
b->name = newstr( buf->value ); /* never freed */
if( !( b->flags & BIND_SCANNED ) )
{
file_dirscan( buf->value, time_enter, bindhash );
b->flags |= BIND_SCANNED;
}
}
/* Scan archive if not already done so */
if( f1.f_member.len )
{
BINDING binding, *b = &binding;
f2 = f1;
f2.f_grist.len = 0;
f2.f_member.len = 0;
string_truncate( buf, 0 );
path_build( &f2, buf, 0 );
b->name = buf->value;
b->time = b->flags = 0;
b->progress = BIND_INIT;
if( hashenter( bindhash, (HASHDATA **)&b ) )
b->name = newstr( buf->value ); /* never freed */
if( !( b->flags & BIND_SCANNED ) )
{
file_archscan( buf->value, time_enter, bindhash );
b->flags |= BIND_SCANNED;
}
}
afterscanning:
if( b->progress == BIND_SPOTTED )
{
if( file_time( b->name, &b->time ) < 0 )
//.........这里部分代码省略.........
开发者ID:NeoAnomaly,项目名称:xray,代码行数:101,代码来源:timestamp.c
示例6: do_cmd_dump_options
/*!
* @brief 現在のオプション設定をダンプ出力する /
* Hack -- Dump option bits usage
* @return なし
*/
static void do_cmd_dump_options(void)
{
int i, j;
FILE *fff;
char buf[1024];
int **exist;
/* Build the filename */
path_build(buf, sizeof buf, ANGBAND_DIR_USER, "opt_info.txt");
/* File type is "TEXT" */
FILE_TYPE(FILE_TYPE_TEXT);
/* Open the file */
fff = my_fopen(buf, "a");
/* Oops */
if (!fff)
{
msg_format(_("ファイル %s を開けませんでした。", "Failed to open file %s."), buf);
msg_print(NULL);
return;
}
/* Allocate the "exist" array (2-dimension) */
C_MAKE(exist, NUM_O_SET, int *);
C_MAKE(*exist, NUM_O_BIT * NUM_O_SET, int);
for (i = 1; i < NUM_O_SET; i++) exist[i] = *exist + i * NUM_O_BIT;
/* Check for exist option bits */
for (i = 0; option_info[i].o_desc; i++)
{
const option_type *ot_ptr = &option_info[i];
if (ot_ptr->o_var) exist[ot_ptr->o_set][ot_ptr->o_bit] = i + 1;
}
fprintf(fff, "[Option bits usage on Hengband %d.%d.%d]\n\n",
FAKE_VER_MAJOR - 10, FAKE_VER_MINOR, FAKE_VER_PATCH);
fputs("Set - Bit (Page) Option Name\n", fff);
fputs("------------------------------------------------\n", fff);
/* Dump option bits usage */
for (i = 0; i < NUM_O_SET; i++)
{
for (j = 0; j < NUM_O_BIT; j++)
{
if (exist[i][j])
{
const option_type *ot_ptr = &option_info[exist[i][j] - 1];
fprintf(fff, " %d - %02d (%4d) %s\n",
i, j, ot_ptr->o_page, ot_ptr->o_text);
}
else
{
fprintf(fff, " %d - %02d\n", i, j);
}
}
fputc('\n', fff);
}
/* Free the "exist" array (2-dimension) */
C_KILL(*exist, NUM_O_BIT * NUM_O_SET, int);
C_KILL(exist, NUM_O_SET, int *);
/* Close it */
my_fclose(fff);
msg_format(_("オプションbit使用状況をファイル %s に書き出しました。", "Option bits usage dump saved to file %s."), buf);
}
开发者ID:naota,项目名称:hengband,代码行数:74,代码来源:wizard2.c
示例7: spoil_obj_desc
/*
* Create a spoiler file for items
*/
static void spoil_obj_desc(const char *fname)
{
int i, k, s, t, n = 0;
u16b who[200];
char buf[1024];
char wgt[80];
char dam[80];
const char *format = "%-51s %7s%6s%4s%9s\n";
/* We use either ascii or system-specific encoding */
int encoding = (OPT(xchars_to_file)) ? SYSTEM_SPECIFIC : ASCII;
/* Open the file */
path_build(buf, sizeof(buf), ANGBAND_DIR_USER, fname);
fh = file_open(buf, MODE_WRITE, FTYPE_TEXT);
/* Oops */
if (!fh)
{
msg("Cannot create spoiler file.");
return;
}
/* Header */
file_putf(fh, "Spoiler File -- Basic Items (%s)\n\n\n", buildid);
/* More Header */
file_putf(fh, format, "Description", "Dam/AC", "Wgt", "Lev", "Cost");
file_putf(fh, format, "----------------------------------------",
"------", "---", "---", "----");
/* List the groups */
for (i = 0; TRUE; i++)
{
/* Write out the group title */
if (group_item[i].name)
{
/* Hack -- bubble-sort by cost and then level */
for (s = 0; s < n - 1; s++)
{
for (t = 0; t < n - 1; t++)
{
int i1 = t;
int i2 = t + 1;
int e1;
int e2;
s32b t1;
s32b t2;
kind_info(NULL, 0, NULL, 0, NULL, 0, &e1, &t1, who[i1]);
kind_info(NULL, 0, NULL, 0, NULL, 0, &e2, &t2, who[i2]);
if ((t1 > t2) || ((t1 == t2) && (e1 > e2)))
{
int tmp = who[i1];
who[i1] = who[i2];
who[i2] = tmp;
}
}
}
/* Spoil each item */
for (s = 0; s < n; s++)
{
int e;
s32b v;
/* Describe the kind */
kind_info(buf, sizeof(buf), dam, sizeof(dam), wgt, sizeof(wgt), &e, &v, who[s]);
/* Dump it */
x_file_putf(fh, encoding, " %-51s%7s%6s%4d%9ld\n",
buf, dam, wgt, e, (long)(v));
}
/* Start a new set */
n = 0;
/* Notice the end */
if (!group_item[i].tval) break;
/* Start a new set */
x_file_putf(fh, encoding, "\n\n%s\n\n", group_item[i].name);
}
/* Get legal item types */
for (k = 1; k < z_info->k_max; k++)
{
object_kind *k_ptr = &k_info[k];
//.........这里部分代码省略.........
开发者ID:apwhite,项目名称:angband,代码行数:101,代码来源:wiz-spoil.c
示例8: dump_artifact_power
/*used to check the power of artifacts. Currently unused*/
void dump_artifact_power(void)
{
int i;
char buf[1024];
int fd;
FILE *fff = NULL;
artifact_type *a_ptr;
/* Build the filename */
path_build(buf, 1024, ANGBAND_DIR_EDIT, "power.txt");
/* Check for existing file */
fd = fd_open(buf, O_RDONLY);
/* Existing file */
if (fd >= 0)
{
char out_val[160];
/* Close the file */
fd_close(fd);
/* Build query */
sprintf(out_val, "Replace existing file %s? ", buf);
/* Ask */
if (get_check(out_val)) fd = -1;
}
/* Open the non-existing file */
if (fd < 0) fff = my_fopen(buf, "w");
/* No output file - fail */
if (!fff) return;
/* Write a note */
fprintf(fff, "# File: artifact_power.txt (autogenerated)\n\n");
/* Read and print out all the objects */
for (i = 1; i < z_info->art_norm_max; i++)
{
s32b power;
char o_name[80];
object_type *i_ptr;
object_type object_type_body;
/* Get local object */
i_ptr = &object_type_body;
/* Get the object */
a_ptr = &a_info[i];
/* Ignore unused objects */
if (!strlen(a_ptr->name))
{
fprintf(fff, "## empty space (available for artifact) ##\n\n");
continue;
}
/* Write the complete name of the artifact*/
make_fake_artifact(i_ptr, i);
/* Identify it */
object_aware(i_ptr);
object_known(i_ptr);
i_ptr->ident |= (IDENT_MENTAL);
/* Get a description to dump */
object_desc(o_name, sizeof(o_name), i_ptr, TRUE, 0);
power = artifact_power(i);
/*dump the information*/
fprintf(fff, "%9d is the power of %55s, tval is %6d \n", power, o_name, a_ptr->tval);
}
/* Done */
fclose(fff);
}
开发者ID:antoine-from-rgrd,项目名称:Minimal,代码行数:85,代码来源:dump_items.c
示例9: write_mon_power
/*
* Use the monster racial information to a format easily parsed by a spreadsheet.
*
* Original function by -EB- (probably), revisions by -LM- & JG.
*/
void write_mon_power(void)
{
int i;
char buf[1024];
int fd;
FILE *fff = NULL;
monster_race *r_ptr;
/* Build the filename */
path_build(buf, 1024, ANGBAND_DIR_EDIT, "mon_power_output.txt");
/* Check for existing file */
fd = fd_open(buf, O_RDONLY);
/* Existing file */
if (fd >= 0)
{
char out_val[160];
/* Close the file */
fd_close(fd);
/* Build query */
sprintf(out_val, "Replace existing file %s? ", buf);
/* Ask */
if (get_check(out_val)) fd = -1;
}
/* Open the non-existing file */
if (fd < 0) fff = my_fopen(buf, "w");
/* No output file - fail */
if (!fff) return;
/* Write a note */
fprintf(fff, "# File: mon_power_output.txt (autogenerated)\n\n");
/* Write a note */
fprintf(fff, "##### The Player #####\n\n");
/* Read and print out all the monsters */
for (i = 0; i < z_info->r_max; i++)
{
/* Get the monster */
r_ptr = &r_info[i];
/* Ignore empty monsters */
if (!strlen(r_name + r_ptr->name))
{
fprintf(fff, "## empty space (available for monsters) ##\n\n");
continue;
}
/* Write New/Number/Name */
fprintf(fff, "%3d:lvl: %3d power:%9d hp:%9d dam:%9d name: %s\n",
i, r_ptr->level, r_ptr->mon_power, r_ptr->mon_eval_hp,
r_ptr->mon_eval_dam,(r_name + r_ptr->name));
}
/*a few blank lines*/
fprintf(fff, "\n\n");
/*first clear the tables*/
for (i = 0; i < MAX_DEPTH; i++)
{
/* Write New/Number/Name */
fprintf(fff, "lvl: %3d unique_ave_power:%9d creature_ave_power:%9d \n", i,
mon_power_ave[i][CREATURE_UNIQUE], mon_power_ave[i][CREATURE_NON_UNIQUE]);
}
/* Done */
fclose(fff);
}
开发者ID:antoine-from-rgrd,项目名称:Minimal,代码行数:85,代码来源:dump_items.c
示例10: spoil_artifact
/**
* Create a spoiler file for artifacts
*/
static void spoil_artifact(const char *fname)
{
int i, j;
char buf[1024];
/* Build the filename */
path_build(buf, sizeof(buf), ANGBAND_DIR_USER, fname);
fh = file_open(buf, MODE_WRITE, FTYPE_TEXT);
/* Oops */
if (!fh) {
msg("Cannot create spoiler file.");
return;
}
/* Dump to the spoiler file */
text_out_hook = text_out_to_file;
text_out_file = fh;
/* Dump the header */
spoiler_underline(format("Artifact Spoilers for %s", buildid), '=');
text_out("\n Randart seed is %u\n", seed_randart);
/* List the artifacts by tval */
for (i = 0; group_artifact[i].tval; i++) {
/* Write out the group title */
if (group_artifact[i].name) {
spoiler_blanklines(2);
spoiler_underline(group_artifact[i].name, '=');
spoiler_blanklines(1);
}
/* Now search through all of the artifacts */
for (j = 1; j < z_info->a_max; ++j) {
struct artifact *art = &a_info[j];
char buf2[80];
char *temp;
struct object *obj, *known_obj;
/* We only want objects in the current group */
if (art->tval != group_artifact[i].tval) continue;
/* Get local object */
obj = object_new();
known_obj = object_new();
/* Attempt to "forge" the artifact */
if (!make_fake_artifact(obj, art)) {
object_delete(&known_obj);
object_delete(&obj);
continue;
}
/* Grab artifact name */
object_copy(known_obj, obj);
obj->known = known_obj;
object_desc(buf2, sizeof(buf2), obj, ODESC_PREFIX |
ODESC_COMBAT | ODESC_EXTRA | ODESC_SPOIL);
/* Print name and underline */
spoiler_underline(buf2, '-');
/* Temporarily blank the artifact flavour text - spoilers
spoil the mechanics, not the atmosphere. */
temp = obj->artifact->text;
obj->artifact->text = NULL;
/* Write out the artifact description to the spoiler file */
object_info_spoil(fh, obj, 80);
/* Put back the flavour */
obj->artifact->text = temp;
/*
* Determine the minimum and maximum depths an
* artifact can appear, its rarity, its weight, and
* its power rating.
*/
text_out("\nMin Level %u, Max Level %u, Generation chance %u, Power %d, %d.%d lbs\n",
art->alloc_min, art->alloc_max, art->alloc_prob,
object_power(obj, false, NULL), (art->weight / 10),
(art->weight % 10));
if (OPT(birth_randarts)) text_out("%s.\n", art->text);
/* Terminate the entry */
spoiler_blanklines(2);
object_delete(&known_obj);
object_delete(&obj);
}
}
/* Check for errors */
if (!file_close(fh)) {
msg("Cannot close spoiler file.");
return;
//.........这里部分代码省略.........
开发者ID:CrypticGator,项目名称:angband,代码行数:101,代码来源:wiz-spoil.c
示例11: spoil_mon_info
/**
* Create a spoiler file for monsters (-SHAWN-)
*/
static void spoil_mon_info(const char *fname)
{
char buf[1024];
int i, n;
u16b *who;
int count = 0;
textblock *tb = NULL;
/* Open the file */
path_build(buf, sizeof(buf), ANGBAND_DIR_USER, fname);
fh = file_open(buf, MODE_WRITE, FTYPE_TEXT);
if (!fh) {
msg("Cannot create spoiler file.");
return;
}
/* Dump the header */
tb = textblock_new();
textblock_append(tb, "Monster Spoilers for %s\n", buildid);
textblock_append(tb, "------------------------------------------\n\n");
textblock_to_file(tb, fh, 0, 75);
textblock_free(tb);
tb = NULL;
/* Allocate the "who" array */
who = mem_zalloc(z_info->r_max * sizeof(u16b));
/* Scan the monsters */
for (i = 1; i < z_info->r_max; i++) {
struct monster_race *race = &r_info[i];
/* Use that monster */
if (race->name) who[count++] = (u16b)i;
}
sort(who, count, sizeof(*who), cmp_monsters);
/* List all monsters in order. */
for (n = 0; n < count; n++) {
int r_idx = who[n];
const struct monster_race *race = &r_info[r_idx];
const struct monster_lore *lore = &l_list[r_idx];
tb = textblock_new();
/* Line 1: prefix, name, color, and symbol */
if (rf_has(race->flags, RF_QUESTOR))
textblock_append(tb, "[Q] ");
else if (rf_has(race->flags, RF_UNIQUE))
textblock_append(tb, "[U] ");
else
textblock_append(tb, "The ");
/* As of 3.5, race->name and race->text are stored as UTF-8 strings;
* there is no conversion from the source edit files. */
textblock_append_utf8(tb, race->name);
textblock_append(tb, " ("); /* ---)--- */
textblock_append(tb, attr_to_text(race->d_attr));
textblock_append(tb, " '%c')\n", race->d_char);
/* Line 2: number, level, rarity, speed, HP, AC, exp */
textblock_append(tb, "=== ");
textblock_append(tb, "Num:%d ", r_idx);
textblock_append(tb, "Lev:%d ", race->level);
textblock_append(tb, "Rar:%d ", race->rarity);
if (race->speed >= 110)
textblock_append(tb, "Spd:+%d ", (race->speed - 110));
else
textblock_append(tb, "Spd:-%d ", (110 - race->speed));
textblock_append(tb, "Hp:%d ", race->avg_hp);
textblock_append(tb, "Ac:%d ", race->ac);
textblock_append(tb, "Exp:%ld\n", (long)(race->mexp));
/* Normal description (with automatic line breaks) */
lore_description(tb, race, lore, true);
textblock_append(tb, "\n");
textblock_to_file(tb, fh, 0, 75);
textblock_free(tb);
tb = NULL;
}
/* Free the "who" array */
mem_free(who);
/* Check for errors */
if (!file_close(fh)) {
msg("Cannot close spoiler file.");
return;
}
msg("Successfully created a spoiler file.");
}
开发者ID:CrypticGator,项目名称:angband,代码行数:98,代码来源:wiz-spoil.c
示例12: init_x11
//.........这里部分代码省略.........
}
/* Initialize the windows */
for (i = 0; i < num_term; i++)
{
term_data *td = &data[i];
/* Initialize the term_data */
term_data_init(td, i);
/* Save global entry */
angband_term[i] = Term;
}
/* Raise the "Angband" window */
Infowin_set(data[0].win);
Infowin_raise();
/* Activate the "Angband" window screen */
Term_activate(&data[0].t);
#ifdef USE_GRAPHICS
/* Try graphics */
switch (arg_graphics)
{
case GRAPHICS_ADAM_BOLT:
/* Use tile graphics of Adam Bolt */
bitmap_file = "16x16.bmp";
/* Try the "16x16.bmp" file */
path_build(filename, sizeof(filename), ANGBAND_DIR_XTRA, format("graf/%s", bitmap_file));
/* Use the "16x16.bmp" file if it exists */
if (0 == fd_close(fd_open(filename, O_RDONLY)))
{
/* Use graphics */
use_graphics = TRUE;
use_transparency = TRUE;
pict_wid = pict_hgt = 16;
ANGBAND_GRAF = "new";
break;
}
/* Fall through */
case GRAPHICS_ORIGINAL:
/* Use original tile graphics */
bitmap_file = "8x8.bmp";
/* Try the "8x8.bmp" file */
path_build(filename, sizeof(filename), ANGBAND_DIR_XTRA, format("graf/%s", bitmap_file));
/* Use the "8x8.bmp" file if it exists */
if (0 == fd_close(fd_open(filename, O_RDONLY)))
{
/* Use graphics */
use_graphics = TRUE;
pict_wid = pict_hgt = 8;
ANGBAND_GRAF = "old";
开发者ID:BackupTheBerlios,项目名称:nangband,代码行数:67,代码来源:main-x11.c
示例13: highscore_write
/*
* Actually place an entry into the high score file
* Return the location (0 is best) or -1 on "failure"
*/
static void highscore_write(const high_score scores[], size_t sz)
{
size_t n;
ang_file *lok;
ang_file *scorefile;
char old_name[1024];
char cur_name[1024];
char new_name[1024];
char lok_name[1024];
path_build(old_name, sizeof(old_name), ANGBAND_DIR_APEX, "scores.old");
path_build(cur_name, sizeof(cur_name), ANGBAND_DIR_APEX, "scores.raw");
path_build(new_name, sizeof(new_name), ANGBAND_DIR_APEX, "scores.new");
path_build(lok_name, sizeof(lok_name), ANGBAND_DIR_APEX, "scores.lok");
/* Read in and add new score */
n = highscore_count(scores, sz);
/*** Lock scores ***/
if (file_exists(lok_name))
{
msg("Lock file in place for scorefile; not writing.");
return;
}
safe_setuid_grab();
lok = file_open(lok_name, MODE_WRITE, FTYPE_RAW);
file_lock(lok);
safe_setuid_drop();
if (!lok)
{
msg("Failed to create lock for scorefile; not writing.");
return;
}
/*** Open the new file for writing ***/
safe_setuid_grab();
scorefile = file_open(new_name, MODE_WRITE, FTYPE_RAW);
safe_setuid_drop();
if (!scorefile)
{
msg("Failed to open new scorefile for writing.");
file_close(lok);
file_delete(lok_name);
return;
}
file_write(scorefile, (const char *)scores, sizeof(high_score)*n);
file_close(scorefile);
/*** Now move things around ***/
safe_setuid_grab();
if (file_exists(old_name) && !file_delete(old_name))
msg("Couldn't delete old scorefile");
if (file_exists(cur_name) && !file_move(cur_name, old_name))
msg("Couldn't move old scores.raw out of the way");
if (!file_move(new_name, cur_name))
msg("Couldn't rename new scorefile to scores.raw");
/* Remove the lock */
file_close(lok);
file_delete(lok_name);
safe_setuid_drop();
}
开发者ID:Abigail,项目名称:angband,代码行数:83,代码来源:score.c
示例14: init_xaw
//.........这里部分代码省略.........
topLevel = XtAppInitialize(&appcon, "Angband", NULL, 0, &argc, argv,
fallback, NULL, 0);
/* Initialize the windows */
for (i = 0; i < num_term; i++)
{
term_data *td = &data[i];
term_data_init(td, topLevel, 1024, termNames[i],
(i == 0) ? specialArgs : defaultArgs,
TERM_FALLBACKS, i);
angband_term[i] = Term;
}
/* Activate the "Angband" window screen */
Term_activate(&data[0].t);
/* Raise the "Angband" window */
term_raise(&data[0]);
#ifdef USE_GRAPHICS
/* Try graphics */
switch (arg_graphics)
{
case GRAPHICS_ADAM_BOLT:
/* Use tile graphics of Adam Bolt */
bitmap_file = "16x16.bmp";
/* Try the "16x16.bmp" file */
path_build(filename, sizeof(filename), ANGBAND_DIR_XTRA, format("graf/%s", bitmap_file));
/* Use the "16x16.bmp" file if it exists */
if (0 == fd_close(fd_open(filename, O_RDONLY)))
{
/* Use graphics */
use_graphics = GRAPHICS_ADAM_BOLT;
use_transparency = TRUE;
pict_wid = pict_hgt = 16;
ANGBAND_GRAF = "new";
break;
}
/* Fall through */
case GRAPHICS_ORIGINAL:
/* Use original tile graphics */
bitmap_file = "8x8.bmp";
/* Try the "8x8.bmp" file */
path_build(filename, sizeof(filename), ANGBAND_DIR_XTRA, format("graf/%s", bitmap_file));
/* Use the "8x8.bmp" file if it exists */
if (0 == fd_close(fd_open(filename, O_RDONLY)))
{
/* Use graphics */
use_graphics = GRAPHICS_ORIGINAL;
pict_wid = pict_hgt = 8;
ANGBAND_GRAF = "old";
开发者ID:Falcon-peregrinus,项目名称:angband-russian,代码行数:67,代码来源:main-xaw.c
示例15: search
OBJECT *
search(
OBJECT * target,
time_t *time,
OBJECT * * another_target,
int file
)
{
PATHNAME f[1];
LIST * varlist;
string buf[1];
int found = 0;
/* Will be set to 1 if target location is specified via LOCATE. */
int explicitly_located = 0;
OBJECT * boundname = 0;
if ( another_target )
*another_target = 0;
if (! explicit_bindings )
explicit_bindings = hashinit( sizeof(BINDING),
"explicitly specified locations");
string_new( buf );
/* Parse the filename */
path_parse( object_str( target ), f );
f->f_grist.ptr = 0;
f->f_grist.len = 0;
varlist = var_get( root_module(), constant_LOCATE );
if ( !list_empty( varlist ) )
{
OBJECT * key;
f->f_root.ptr = object_str( list_front( varlist ) );
f->f_root.len = strlen( object_str( list_front( varlist ) ) );
path_build( f, buf, 1 );
if ( DEBUG_SEARCH )
printf( "locate %s: %s\n", object_str( target ), buf->value );
explicitly_located = 1;
key = object_new( buf->value );
timestamp( key, time );
object_free( key );
found = 1;
}
else if ( varlist = var_get( root_module(), constant_SEARCH ), !list_empty( varlist ) )
{
LISTITER iter = list_begin( varlist ), end = list_end( varlist );
for ( ; iter != end; iter = list_next( iter ) )
{
BINDING * ba;
file_info_t *ff;
OBJECT * key;
OBJECT * test_path;
f->f_root.ptr = object_str( list_item( iter ) );
f->f_root.len = strlen( object_str( list_item( iter ) ) );
string_truncate( buf, 0 );
path_build( f, buf, 1 );
if ( DEBUG_SEARCH )
printf( "search %s: %s\n", object_str( target ), buf->value );
test_path = object_new( buf->value );
key = path_as_key( test_path );
object_free( test_path );
ff = file_query( key );
timestamp( key, time );
if ( ( ba = (BINDING *)hash_find( explicit_bindings, key ) ) )
{
if ( DEBUG_SEARCH )
printf(" search %s: found explicitly located target %s\n",
object_str( target ), object_str( ba->target ) );
if ( another_target )
*another_target = ba->target;
found = 1;
object_free( key );
break;
}
else if ( ff && ff->time )
{
if ( !file || ff->is_file )
{
found = 1;
object_free( key );
break;
}
}
object_free( key );
}
}
if ( !found )
//.........这里部分代码省略.........
开发者ID:0xDEC0DE8,项目名称:mcsema,代码行数:101,代码来源:search.c
示例16: write_o_info_txt
/*
* Dump the object information a format easily parsed by a spreadsheet.
*
* Original function by -EB- (probably), revisions by -LM- & JG.
*/
void write_o_info_txt(void)
{
int i, j, bc;
int dlen;
char buf[1024];
int fd;
FILE *fff = NULL;
cptr desc;
object_kind *k_ptr;
/* We allow 75 characters on the line (plus 2) */
u16b line_length = 75;
/* Build the filename */
path_build(buf, 1024, ANGBAND_DIR_EDIT, "o_output.txt");
/* Check for existing file */
fd = fd_open(buf, O_RDONLY);
/* Existing file */
if (fd >= 0)
{
char out_val[160];
/* Close the file */
fd_close(fd);
/* Build query */
sprintf(out_val, "Replace existing file %s? ", buf);
/* Ask */
if (get_check(out_val)) fd = -1;
}
/* Open the non-existing file */
if (fd < 0) fff = my_fopen(buf, "w");
/* No output file - fail */
if (!fff) return;
/* Write a note */
fprintf(fff, "# File: o_info.txt (autogenerated)\n\n");
/* Read and print out all the objects */
for (i = 0; i < z_info->k_max; i++)
{
int counter = 1;
cptr color_name;
/* Get the object */
k_ptr = &k_info[i];
/* Ignore unused objects */
if (!strlen((k_name + k_ptr->name)))
{
fprintf(fff, "## empty space (available for object) ##\n\n");
continue;
}
/* Perform any translations */
/* Write New/Number/Name */
fprintf(fff, "N:%d:%s\n", i, k_name + k_ptr->name);
/*get the color name*/
color_name = get_ext_color_name(k_ptr->d_attr);
/* Write G: line */
fprintf(fff, "G:%d:%c:%s\n", i, k_ptr->d_char, color_name);
/*don't do the rest for the pile symbol*/
if (i == 0)
{
/* Write G: line */
fprintf(fff, "\n\n\n");
continue;
}
/* Write I: line */
fprintf(fff, "I:%d:%d:%d:%d\n", i, k_ptr->tval, k_ptr->sval, k_ptr->pval);
/* Write W: line */
fprintf(fff, "W:%d:%d:%d:%d\n", i, k_ptr->k_level, k_ptr->weight, k_ptr->cost);
/* Write P: line */
fprintf(fff, "P:%d:%d:%d:d:%d:%d:%d:%d\n", i, k_ptr->ac, k_ptr->dd, k_ptr->ds,
k_ptr->to_h, k_ptr->to_d, k_ptr->to_a);
//.........这里部分代码省略.........
开发者ID:antoine-from-rgrd,项目名称:Minimal,代码行数:101,代码来源:dump_items.c
示例17: show_file
//.........这里部分代码省略.........
/* Copy the filename */
my_strcpy(filename, name, sizeof(filename));
n = strlen(filename);
/* Extract the tag from the filename */
for (i = 0; i < n; i++)
{
if (filename[i] == '#')
{
filename[i] = '\0';
tag = filename + i + 1;
break;
}
}
/* Redirect the name */
name = filename;
/* Hack XXX XXX XXX */
if (what)
{
my_strcpy(caption, what, sizeof(caption));
my_strcpy(path, name, sizeof(path));
fff = file_open(path, MODE_READ, FTYPE_TEXT);
}
/* Look in "help" */
if (!fff)
{
strnfmt(caption, sizeof(caption), "Help file '%s'", name);
path_build(path, sizeof(path), ANGBAND_DIR_HELP, name);
fff = file_open(path, MODE_READ, FTYPE_TEXT);
}
/* Look in "info" */
if (!fff)
{
strnfmt(caption, sizeof(caption), "Info file '%s'", name);
path_build(path, sizeof(path), ANGBAND_DIR_INFO, name);
fff = file_open(path, MODE_READ, FTYPE_TEXT);
}
/* Oops */
if (!fff)
{
/* Message */
msg("Cannot open '%s'.", name);
event_signal(EVENT_MESSAGE_FLUSH);
/* Oops */
return (TRUE);
}
/* Pre-Parse the file */
while (TRUE)
{
/* Read a line or stop */
if (!file_getl(fff, buf, sizeof(buf))) break;
/* Skip lines if we are inside a RST directive*/
if(skip_lines){
开发者ID:Daedelus01,项目名称:angband,代码行数:67,代码来源:ui-help.c
示例18: write_e_info_txt
/*
* Dump the ego-item information in a format easily parsed by a spreadsheet.
*
* Original function by -EB- (probably), revisions by -LM- & JG.
*/
void write_e_info_txt(void)
{
int i, j, bc;
int dlen;
char buf[1024];
int fd;
FILE *fff = NULL;
cptr desc;
ego_item_type *e_ptr;
/* We allow 75 characters on the line (plus 2) */
u16b line_length = 75;
/* Build the filename */
path_build(buf, 1024, ANGBAND_DIR_EDIT, "e_output.txt");
/* Check for existing file */
fd = fd_open(buf, O_RDONLY);
/* Existing file */
if (fd >= 0)
{
char out_val[160];
/* Close the file */
fd_close(fd);
/* Build query */
sprintf(out_val, "Replace existing file %s? ", buf);
/* Ask */
if (get_check(out_val)) fd = -1;
}
/* Open the non-existing file */
if (fd < 0) fff = my_fopen(buf, "w");
/* No output file - fail */
if (!fff) return;
/* Write a note */
fprintf(fff, "# File: e_info.txt (autogenerated)\n\n");
/* Read and print out all the objects */
for (i = 0; i < z_info->e_max; i++)
{
int counter = 1;
/* Get the ego-item */
e_ptr = &e_info[i];
/* Ignore empty monsters */
if (!strlen((e_name + e_ptr->name)))
{
fprintf(fff, "## empty space (available for ego-item) ##\n\n");
continue;
}
/* Perform any translations */
/* Write New/Number/Name */
fprintf(fff, "N:%d:%s\n", i, e_name + e_ptr->name);
/* Write X: line */
fprintf(fff, "X:%d:%d:%d\n", i, e_ptr->rating, e_ptr->xtra);
/* Write C: line */
fprintf(fff, "C:%d:%d:%d:%d:%d\n", i, e_ptr->max_to_h, e_ptr->max_to_d,
e_ptr->max_to_a, e_ptr->max_pval);
/* Write W: line */
fprintf(fff, "W:%d:%d:%d:0:%d\n", i, e_ptr->level, e_ptr->rarity, e_ptr->cost);
/* Write the T lines */
fprintf(fff, "T:%d:%d:%d:%d:%d:%d:%d:%d:%d:%d\n", i,
e_ptr->tval[0], e_ptr->min_sval[0], e_ptr->max_sval[0],
e_ptr->tval[1], e_ptr->min_sval[1], e_ptr->max_sval[1],
e_ptr->tval[2], e_ptr->min_sval[2], e_ptr->max_sval[2]);
/* Get the flags, store flag text in a format easily parsed by a
* database, but pretty much illegible to a person.
*/
dump_flags(fff, e_ptr->flags1, 1, i);
dump_flags(fff, e_ptr->flags2, 2, i);
dump_flags(fff, e_ptr->flags3, 3, i);
dump_flags(fff, e_ptr->e_native, 4, i);
/* Acquire the description */
desc = e_text + e_ptr->text;
dlen = strlen(desc);
//.........这里部分代码省略.........
开发者ID:antoine-from-rgrd,项目名称:Minimal,代码行数:101,代码来源:dump_items.c
示例19: make_bones
/*
* Save a "bones" file for a dead character
*
* Should probably attempt some form of locking...
*/
void make_bones(void)
{
#if 0 /* DGDGDGDG */
FILE *fp;
int i;
char str[1024];
/* Ignore wizards and borgs */
if (!(noscore & 0x00FF))
{
/* Ignore people who die in town */
if (dun_level)
{
int level;
char tmp[128];
/* Slightly more tenacious saving routine. */
for (i = 0; i < 5; i+
|
请发表评论