forked from M-Labs/web2019
Add warnings for the phaser being obstacled by next card
This commit is contained in:
parent
3987343e16
commit
c1e26e7ba8
|
@ -480,7 +480,7 @@ const useCart = ((set, get) => ({
|
|||
let itemsCopy = Array.from(crate.items);
|
||||
const disabled = !!get().crateParams(crate.crate_mode).warnings_disabled;
|
||||
itemsCopy = FillResources(itemsCopy, disabled);
|
||||
itemsCopy = TriggerWarnings(itemsCopy, disabled);
|
||||
itemsCopy = TriggerWarnings(itemsCopy, disabled, crate);
|
||||
const [crate_warnings, occupied] = TriggerCrateWarnings(crate);
|
||||
return {
|
||||
...crate,
|
||||
|
|
|
@ -30,14 +30,14 @@ const find_next_source_index = (data, index, source) => {
|
|||
}
|
||||
|
||||
const not_enough_resource_trigger = (name) => {
|
||||
return (_data, _index, counters) => {
|
||||
return (_data, _index, counters, _crate) => {
|
||||
const resource = find_in_counters(counters, name);
|
||||
return resource.occupied > resource.max;
|
||||
}
|
||||
}
|
||||
|
||||
const no_source_trigger = (name) => {
|
||||
return (data, index, _counters) => {
|
||||
return (data, index, _counters, _crate) => {
|
||||
const occupied = item_occupied_counters[name](data[index]);
|
||||
if (occupied > 0)
|
||||
return !find_previous_source(data, index, name);
|
||||
|
@ -46,12 +46,20 @@ const no_source_trigger = (name) => {
|
|||
}
|
||||
|
||||
const wiring_constraint = (name) => {
|
||||
return (data, index, _counters) => {
|
||||
return (data, index, _counters, _crate) => {
|
||||
const next = find_next_source_index(data, index, name);
|
||||
return next - index === 1;
|
||||
}
|
||||
}
|
||||
|
||||
const phaser_next_card_long = (data, index, counters, crate) => {
|
||||
const nbrOccupied = resource_counters.hp(crate.items, -1);
|
||||
const nbrHP = useShopStore.getState().crateParams(crate.crate_mode).hp;
|
||||
return (index < data.length - 1) ? (
|
||||
(data[index+1].consumes && data[index+1].consumes.depth && data[index+1].consumes.depth >= 8.5)
|
||||
) : (nbrOccupied >= nbrHP && nbrHP > 0)
|
||||
}
|
||||
|
||||
const Types = {
|
||||
"eem_resource": {
|
||||
level: "warning",
|
||||
|
@ -88,22 +96,27 @@ const Types = {
|
|||
trigger: wiring_constraint("eem"),
|
||||
message: "Due to wiring constraints, the carrier can only connect to EEM cards immediately at its right, without crossing another carrier."
|
||||
},
|
||||
"phaser_next_card_long": {
|
||||
level: "reminder",
|
||||
trigger: phaser_next_card_long,
|
||||
message: "Next card may interfere with this Phaser. Consider placing a short card after this Phaser."
|
||||
},
|
||||
"default": {
|
||||
level: "warning",
|
||||
trigger: (_a, _b, _c) => {
|
||||
trigger: (_a, _b, _c, _d) => {
|
||||
return true;
|
||||
},
|
||||
message: 'This item has unimplemented warning'
|
||||
}
|
||||
}
|
||||
|
||||
export function TriggerWarnings(data, disabled) {
|
||||
export function TriggerWarnings(data, disabled, crate) {
|
||||
return data.map((element, index) => {
|
||||
if (!element.warnings) return element;
|
||||
element.show_warnings = disabled ? [] :element.warnings
|
||||
.map((warning, _) => {
|
||||
if (!!Types[warning])
|
||||
return Types[warning].trigger(data, index, element.counted_resources) ? {trigger: undefined, name: warning, ...Types[warning]} : null;
|
||||
return Types[warning].trigger(data, index, element.counted_resources, crate) ? {trigger: undefined, name: warning, ...Types[warning]} : null;
|
||||
else
|
||||
return Types.default;
|
||||
})
|
||||
|
@ -143,6 +156,22 @@ const crate_warnings = {
|
|||
const nbrHPDesktop = useShopStore.getState().crate_modes.desktop.hp;
|
||||
return crate.crate_mode === useShopStore.getState().crate_modes.rack.id && occupied < nbrHPDesktop;
|
||||
}
|
||||
},
|
||||
"phaser_not_fit": {
|
||||
message: "Since one or more Phasers may interfere with their next cards, they may additional space, that wouldn't fit into the crate. Consider removing cards, placing short cards after Phaser(s), or choosing larger crate.",
|
||||
level: "warning",
|
||||
trigger: (crate, occupied) => {
|
||||
const nbrHP = useShopStore.getState().crateParams(crate.crate_mode).hp;
|
||||
const stacked_phasers = crate.items.filter((elem, index, data) => {
|
||||
console.log(elem, index)
|
||||
return (elem.name_codename === "Phaser") && ((index < data.length - 1) ? (
|
||||
(data[index + 1].consumes && data[index + 1].consumes.depth && data[index + 1].consumes.depth >= 8.5)
|
||||
) : (occupied >= nbrHP && nbrHP > 0))
|
||||
}
|
||||
).length;
|
||||
console.log(stacked_phasers, occupied)
|
||||
return stacked_phasers > 0 && (occupied + stacked_phasers*2 >= nbrHP) && nbrHP >0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -221,7 +221,8 @@ const shop_data = {
|
|||
"eem_wiring_constraint"
|
||||
],
|
||||
consumes: {
|
||||
hp: 8
|
||||
hp: 8,
|
||||
depth: 20
|
||||
}
|
||||
},
|
||||
'kaslisoc': {
|
||||
|
@ -297,7 +298,8 @@ const shop_data = {
|
|||
"eem_wiring_constraint"
|
||||
],
|
||||
consumes: {
|
||||
hp: 8
|
||||
hp: 8,
|
||||
depth: 20
|
||||
}
|
||||
},
|
||||
'vhdcicarrier': {
|
||||
|
@ -322,7 +324,8 @@ const shop_data = {
|
|||
"eem_wiring_constraint"
|
||||
],
|
||||
consumes: {
|
||||
hp: 8
|
||||
hp: 8,
|
||||
depth: 16
|
||||
}
|
||||
},
|
||||
'bnc-dio': {
|
||||
|
@ -393,7 +396,8 @@ const shop_data = {
|
|||
],
|
||||
consumes: {
|
||||
hp: 8,
|
||||
eem: 1
|
||||
eem: 1,
|
||||
depth: 7
|
||||
}
|
||||
},
|
||||
'sma-dio': {
|
||||
|
@ -458,7 +462,8 @@ const shop_data = {
|
|||
],
|
||||
consumes: {
|
||||
hp: 4,
|
||||
eem: 1
|
||||
eem: 1,
|
||||
depth: 7
|
||||
}
|
||||
},
|
||||
'mcx-dio': {
|
||||
|
@ -549,7 +554,8 @@ const shop_data = {
|
|||
],
|
||||
consumes: {
|
||||
hp: 4,
|
||||
eem: 2
|
||||
eem: 2,
|
||||
depth: 23
|
||||
}
|
||||
},
|
||||
'rj45-dio': {
|
||||
|
@ -635,7 +641,8 @@ const shop_data = {
|
|||
],
|
||||
consumes: {
|
||||
hp: 4,
|
||||
eem: 2
|
||||
eem: 2,
|
||||
depth: 7
|
||||
}
|
||||
},
|
||||
'urukul': {
|
||||
|
@ -700,7 +707,8 @@ const shop_data = {
|
|||
consumes: {
|
||||
hp: 4,
|
||||
eem: 2,
|
||||
clk: 1
|
||||
clk: 1,
|
||||
depth: 16
|
||||
}
|
||||
},
|
||||
'urukul_4412': {
|
||||
|
@ -738,7 +746,8 @@ const shop_data = {
|
|||
consumes: {
|
||||
hp: 4,
|
||||
eem: 2,
|
||||
clk: 1
|
||||
clk: 1,
|
||||
depth: 16
|
||||
}
|
||||
},
|
||||
'phaser': {
|
||||
|
@ -767,12 +776,14 @@ const shop_data = {
|
|||
size: 'small',
|
||||
warnings: [
|
||||
"no_eem_source",
|
||||
"no_clk_source"
|
||||
"no_clk_source",
|
||||
"phaser_next_card_long"
|
||||
],
|
||||
consumes: {
|
||||
hp: 4,
|
||||
eem: 1,
|
||||
clk: 1
|
||||
clk: 1,
|
||||
depth: 16 // heatsink 8.5
|
||||
}
|
||||
},
|
||||
'zotino': {
|
||||
|
@ -814,7 +825,8 @@ const shop_data = {
|
|||
consumes: {
|
||||
hp: 4,
|
||||
eem: 1,
|
||||
tec: 1
|
||||
tec: 1,
|
||||
depth: 16
|
||||
},
|
||||
resources: [
|
||||
{name: "idc", max: 4}
|
||||
|
@ -842,7 +854,8 @@ const shop_data = {
|
|||
],
|
||||
consumes: {
|
||||
hp: 4,
|
||||
eem: 1
|
||||
eem: 1,
|
||||
depth: 17
|
||||
},
|
||||
resources: [
|
||||
{name: "idc", max: 4}
|
||||
|
@ -866,7 +879,8 @@ const shop_data = {
|
|||
],
|
||||
consumes: {
|
||||
hp: 8,
|
||||
idc: 1
|
||||
idc: 1,
|
||||
depth: 6
|
||||
}
|
||||
},
|
||||
'hvamp32': {
|
||||
|
@ -903,7 +917,8 @@ const shop_data = {
|
|||
],
|
||||
consumes: {
|
||||
hp: 4,
|
||||
idc: 4
|
||||
idc: 4,
|
||||
depth: 16
|
||||
}
|
||||
},
|
||||
'idc-sma-adapter': {
|
||||
|
@ -924,7 +939,8 @@ const shop_data = {
|
|||
],
|
||||
consumes: {
|
||||
hp: 4,
|
||||
idc: 1
|
||||
idc: 1,
|
||||
depth: 6
|
||||
}
|
||||
},
|
||||
'hd68-idc-adapter': {
|
||||
|
@ -946,7 +962,8 @@ const shop_data = {
|
|||
"idc_resource"
|
||||
],
|
||||
consumes: {
|
||||
hp: 4
|
||||
hp: 4,
|
||||
depth: 5
|
||||
},
|
||||
resources: [
|
||||
{name: "idc", max: 4}
|
||||
|
@ -999,7 +1016,8 @@ const shop_data = {
|
|||
],
|
||||
consumes: {
|
||||
hp: 8,
|
||||
eem: 2
|
||||
eem: 2,
|
||||
depth: 16
|
||||
}
|
||||
},
|
||||
'koster': {
|
||||
|
@ -1025,7 +1043,8 @@ const shop_data = {
|
|||
],
|
||||
consumes: {
|
||||
hp: 4,
|
||||
eem: 2
|
||||
eem: 2,
|
||||
depth: 7.5
|
||||
}
|
||||
},
|
||||
'clocker': {
|
||||
|
@ -1056,7 +1075,8 @@ const shop_data = {
|
|||
consumes: {
|
||||
hp: 4,
|
||||
eem: 1,
|
||||
clk: 1
|
||||
clk: 1,
|
||||
depth: 7
|
||||
},
|
||||
resources: [
|
||||
{name: "clk", max: 6}
|
||||
|
@ -1093,7 +1113,8 @@ const shop_data = {
|
|||
],
|
||||
consumes: {
|
||||
hp: 4,
|
||||
eem: 1
|
||||
eem: 1,
|
||||
depth: 16
|
||||
},
|
||||
},
|
||||
'fast_servo': {
|
||||
|
@ -1127,7 +1148,8 @@ const shop_data = {
|
|||
],
|
||||
consumes: {
|
||||
hp: 4,
|
||||
eem: 1
|
||||
eem: 1,
|
||||
depth: 16
|
||||
},
|
||||
},
|
||||
'mirny': {
|
||||
|
@ -1158,7 +1180,8 @@ const shop_data = {
|
|||
consumes: {
|
||||
hp: 4,
|
||||
eem: 1,
|
||||
clk: 1
|
||||
clk: 1,
|
||||
depth: 16
|
||||
},
|
||||
},
|
||||
'almazny': {
|
||||
|
@ -1186,7 +1209,8 @@ const shop_data = {
|
|||
consumes: {
|
||||
hp: 8,
|
||||
eem: 1,
|
||||
clk: 1
|
||||
clk: 1,
|
||||
depth: 16
|
||||
},
|
||||
},
|
||||
'thermostat-eem': {
|
||||
|
@ -1214,6 +1238,7 @@ const shop_data = {
|
|||
consumes: {
|
||||
hp: 4,
|
||||
eem: 1,
|
||||
depth: 16
|
||||
}
|
||||
},
|
||||
'thermostat2ch': {
|
||||
|
@ -1232,7 +1257,8 @@ const shop_data = {
|
|||
],
|
||||
size: 'small',
|
||||
consumes: {
|
||||
hp: 4
|
||||
hp: 4,
|
||||
depth: 12
|
||||
},
|
||||
resources: [
|
||||
{name: "tec", max: 2}
|
||||
|
@ -1261,7 +1287,8 @@ const shop_data = {
|
|||
consumes: {
|
||||
hp: 8,
|
||||
eem: 1,
|
||||
clk: 1
|
||||
clk: 1,
|
||||
depth: 8
|
||||
},
|
||||
},
|
||||
'pounder': {
|
||||
|
@ -1295,7 +1322,8 @@ const shop_data = {
|
|||
consumes: {
|
||||
hp: 8,
|
||||
eem: 1,
|
||||
clk: 1
|
||||
clk: 1,
|
||||
depth: 16
|
||||
}
|
||||
},
|
||||
'eem_pwr_mod': {
|
||||
|
@ -1320,6 +1348,7 @@ const shop_data = {
|
|||
warnings: [],
|
||||
consumes: {
|
||||
hp: 8,
|
||||
depth: 20
|
||||
},
|
||||
},
|
||||
'kirdy': {
|
||||
|
@ -1351,6 +1380,7 @@ const shop_data = {
|
|||
warnings: [],
|
||||
consumes: {
|
||||
hp: 8,
|
||||
depth: 16
|
||||
},
|
||||
},
|
||||
},
|
||||
|
|
Loading…
Reference in New Issue