Cleanup
This commit is contained in:
parent
7c7a055a4a
commit
eeb5ef4948
@ -13,14 +13,15 @@
|
||||
|
||||
|
||||
<!-- Modules -->
|
||||
<script src="modules/configuration.js"></script>
|
||||
<script src="modules/utilities.js"></script>
|
||||
|
||||
<script src="modules/floor.js"></script>
|
||||
<script src="modules/grid.js"></script>
|
||||
<script src="modules/agentController.js"></script>
|
||||
<script src="modules/agent.js"></script>
|
||||
<script src="modules/products.js"></script>
|
||||
<script src="modules/knowledge.js"></script>
|
||||
<script src="modules/configuration.js"></script>
|
||||
<script src="modules/utilities.js"></script>
|
||||
<script src="modules/shop.js"></script>
|
||||
|
||||
<!-- Main script file -->
|
||||
|
@ -1,7 +1,6 @@
|
||||
function flattenToUnique(array, view = x => x) {
|
||||
function flattenToUnique(array, view) {
|
||||
return array.reduce((set, value) => {
|
||||
const v = view(value)
|
||||
console.log(v)
|
||||
v && v.forEach(cat => set.add(cat))
|
||||
return set
|
||||
}, new Set())
|
||||
@ -61,6 +60,26 @@ class SemanticNetwork {
|
||||
|
||||
class AgentSemanticNetwork extends SemanticNetwork {}
|
||||
|
||||
function nearbyStorageUnitsCoords(gridX, gridY) {
|
||||
function outsideOfStorageCenter(v) {
|
||||
const { x, y, w, h } = StorageCenterLocation
|
||||
return v.x <= x || v.x >= x + w || v.y <= y || v.y >= y + h
|
||||
}
|
||||
return (gridX % UnitsInGroupCount == 0
|
||||
? (gridY % 3 == 1
|
||||
? /* skrzyżowanie */[[-1, -1], [-1, 1], [1, -1], [1, 1]]
|
||||
: /* korytarz góra-dół */[[-1, 0], [1, 0]])
|
||||
: /* korytarz lewo-prawo */[[0, -1], [0, 1]])
|
||||
.map(([xoff, yoff]) => ({ x: gridX + xoff, y: yGrid + yoff }))
|
||||
.filter(outsideOfStorageCenter)
|
||||
}
|
||||
|
||||
|
||||
function nearbyStorageUnitsIndexes(gridX, gridY) {
|
||||
return nearbyStorageUnitsCoords(gridX, gridY)
|
||||
.map(({ x, y }) => x * UnitsCount + y * UnitsCount * RowsOfGroupsCount)
|
||||
}
|
||||
|
||||
class Arrangement {
|
||||
constructor() {
|
||||
this.products = [...Array(UnitsCount)].map(() => ({
|
||||
@ -69,6 +88,11 @@ class Arrangement {
|
||||
icon: ''
|
||||
}))
|
||||
}
|
||||
|
||||
nearbyProducts(gridX, gridY) {
|
||||
return nearbyStorageUnitsIndexes(gridX, gridY)
|
||||
.map(i => this.products[i])
|
||||
}
|
||||
}
|
||||
|
||||
class Knowledge {
|
||||
|
@ -1,56 +1,6 @@
|
||||
/**
|
||||
* Zwraca koordynaty półek przy danym kafelku ścieżki
|
||||
* @param {number} gridX
|
||||
* @param {number} gridY
|
||||
* @returns {{x:number;y:number}[]} Koordynaty sąsiednich półek do kafelka
|
||||
*/
|
||||
function nearbyStorageUnitsCoords(gridX, gridY) {
|
||||
function outsideOfStorageCenter(v) {
|
||||
const { x, y, w, h } = StorageCenterLocation
|
||||
return v.x <= x || v.x >= x + w || v.y <= y || v.y >= y + h
|
||||
}
|
||||
return (gridX % UnitsInGroupCount == 0
|
||||
? (gridY % 3 == 1
|
||||
? /* skrzyżowanie */[[-1, -1], [-1, 1], [1, -1], [1, 1]]
|
||||
: /* korytarz góra-dół */[[-1, 0], [1, 0]])
|
||||
: /* korytarz lewo-prawo */[[0, -1], [0, 1]])
|
||||
.map(([xoff, yoff]) => ({ x: gridX + xoff, y: yGrid + yoff }))
|
||||
.filter(outsideOfStorageCenter)
|
||||
}
|
||||
|
||||
/**
|
||||
* Zwraca indeksy półek przy danym kafelku ścieżki
|
||||
* @param {number} gridX
|
||||
* @param {number} gridY
|
||||
* @returns {{x:number;y:number}[]} Indeksy sąsiednich półek do kafelka
|
||||
*/
|
||||
function nearbyStorageUnitsIndexes(gridX, gridY) {
|
||||
return nearbyStorageUnitsCoords(gridX, gridY)
|
||||
.map(({ x, y }) => x * UnitsCount + y * UnitsCount * RowsOfGroupsCount)
|
||||
}
|
||||
|
||||
function ensureArray(maybeArray) {
|
||||
return Array.isArray(maybeArray) ? maybeArray : []
|
||||
}
|
||||
|
||||
class Shop {
|
||||
constructor(semanticNetwork) {
|
||||
this.semanticNetwork = semanticNetwork
|
||||
this.products = [...Array(UnitsCount)].map(x => ({ name: '', count: 0 }))
|
||||
}
|
||||
|
||||
/**
|
||||
* Zwraca listę produktów w okolicy danego kafelka ścieżki
|
||||
* @param {number} gridX
|
||||
* @param {number} gridY
|
||||
*/
|
||||
nearbyProducts(gridX, gridY) {
|
||||
return nearbyStorageUnitsIndexes(gridX, gridY)
|
||||
.map(i => this.productPlacement[i])
|
||||
}
|
||||
|
||||
productsSimilarityScore(name1, name2) {
|
||||
const [ o1, o2 ] = [name1, name2].map(name => this.semanticNetwork.findByName(name))
|
||||
const [ o1, o2 ] = [name1, name2].map(name => Knowledge.semanticNetwork.findByName(name))
|
||||
if (!o1 || !o2)
|
||||
throw new Error("names should be in semantic network!")
|
||||
|
||||
@ -67,5 +17,3 @@ class Shop {
|
||||
return l <= Number.EPSILON ? c * 0.7 : l * 0.65 + c * 0.35 // TODO: maybe find better formula? needs testing
|
||||
}
|
||||
}
|
||||
|
||||
const shop = new Shop(semanticNetwork)
|
||||
|
Loading…
Reference in New Issue
Block a user