mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-02-02 20:34:41 +00:00
(svn r16503) -Fix: base graphics names must be unique, so don't add duplicates (even if the versions differ).
This commit is contained in:
parent
4ea3e511bd
commit
be04b7e29c
@ -444,7 +444,7 @@ public:
|
||||
bool OBGFileScanner::AddFile(const char *filename, size_t basepath_length)
|
||||
{
|
||||
bool ret = false;
|
||||
DEBUG(grf, 1, "Found %s as base graphics set", filename);
|
||||
DEBUG(grf, 1, "Checking %s for base graphics set", filename);
|
||||
|
||||
GraphicsSet *graphics = new GraphicsSet();;
|
||||
IniFile *ini = new IniFile();
|
||||
@ -459,12 +459,28 @@ bool OBGFileScanner::AddFile(const char *filename, size_t basepath_length)
|
||||
}
|
||||
|
||||
if (FillGraphicsSetDetails(graphics, ini, path)) {
|
||||
bool duplicate = false;
|
||||
for (const GraphicsSet *c = _available_graphics_sets; !duplicate && c != NULL; c = c->next) {
|
||||
duplicate = (strcmp(c->name, graphics->name) == 0 || c->shortname == graphics->shortname) && c->version == graphics->version;
|
||||
const GraphicsSet *duplicate = NULL;
|
||||
for (const GraphicsSet *c = _available_graphics_sets; c != NULL; c = c->next) {
|
||||
if (strcmp(c->name, graphics->name) == 0 || c->shortname == graphics->shortname) {
|
||||
duplicate = c;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (duplicate) {
|
||||
delete graphics;
|
||||
if (duplicate != NULL) {
|
||||
if (duplicate->version >= graphics->version) {
|
||||
DEBUG(grf, 1, "Not adding %s (%i) as base graphics set (duplicate)", graphics->name, graphics->version);
|
||||
delete graphics;
|
||||
} else {
|
||||
GraphicsSet **prev = &_available_graphics_sets;
|
||||
while (*prev != duplicate) prev = &(*prev)->next;
|
||||
|
||||
*prev = graphics;
|
||||
graphics->next = duplicate->next;
|
||||
|
||||
DEBUG(grf, 1, "Removing %s (%i) as base graphics set (duplicate)", duplicate->name, duplicate->version);
|
||||
delete duplicate;
|
||||
ret = true;
|
||||
}
|
||||
} else {
|
||||
GraphicsSet **last = &_available_graphics_sets;
|
||||
while (*last != NULL) last = &(*last)->next;
|
||||
@ -472,6 +488,9 @@ bool OBGFileScanner::AddFile(const char *filename, size_t basepath_length)
|
||||
*last = graphics;
|
||||
ret = true;
|
||||
}
|
||||
if (ret) {
|
||||
DEBUG(grf, 1, "Adding %s (%i) as base graphics set", graphics->name, graphics->version);
|
||||
}
|
||||
} else {
|
||||
delete graphics;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user