Skip to content

Commit

Permalink
fix(vendor.dreame): Handle carpet information in maps
Browse files Browse the repository at this point in the history
  • Loading branch information
Hypfer committed Oct 10, 2022
1 parent bc7c92e commit d1ad1af
Show file tree
Hide file tree
Showing 4 changed files with 4,237 additions and 5 deletions.
11 changes: 8 additions & 3 deletions backend/lib/robots/dreame/DreameMapParser.js
Expand Up @@ -379,14 +379,19 @@ class DreameMapParser {
} else if (type === MAP_DATA_TYPES.RISM) {
/**
* A rism Pixel is one byte consisting of
* 1 0000000
* isWall flag The Segment ID
* 1 1 000000
* isWall flag isCarpet flag The Segment ID
*/
const px = buf[(i * parsedHeader.width) + j];

const segmentId = px & 0b01111111;
const segmentId = px & 0b00111111;
const wallFlag = px >> 7;

/*
TODO: figure out what to do with the carpet information
px >> 6 & 0b00000001
*/

if (wallFlag) {
wallPixels.push(coords);
} else if (segmentId > 0) {
Expand Down
28 changes: 26 additions & 2 deletions backend/test/lib/robots/dreame/DreameMapParser_spec.js
Expand Up @@ -267,7 +267,7 @@ describe("DreameMapParser", function () {
actual.should.deepEqual(expected);
});

it("Should pre-process & parse L10S Ultra FW 1058 map with goto target", async function() {
it("Should pre-process & parse L10S Ultra FW 1058 map with goto target correctly", async function() {
let data = await fs.readFile(path.join(__dirname, "/res/map/l10su_1058_goto_target.bin"));
let expected = JSON.parse(await fs.readFile(path.join(__dirname, "/res/map/l10su_1058_goto_target.json"), { encoding: "utf-8" }));
let actual = await DreameMapParser.PARSE(await DreameMapParser.PREPROCESS(data));
Expand All @@ -291,7 +291,7 @@ describe("DreameMapParser", function () {
actual.should.deepEqual(expected);
});

it("Should pre-process & parse L10S Ultra FW 1121 map with new path", async function() {
it("Should pre-process & parse L10S Ultra FW 1121 map with new path correctly", async function() {
let data = await fs.readFile(path.join(__dirname, "/res/map/l10su_1121_new_path.bin"));
let expected = JSON.parse(await fs.readFile(path.join(__dirname, "/res/map/l10su_1121_new_path.json"), { encoding: "utf-8" }));
let actual = await DreameMapParser.PARSE(await DreameMapParser.PREPROCESS(data));
Expand All @@ -314,4 +314,28 @@ describe("DreameMapParser", function () {

actual.should.deepEqual(expected);
});

it("Should pre-process & parse L10S Ultra FW 1121 map with carpet correctly", async function() {
let data = await fs.readFile(path.join(__dirname, "/res/map/l10su_1121_carpet.bin"));
let expected = JSON.parse(await fs.readFile(path.join(__dirname, "/res/map/l10su_1121_carpet.json"), { encoding: "utf-8" }));
let actual = await DreameMapParser.PARSE(await DreameMapParser.PREPROCESS(data));

if (actual.metaData?.nonce) {
delete(actual.metaData.nonce);
}

actual.layers.length.should.equal(expected.layers.length, "layerCount");

actual.layers.forEach((layer, i) => {
actual.layers[i].should.deepEqual(expected.layers[i]);
});

actual.entities.length.should.equal(expected.entities.length, "entitiesCount");

actual.entities.forEach((layer, i) => {
actual.entities[i].should.deepEqual(expected.entities[i]);
});

actual.should.deepEqual(expected);
});
});
@@ -0,0 +1 @@
eF7tmluP4kiahlOjkWYu5qKknYu-HOXtJi2fDS3NBeZ8JrE5tlqWbQwYG2OMjYFRa3_D_rD9JXu9dynNRoQBHzAkkFXZ1VK_pUrCn8MR7-P44rOTqj89_fefKtTTf_67__Tv_4J_iKf_efr16cv_1f_36TfQ202KX_WbK9nb25cb9GGY0Nxngifj_a8LXPD3k45Xo7HixpP0wIRRvf0AhH6cCYz9A2K6XSGUAAeAPMV9Jwoy3zNbXG_XYMDJN_gRv-iyYjAABwZ9q_9xXUeg-JB3yGdJhjnq9vHPWAKYuPczfS2YCytz1PvjH7bYU3jHQJJTmvksxwU6fB6Cx4Yff3-yy_Jz6PrSvDf-m8_gEx0ODgH__A3rgvRRGF-3wBychponBWsB9BRqh2G-oD-nVThEIgFIg5byMM9juspyhAnsnW8NX_F4eGVuWpwjDCxsJ3P36iaYUC7FTF-Uf4dvTrMQDCzTSBGfN-ntKQ4Q1iG34k5vUhTmPagjBKoQSA_QXN8zaGluXY5jP-ACfcBLIzBfIusU5TwSBDB3FYTDYsbtR-V3eR8Hdjj0OjHBOU575gAT4EQOjscR3QUTN54kHzYwfUkh2hjMwTCEQgq8ByePEYRwSrZvAAO7nQxeVBjm-AnniMEAm4H1U0pFeA4JAxV3fEWfBnNMs4sw4dw7loB7SJ5uhPEVOL2kd2EOAJE0OwlF0d_fDwwkCDVPfg81Dy3eA_sF6vNgfIKA6QIMih5h7qS5Dyb83pWgd2AOb2e3w9y7NMkwidHA6SW9A3Oud2DuXZlEmuSHaOD0kh6CORpGMP62CZeFsNd3leQ7FjuwBU4v6RrMyf8x4Q62TzThlQl0H9PbD09nS3EPTAjgfZjYjvFtBzBJNL7CMFfo_OhVmIMCp5d0BSZUy9DKHI8Co_42uYATgYkH4orYT94yF2BuXJkvCXsmCea8l5-LYa_xQFxh-_DrMph7UaF3maA0H1L5dOwHz5sIBiri88LKwG7xTgkwcKy7YM509sVL5NDXBRg0wYX7Dn0FClWBU4czGPSF4m0wbxdgYmn2IAzkidg9hb_4VJGVORzAU2GzqG84ENPJPro_ZzmGFDiFJk9uwwqdP34eJ_CFYGIFIKoA5qgvEDNsFna7CQauy1tyBQicQpOB8aTWGcxhGug27jcBJuj05XxhrsKgW3Z0DFnCtdlvoZ-B05DZSDMhmAwTrExYR5RI7F6Yk_OLVTkB5lTYEtfoKsy55auC1qGCUWDhC40aVtz_OVDCdwAhggdgQiuD0M7x0PIdukEaBHQc5TuCSbB-XZAmnFq3plmy_B6B05DZRIJQMwnmZDJoJuvY4evCoFodOIUmTwoHz5vnMO8iJCsA8KeNjBvoBhigHw5fUR5NfgWY4744r9YJgjBxRcb2dRsMuvRkNYwQKGH7xGAO38Ec_IVhUDjcOv449T5XAs8tMHDfhK0-CIPWJuzwHsVRoM5oboO59CtARP7rAwTxfybCnGhiaRZaIz9yqHzxLIzSxMePez_TzTAQ4vga5tOcTRaC-YCuw5w_XEK6Ayaq86SOrUywL852T-LKHC4-sZzD-IoThPR1YU7OHhGECys-vq8oTPSXgBNM8r6_pvhksWr2iPwafTtMbJ2-LsyDDEf5Jezt8B9Y4uP7Ctk_S7kjzAP_rhmf7HYY32zsMAwQbscUAMRRvvrKHC0eN3viE-SK0Jh-8_BNWVyfBRP7nuZjMGf15aATwlmSwRCMnR6EJ6M3sJ3P5r_RQJ4jE3J1j-AwX-CynI_u6xwhEPqPZ_DSrwFzXtCON_sewQIQuigKeh3mpLjXd5Xg8vxR8wAMsh86Olk9nXxLSLFAD-yYSzAnnGMBSOh2l2Iwh-AVpHf-2SxZCS7DBe2A9G1gYqciivu8SeeDx2BQJfi9w4QT7bNhQOjs-X9L3p0PfnjUhPPss2F-OPtC47ZH6PngT9ES8DuH-f5WBhmNB_4e-QLnEDnTN6hmQf09H-g-mNDj9_ypej54_F3zsTeAk2LPksCJf-Z2GF_hSKiNjpPenuJJ9kGYuM2DDv9k9nbhoRkzmqQ3iBP5winBpf_aHML5ljCXFDJ9VeG1SlyZ-Jvmt4CBSRaPhXS-H851y_5HS3NcGbR9vgXMO3oPJvF8okkfBu2c3wrmvTRLgknKsnMYv-o8qHdgLp2OO72kw1eZh8qYoADmo8vy9C5M0i_OUHHTl4RgLnAg-QXgU2DgDY3HkOJ-r-kayyeuzAWSH-6CucyCku_Pf_7LX_4c6GI-3qKLdn-4xhJJs-DfnZKEvCVuGgiSpHi_23XBLwxfYbl5z_gwvu24yQssZ_1u1wXD6N0sHgwpbvmK4FCJJj8N5vJbma-442tCGyPB5Kel2XuKG76iiyZD_iOK97td3xwmbNKvAycFpyIKKsbditu8TXHLlxUyedF-VAjmbw_onTf9i4pbDitaqeNW39eHYB7BifiNKvoQjTu9QR-BeSTX3mL_3SR0EH8jiFt9X28PkfwNwjxUBd6iv-1feaGJO71JcZc36gCTTHMhDHTFfVhxk7cq7vJGHWESbSdHod6DQefjFm9X3OWNejTN4u5DekPP_A-gfDrMlS0PCwpY64sP-BsUd3mjHoa5XACOmRt3eIfiLm_UozBX3jc-znInzKmUH6b-6516913wQyz3wjydGmjquNn39J3BIJpTUvz1TpwjzFl6HfV1YY63Plk-zMkAsBK3e13HjRG67AMwkQ0GD-JugYKdAVunXQLjb-hNLnQ3H4OJhCI0XxcGjBeFCTVRThx6HScP-zrq8nodqlksFlIU5i409G1TVBDmXT0OA0_dAnO0E3H7jmIJ69-3uPVzRWAuOk9QEuYFmODnrYrBxE1fUHjPwO0ct3efEmGO_qKH1_UgTOSqUKo9hPU4TKwAxGDOaUJZh-qY34pclbxvbtfXggkPg4Y6Gj_Jr8V-8_D3U2HuUHgYNNS5kmKfChM--wn6hjAJ2fON9QdMoO8c5ukpHrmm7xwm-Ul_Sd8ZzLn188hlfWcwcXsg0eKBK4rCnCl89hOUsAwPw_zmOme5S98ZTMLS3KHvDCZu7z79XmBu2jp_wHwzXYa5Sb8XmJsqwx8w30y3OL6iP2C-lW7KpSv6nmA-yvJdwdz0LLmm7wnmowvzfcF8WPERP1__epY0ceLapua4tiqaqvf8088_k2mCfklRGPiJv1AvhH_IsvQLgWHYC05j2C8vP5MkDJM0-Mm-EC8kjg5hLwp08vswfh8YhH0Y1AcNHPRJ4RQ4nSIIECVBpxSeRsdw4DToxdCoF4HDKAWCDOgGTsNDHAZhp4MnloBRBvzIAOtMBh7B0cAYcMZffnl5Xjja-PmnZ1qVZEylaJykJvLzy7O2VgxVMo3l9Pknx3bVl2dTskE_W_mHqZjyP0AXZfL8Ew4-YL-16oCT__oVhG1t_fwT8fLswO7g2NEW6tqRFpa4ACdwhqEpgmEyTBpPg4vdtbNcqDk4xvNPGLCzXAYHnoM-1osx-hyv0QdYoqXryEt7rNpr0V2rYKKff4nF4bqlCHijUzS8k34bssP7gsNbkoI3B7WOYQLdadTfb-LwpsMzFAPHQId-E17rr0MwR-jyYLTQNafRgumTBoOXRWz53eHihXzDCWDi-KP6TdQlMEVhyACygdqhc4d8IU_t-ICBeXgmsBCbCYZPhv0WzKrwNkJb6DARHA5uIYSN9grMVLSP4PwZFIYzwMw_9EI5DhI27fdBuw_trjQYKzQS3EJ-H38f-FsEdgpzhnrBgVMU3G1oC6GB0eqddhAgsVUDJNO_ntcKSr4J_PgVhJfy0hEnmqkulpa49jRHmR0S2NGWpigp6AMkvqOtHU1BY2Q9dQ2ynVclG_ZmMgS4gDM0czxammpedVQFZDxJYhSIg0MJ9iJweFTUti1bU0043hLsDoIlWQzGl4ax9PqSYTz_RIO7kAax0pJ3bEmbzsBgLJuGkzSljTaVHLAWeAYggkhn6aBjUIzg-LyztMAIGAs8gUMBLF7WXrom2HlpEoOj9orltiGZJtxuGZwBkdxMsqdoCNThZJhAhpExDxljKBKNWlqaU2jTB4eejkNQGQoOEdgkCRz2OdoCKU_A265ItqU6omWr67WIKgvILr-mYGSaeTk0aRY_NHEsA5MTNXEsfWyC23dskgT7y2lgQ92oBipfsqToM7BY4kTSjONU6L6BhedsVdLbS810CqYkG_C2HgohTAltPRNtdSFppqgaYEltTdGcHegD7wG6vuEajtaQrOPVIL6AIXEhWaJiOmg82AbVbXycHITWhrRAfdbaHk76I7hQBr1_xmChiD68PAm04P0GMAq4iT-zP8KEx39Eu47MgE3HvpA0-UJi5AtNZ14oCuzo58l6gaaKVllinFxQYR1AuxJtQ78K-rWOJfwzaGumKLiz_SbawKim-k8_eMZvns6waGeiIVDzOEuk2AYzxqYJjRtYQ8FDJ9gMrkGzxgyEGEJeAgvQUMSZ_8xG5Q-2YoWYRHXNL8SoHS7EoXOo7Z8Lj3Yoq6dL_L6HBgFBArsUqnSoScQLcehZubAl8HTG_Mc1WPBntcg6i7TbIrBhf-boo-o0peG8p7_W8P6OIDfZBd_ZFApZb5_jXQ7DGs2mM27a23y2sukUTHzWbnTXaYrJNdL0eIKPqjUHy2UGndF-3GvnvJ5IZYrdmUrWqZWWqtFT0TAboqilFtxArO3losOmNuJO7DWIScvM1-1qmxu5TJbxxvRYznLCgFaqbIOoDkmx9zpkhdGmaWQLm22xlE-VSpuVpjfdV1lp60Kzsyx26kVhW2b2XDrH8CmOGacsfmc1tYm2IJhG0WNGc6zGlep4K7OpclVVLeSmRIvJvIoChg2mZHG3HhPzurUq4e3JbFvWe9K0s6ySynydaWppnshZpswvB5uhTrem3VyrYPI81aqbw4mgmfpGHLbGpd6ywPF0nR8Yu1WxqJXTFbvfmeenjtnfKfo2lSmqzYKD5RuLipPTtlyx7-qLtmGapjsuZMgut94Np_J28LpcGnwpr1axhp52FkWFXyt9QdOZ0tKTOUbaM73X0norr1SNKckjz1MFh8MNIcdQet8s8vVZzlm0-zlKmFuk1KuwnDzp9AqVFr3umLUq3ef5VzrFD7otayqs6bUw2lGs2coVmtx-KHWcXJXeDCXaYR1DoLcpRTdz2g7f8xY_tOpW6lWvGKMyPtXGI45smIvBVNjUyzO8bVdbrjAu2bnVoM9nhOau4YpL3OHnzeKgPh3tsdRObSwwgUrpPLfJFM3hWKj2NJKx3Snf9JbNaolC3NuF63IpoyPppqbqOu3lTLBQhWWzZprTqjRse3JJUCoU39uq6flu1OyM2-tNrWRZA3NW6VbStq6k05OsWzCG1ZSINfB8cdvf2J0etjM7WjHVb07JnFDYyXSzkS87ulutbua9SYvCW0zxtbvqUjWOr8I-w1WXbgqLnl6ca5OZbM24lKlZBNZdavNG2WvPq3qxta2uernyJl2VK-291VSXPJ7qu-yq6OVppkZ5E2_XWFAdvKBboFG0mOErtnSLeVzwTKFJtbY6mWtlDTtn4KXG3NVHebfX0LGyUqxhXn1W3VbxRnrGzYtNoVDrzAytQBmcmyrluel-ZzJKqbKTO82dZdRzPFF_zfEbS-atRrff8GRr7FSHk-FCs5Rhk1pUuml-WqKrWkMgaiRFzaeC09k0eIpXeEUuyoN5sSVtvQaV60xJTZKE3GhZVSdZfNtvr9lVh9IGJYEpV1YZoQf2y7a1a7SVer0zcWmlwOpCZ56uUfwwK9CDwnbCK25qR-wb7Tw2q3fsrlrpNsAaLzvttsGlMW7LacTqtTtbpDlqN-wovOXw5ZQqFnvj5Yh217t-d7op4Ll1i5yW4bx1aaoUGEVprRne1GY8XaZ1XST4Fd7S-qmmolJ8F3A0OKdWJmZjbcwtu5X8vOoUDLppj_gCmV4UaKMz3eVZc2QJ03F67NmNflfZve7seVv2CLzQLc0Fzi2Y4M-ex6xtqrnAJLZVIvs4tyzUuOUU3YPajinvLLVAOzZrNGhWN8fpviPS5OsIJ1yeJNrORqnsrWF-vmu3p24hXyu_2nSBFzP1MrdtY5jZ1lojfgSqwXQ8brnFzkKXmJFiWINUnV8VK1lqJ3N5q8hu63KrOShbm4Je3ZUn9cVatDLZLLxnY7baT9tasYA7M34MTixEc9wzZiB3JbOy72Z0qmM0MElcj2YpYgvir5qwLhZ2Cql5BQbb9cm9J8-qzSo-XdqCMFgJnrqpkK3X9ATeN3vbZNn-QjMtXSDZVG-vWi5Tkliyw2eVUbMCngk0WWwvzGGpXPckGeQkqfWGpkAtlHWx4eachtTJbvE8yCdvOqxPumy6y7E83-OGWCmvcK0V2WVne7YvmEx-1pL7-WlzLnM5l1U2eXNnF9hsTcr3dpNpurqbdGrzQXtb0SleUgkVE5ZOnupVRWNSqM83FTPPd_LgMV2reHJnOXQtd5nXmq2NI7Q66_FWMia8YLO8JGhVzKzRsyK20YZuXWNS4sbkXvMTy1juOadkaWxZZlqtPL6ojtJDIpeWZ31T8Fqv43Wxsq5tlfmwnlkXa6NmlmqS6ybYV1rL7lWd6YbwupaO5aekOjN4yh021cW8usvq6XVtKBDNaavAqr3FYFIc790CxtF1QdLcBmsp1ZaY0XJrvJEXWsw2Nx56SrbGttieSGe4YqG-35P7qacIYr04HDW3ea1axGSXG4G9sSwJXj1XtfIajsuZ2liprVf9_LCTrYD64rWtqUI4jZzOoBi76tUzG1IpL22yLs2yK8_RdIJP70ZZatQc5RVz1pG5kplivKpHD5uzwtgcrKaV0XqitgSuIjvDfldtS5OVhnsrNqNvDQvsp33Gy2qbPZPrLxvlyoYtvnLkclYXqotymdUm_XWXqBf7xcVk_Wphs-Y6zXfVIT9KZbgWa2J0NmUymmDRXd1pLF7VRdUY2pN0z8YxBivNLKfRA8_oRbmTl-cFo2xS2itm1_NZe-BqBkGKnVYLLEhWzHCFLklxVYF2SyZtz4Zattoq1VLtHCgkG2u_EtJ5dYSPG-R0pU7a-h5YEoWNMCrzbXKqW0VDyAzyE9noFNOeLYBt6hFmXWFEbuPs-stRa2C3BK3Y4gpye6Rvm-JIlndre7XwRsQIb2btCVMQJt6mD4xu9akMtla96jZxuQYe7jyjCnwqw5RH9oInpgTZpV0qU1o2SoXUiFHm3VI5N2nQrQ6Tz83aenrMKAvZbXdWeW7WtlihUZt6Q4HNKxnbllL0q1eZj8wq0cpmZWW6LNC9YS8tyxXhlWwzlKEzrMKOGJXrLkogf10JS2W6WKumZCZcg3jNKQ03288rzBKMKfew6pbYMOAZCl4C8S47VUuTllgnKXki2FamZJOYLLq2K5ZlnBH7w7Rq7zNM15BEkqVeK2QbcJRn7Ia1wN-Ml9pRQ5V1vPTEJOm0Wt6SKXFWHwyWmYWMU4pAqINGZpEZ1eWmOGhnGiSVUfu55nq_4uRxQ-0OmwwvNncpdyRX9Y2U3aoGP8wYe5lKiTmV1eW9uWiWFdZt57ujdo6oVjO0uqjXDYvDG-xqztOat8ZNspKdr4uOnNmsF_Z4TAjDFtOoC8WZwmX0jlHCZ5JMvLqkmUlv6hnwRjqrFMQ5w7upymy2aW_37f7GrfeY1AIrm0Ktk_IMg9DbvVRrxAj9jUFtbGYyK6WcrZeWqyrpdOYq325ajNym2zV-jI3rjNthVRtfUg0jPZgpg8yEWrTz-fbAJsYKU64S4kYWiH1-oKpdncB1Y0iBXx9nwpbt7-fgV1HHLVf03WbVAQ-HPVZnutUyU69P2_nUnhFylEUtOqWdqnkMZxpTzKgyRDufTtutST1f6ehpr-zVBsxrf9zatqQVPcYz2V6zgqWl8jhDd9pzIU8ObNGddFYZg8o0Ns6eEO0VRbg7zJHabZJ83RNkM9XukBOCJcRUY6CT5SXw7LJj8Diw8uNid2IsXKbjqi6920tpusrse7uNKguDqWmNu5LoaePxTFL2maJe3Hb0QmoiUoI7KRHu9J__fP71_wHIRpVr

0 comments on commit d1ad1af

Please sign in to comment.