From 1cc310e20dda4a378aac76b49288e6c8e2361e5e Mon Sep 17 00:00:00 2001
From: Holden Rohrer
Date: Wed, 29 Jan 2020 23:42:44 -0500
Subject: generalized tools/search model
search.js now provides for a .match and .unmatch method,
so it doesn't need to be called every time (in-line with the singleton
MetaSocket object model, meaning that callbacks are used and several
spaces can be matched at a time)
---
tools/search.js | 23 +++++++++++++++++++----
1 file changed, 19 insertions(+), 4 deletions(-)
diff --git a/tools/search.js b/tools/search.js
index 7f681f0..78e0ee7 100644
--- a/tools/search.js
+++ b/tools/search.js
@@ -12,11 +12,13 @@ function getComp(index){
return (element,needle) => (element[index] - needle[index] || element[1-index] - needle[1-index])
}
-function Search(searchBlock){ // searchBlock should be a Space object.
+function Search(){ // searchBlock should be a Space object.
this.tiles = {}; // Object which stores Spaces.
this.sort = [[],[]]; // Vertically/horizontally sorted list of tiles for fast addition, deletion, and searching
+ this.spaces = [];
+ this.calls = [];
- this.add = function(loc, space){ // loc should be [tileY,tileX] and space Space.
+ this.add = function(loc, space, send){ // loc should be [tileY,tileX] and space Space.
this.tiles[loc] = space;
let inds = Array(2); // Records horizontal and vertical indices for insertion. Then actually inserts the item.
[0,1].forEach( ind => { // ind chooses y-or-x
@@ -29,8 +31,10 @@ function Search(searchBlock){ // searchBlock should be a Space object.
block.forEach( (tile) => {
searchspace.comb( this.tiles[tile], comb.add );
});
- coords = searchspace.search(searchBlock); // According to space docs, [] on failure and a character location on success
- return vec.add(coords, searchspace.loc);
+ for (let i=0; i