| Line 355: |
Line 355: |
| | | | |
| | function Iterator.enemiesBy(context, n, pred, pre) | | function Iterator.enemiesBy(context, n, pred, pre) |
| − | local collection = U.imap(CollectionEnemy, function(name) | + | local base_ids = {} |
| − | return EnemyShip(name)
| + | local collection = U.imap(CollectionEnemy, function(name, i) |
| | + | local obj = EnemyShip(name) |
| | + | if not base_ids[obj:base_name()] then |
| | + | base_ids[obj:base_name()] = i |
| | + | end |
| | + | return obj |
| | end) | | end) |
| | table.sort(collection, function(a, b) | | table.sort(collection, function(a, b) |
| − | local ai = U.ifind(CollectionEnemy, a:base_name()) | + | local ai = base_ids[a:base_name()] |
| − | local bi = U.ifind(CollectionEnemy, b:base_name()) | + | local bi = base_ids[b:base_name()] |
| | if ai and bi and ai ~= bi then | | if ai and bi and ai ~= bi then |
| | return ai < bi | | return ai < bi |
| Line 450: |
Line 455: |
| | end | | end |
| | | | |
| − | testIterator('shipsByType', { type = '11', sort = '_class' , listBase = 'true'}) | + | --testIterator('shipsByType', { type = '11', sort = '_class' , listBase = 'true'}) |
| − | testIterator('shipsByType', { sort = '_name'}) | + | --testIterator('shipsByType', { sort = '_name'}) |
| − | testIterator('shipsByTrueId', { sort = '_id', from = '1', to = '20', listBase = 'true'}) | + | --testIterator('shipsByTrueId', { sort = '_id', from = '1', to = '20', listBase = 'true'}) |
| − | testIterator('shipsBy', { pred = 'is_auxiliary' , sort = '_name'}) | + | --testIterator('shipsBy', { pred = 'is_auxiliary' , sort = '_name'}) |
| | | | |
| − | testIterator('equipmentById', { from = '11', to = '20' }) | + | --testIterator('equipmentById', { from = '11', to = '20' }) |
| − | testIterator('equipmentByIdWithHeaders', { from = '1', to = '30' }) | + | --testIterator('equipmentByIdWithHeaders', { from = '1', to = '30' }) |
| − | testIterator('equipmentByType', { type = '2' }) | + | --testIterator('equipmentByType', { type = '2' }) |
| − | testIterator('equipmentByType', { type = '1', sort = '_icon' }) | + | --testIterator('equipmentByType', { type = '1', sort = '_icon' }) |
| − | testIterator('equipmentByTypeAndIcon', { type = '1', icon = '16' }) | + | --testIterator('equipmentByTypeAndIcon', { type = '1', icon = '16' }) |
| − | testIterator('equipmentBy', { pred = 'is_large_caliber_main_gun', sort = '_type' }) | + | --testIterator('equipmentBy', { pred = 'is_large_caliber_main_gun', sort = '_type' }) |
| | | | |
| − | testIterator('enemiesByType', { type = '2' }) | + | testIterator('enemiesByType', { type = '8' }) |
| | end | | end |
| | -- p.test() | | -- p.test() |
| | | | |
| | return Iterator | | return Iterator |