replace old group 'with' keyword with 'on' and 'includes'

This commit is contained in:
David Rose 2004-08-05 18:23:45 +00:00
parent d165c1c369
commit 49b7bcdc1d
2 changed files with 34 additions and 7 deletions

View File

@ -506,7 +506,7 @@ describe_input_file() {
"be written to the directory specified by -ds on the command " "be written to the directory specified by -ds on the command "
"line.\n\n"); "line.\n\n");
show_text(" :group groupname [dir dirname] [with group1 group2 ...]", 10, show_text(" :group groupname [dir dirname] [on group1 group2 ...] [includes group1 group2 ...]", 10,
"This defines a palette group, a logical division of textures. " "This defines a palette group, a logical division of textures. "
"Each texture is assigned to one or more palette groups before " "Each texture is assigned to one or more palette groups before "
"being placed in any palette image; the palette images are " "being placed in any palette image; the palette images are "
@ -520,10 +520,14 @@ describe_input_file() {
"on the groups they are assigned to.\n\n" "on the groups they are assigned to.\n\n"
"Palette groups can also be hierarchically related. The " "Palette groups can also be hierarchically related. The "
"keyword 'with' specifies any number of groups that this " "keyword 'on' specifies any number of groups that this "
"palette group depends on; if a texture has already been " "palette group depends on; if a texture has already been "
"assigned to one of this group's dependent groups, it will " "assigned to one of this group's dependent groups, it will "
"not need to be assigned to this group.\n\n"); "not need to be assigned to this group. This also implicitly "
"specifies a dir if one has not already been specified.\n\n"
"The keyword 'includes' names one or more groups that depend "
"on this group.\n\n");
nout << nout <<

View File

@ -216,15 +216,25 @@ parse_group_line(const vector_string &words) {
enum State { enum State {
S_none, S_none,
S_with, S_on,
S_includes,
S_dir, S_dir,
}; };
State state = S_none; State state = S_none;
bool first_on = false;
while (wi != words.end()) { while (wi != words.end()) {
const string &word = (*wi); const string &word = (*wi);
if (word == "with") { if (word == "with") {
state = S_with; // Deprecated keyword: "with" means the same thing as "on".
state = S_on;
} else if (word == "on") {
state = S_on;
} else if (word == "includes") {
state = S_includes;
} else if (word == "dir") { } else if (word == "dir") {
state = S_dir; state = S_dir;
@ -235,8 +245,21 @@ parse_group_line(const vector_string &words) {
nout << "Invalid keyword: " << word << "\n"; nout << "Invalid keyword: " << word << "\n";
return false; return false;
case S_with: case S_on:
group->group_with(pal->get_palette_group(word)); {
PaletteGroup *on_group = pal->get_palette_group(word);
if (first_on) {
if (!group->has_dirname() && on_group->has_dirname()) {
group->set_dirname(on_group->get_dirname());
}
first_on = false;
}
group->group_with(on_group);
}
break;
case S_includes:
pal->get_palette_group(word)->group_with(group);
break; break;
case S_dir: case S_dir: