Unique item list
Introduction¶
List of unique items. Support array and set methods.
- Author: Rex
- Data structure
Usage¶
Install plugin¶
Load minify file¶
- Load plugin (minify file) in preload stage
scene.load.plugin('rexuniqueitemlistplugin', 'https://raw.githubusercontent.com/rexrainbow/phaser3-rex-notes/master/dist/rexuniqueitemlistplugin.min.js', true); - Add list object
var listA = scene.plugins.get('rexuniqueitemlistplugin').add(config);
Import plugin¶
- Install rex plugins from npm
npm i phaser3-rex-plugins - Install plugin in configuration of game
import UniqueItemListPlugin from 'phaser3-rex-plugins/plugins/uniqueitemlist-plugin.js'; var config = { // ... plugins: { global: [{ key: 'rexUniqueItemList', plugin: UniqueItemListPlugin, start: true }, // ... ] } // ... }; var game = new Phaser.Game(config); - Add list object
var listA = scene.plugins.get('rexUniqueItemList').add(config);
Import class¶
- Install rex plugins from npm
npm i phaser3-rex-plugins - Import class
import UniqueItemList from 'phaser3-rex-plugins/plugins/uniqueitemlist.js'; - Add list object
var listA = new UniqueItemList();
Create instance¶
var listA = scene.plugins.get('rexUniqueItemList').add({
// items: undefined,
// autoCleanup: true
});
items: Initial items.autoCleanup: Settrueto remove item when item is destroyed (from item's 'destroy' event)
or
var listA = scene.plugins.get('rexUniqueItemList').add(items);
Items¶
- Get first item
var item = listA.getFirst(); - Get last item
var item = listA.getLast(); - Get item at index
var item = listA.get(index); - Get a random item
var item = listA.getRandom(); - Get items
var items = listA.getItems(); - Clone items to a new array
var items = listA.cloneItems();
Item count¶
- Get item count
var count = listA.length; - List is empty
var isEmpty = listA.isEmpty();
Contains¶
- Has item
var hasItem = listA.contains(item); - Has any item
var hasAny = listA.any(listB); - Has all items
var hasAll = listA.all(listB);
Array operations¶
Add¶
- Add to last
or
listA.add(item);listA.addLast(item); - Add to first
listA.addFirst(item); - Insert to index
listA.add(item, index); - Insert, or move to index
listA.add(item, iindex, true); - Add items
listA.addMultiple(items); - Clone list
var newList = listA.clone(); // listA.clone(listB)
Remove¶
- Remove item
listA.remove(item); - Remove first
listA.removeFirst(); - Remove last
listA.removeLast(); - Remove item at index
listA.remove(undefined, index); - Remove items
listA.removeMultiple(items); - Remove all items
listA.clear(); - Destroy all items
listA.clear(true);
Pop¶
- Pop first item
or
var item = listA.pop();var item = listA.popFirst(); - Pop last item
var item = listA.popLast(); - Pop item at index
var item = listA.pop(index); - Pop a random item
var item = listA.popRandom();
Slice¶
- Extract items from startIndex to endIndex (item of endIndex is included)
var newList = listA.slice(startIndex, endIndex); // listA.slice(startIndex, endIndex, listB);
Sort¶
- Sort
list.sort(function(itemA, itemB) { if (itemA > itemB) { return 1; } else if (itemA < itemB) { return -1; } else { return 0; } }) - Reverse
listA.reverse(); - Shuffle
listA.shuffle();
Set operations¶
- C = A | B
var listC = listA.union(listB); // listA.union(listB, listC);listC: Result unique-item-list. Can belistA, orlistB.
- C = A & B
var listC = listA.intersect(listB); // listA.intersect(listB, listC);listC: Result unique-item-list. Can belistA, orlistB.
- C = A - B
var listC = listA.difference(listB); // listA.difference(listB, listC);listC: Result unique-item-list. Can belistA, orlistB.
Call method¶
Apply method of each item.
listA.call(fnName, arg0, arg1, arg2, ...);
fnName: Method name of item.arg0,arg1,arg2: Arguments offnNamemethod.
Warning
Don't add or remove any item during this method.
listA.call(function(item, i) {
// ....
}, scope);
callback: A function object.function(item, i) { }