git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@6862 c06c8d41-db1a-0410-9941-cceddc491573
BCL6BB7HZXAJCAGKK6MZ7AGWNLFP46FIXRVGJ6LR3QLDE6XFQGVAC
HBXWZNXAJ7LUX7FYUIHQYBTRMWVJC6CAQQL3NNZHK5ETLIFEZJ7QC
25CH7HH4LKXFIZ75YNMXS3TSXO6O27DYSOPLOD45K4OCNFWLS4LQC
YP2ADVIVFDLAU4NYFG7BTHV6BMH7VPKUYQ6WVQF3Z725L3DSX7HAC
virtual ~tile_list_processor();
tile m_back;
std::vector<tile*> m_back;
{}tile_list_processor::~tile_list_processor()
{
}
tile_list_processor::~tile_list_processor()
for (unsigned int i = 0; i < m_back.size(); i++) { delete m_back[i]; } m_back.resize(0);
for (unsigned int i = 0; i < m_back.size(); i++)
delete m_back[i];
m_back.resize(0);
char *arg1 = strtok(read_line, delim); if (!arg1)
char *arg1 = strtok(read_line, delim);
if (!arg1)
char *arg; arg = strtok(read_line, delim); if (!arg)
char *arg;
arg = strtok(read_line, delim);
if (!arg)
eat_whitespace(arg1);
eat_whitespace(arg);
if (!*arg1)
if (!*arg)
if (arg1[0] == '#')
if (arg[0] == '#')
char *arg2 = strtok(NULL, delim); eat_whitespace(arg2);
char *arg2 = strtok(NULL, delim);
eat_whitespace(arg2);
std::vector<char *> m_args; m_args.push_back(arg);
std::vector<char *> m_args;
m_args.push_back(arg);
fprintf(stderr, "Error (%s:%d): too many args.\n", list_file, line); return false;
fprintf(stderr, "Error (%s:%d): too many args.\n", list_file, line);
return false;
m_args.push_back(extra);
if (arg1[0] == '%')
if (arg[0] == '%')
arg1++;
arg++;
#define CHECK_NO_ARG2 \ if (arg2) \
#define CHECK_NO_ARG2 \
if (arg2) \
#define CHECK_NO_ARG(x) \ if (m_args.size() > x) \
#define CHECK_NO_ARG(x) \
if (m_args.size() > x) \
"invalid arg following '%s'.\n", \ list_file, line, arg1); \
"invalid arg following '%s'.\n", \
list_file, line, arg1); \
"invalid args following '%s'.\n", \ list_file, line, arg); \
"invalid args following '%s'.\n", \
list_file, line, arg); \
#define CHECK_ARG2 \ if (!arg2) \
#define CHECK_ARG2 \
if (!arg2) \
#define CHECK_ARG1 \ if (m_args.size() <= 1) \
#define CHECK_ARG1 \
if (m_args.size() <= 1) \
if (strcmp(arg1, "back") == 0)
if (strcmp(arg, "back") == 0)
CHECK_ARG2;
CHECK_ARG1;
if (strcmp(arg2, "none") == 0)
m_back.unload();
else
m_back.resize(0); if (strcmp(m_args[1], "none") == 0)
if (strcmp(m_args[1], "none") == 0)
if (!load_image(m_back, arg2))
CHECK_NO_ARG(2); return true; } for (unsigned int i = 1; i < m_args.size(); i++) { tile *img = new tile(); if (!load_image(*img, m_args[i]))
CHECK_NO_ARG(2);
return true;
for (unsigned int i = 1; i < m_args.size(); i++)
tile *img = new tile();
if (!load_image(*img, m_args[i]))
"'%s'.\n", list_file, line, arg2);
"'%s'.\n", list_file, line, m_args[i]);
m_back.push_back(img);
else if (strcmp(arg1, "compose") == 0)
else if (strcmp(arg, "compose") == 0)
if (!load_image(img, arg2))
if (!load_image(img, m_args[1]))
"'%s'.\n", list_file, line, m_args[1]);
" onto compose image.\n", list_file, line, arg2);
" onto compose image.\n", list_file, line, m_args[1]);
if (!load_image(m_compose, arg2))
if (!load_image(m_compose, m_args[1]))
else if (strcmp(arg1, "corpse") == 0)
else if (strcmp(arg, "corpse") == 0)
CHECK_ARG2; m_corpsify = (bool)atoi(arg2);
m_corpsify = (bool)atoi(arg2);
CHECK_ARG1; m_corpsify = (bool)atoi(m_args[1]);
m_corpsify = (bool)atoi(m_args[1]);
else if (strcmp(arg1, "end") == 0)
else if (strcmp(arg, "end") == 0)
CHECK_NO_ARG2;
CHECK_NO_ARG(1);
else if (strcmp(arg1, "finish") == 0)
else if (strcmp(arg, "finish") == 0)
if (m_back.valid())
if (m_back.size() > 0)
tile img(m_back);
unsigned int psuedo_rand = m_page.m_tiles.size() * 54321; tile *back = m_back[psuedo_rand % m_back.size()]; tile img(*back);
unsigned int psuedo_rand = m_page.m_tiles.size() * 54321;
tile *back = m_back[psuedo_rand % m_back.size()];
tile img(*back);
arg1, m_back.filename().c_str());
arg, back->filename().c_str());
add_image(img, arg2);
add_image(img, m_args[1]);
add_image(m_compose, arg2);
add_image(m_compose, m_args[1]);
else if (strcmp(arg1, "include") == 0)
else if (strcmp(arg, "include") == 0)
CHECK_ARG2; if (!process_list(arg2))
if (!process_list(arg2))
CHECK_ARG1; if (!process_list(m_args[1]))
if (!process_list(m_args[1]))
else if (strcmp(arg1, "name") == 0)
else if (strcmp(arg, "name") == 0)
m_name = arg2;
m_name = m_args[1];
else if (strcmp(arg1, "parts_ctg") == 0)
else if (strcmp(arg, "parts_ctg") == 0)
if (arg2 == m_categories[i])
if (m_args[1] == m_categories[i])
list_file, line, arg2);
list_file, line, m_args[1]);
m_parts_ctg = arg2;
m_parts_ctg = m_args[1];
else if (strcmp(arg1, "prefix") == 0)
else if (strcmp(arg, "prefix") == 0)
CHECK_ARG2; m_prefix = arg2;
m_prefix = arg2;
CHECK_ARG1; m_prefix = m_args[1];
m_prefix = m_args[1];
else if (strcmp(arg1, "rim") == 0)
else if (strcmp(arg, "rim") == 0)
CHECK_ARG2; m_rim = (bool)atoi(arg2);
m_rim = (bool)atoi(arg2);
CHECK_ARG1; m_rim = (bool)atoi(m_args[1]);
m_rim = (bool)atoi(m_args[1]);
else if (strcmp(arg1, "sdir") == 0)
else if (strcmp(arg, "sdir") == 0)
CHECK_ARG2; m_sdir = arg2;
m_sdir = arg2;
CHECK_ARG1; m_sdir = m_args[1];
m_sdir = m_args[1];
else if (strcmp(arg1, "shrink") == 0)
else if (strcmp(arg, "shrink") == 0)
CHECK_ARG2; m_shrink = (bool)atoi(arg2);
m_shrink = (bool)atoi(arg2);
CHECK_ARG1; m_shrink = (bool)atoi(m_args[1]);
m_shrink = (bool)atoi(m_args[1]);
else if (strcmp(arg1, "start") == 0)
else if (strcmp(arg, "start") == 0)
list_file, line, arg1);
list_file, line, arg);
if (!load_image(m_compose, arg1))
if (!load_image(m_compose, arg))
"'%s'.\n", list_file, line, arg1);
"'%s'.\n", list_file, line, arg);
img.copy(m_back);
unsigned int psuedo_rand = m_page.m_tiles.size() * 54321; tile *back = m_back[psuedo_rand % m_back.size()]; img.copy(*back);
img.copy(*back);
if (!load_image(img, arg1))
if (!load_image(img, arg))
%back dc-misc/blood_red
%back dc-misc/blood_red dc-misc/blood_red1 dc-misc/blood_red2 dc-misc/blood_red3 dc-misc/blood_red4