1 line
170 KiB
JSON
1 line
170 KiB
JSON
{"ast":null,"code":"import \"core-js/modules/es.array.push.js\";\n/* eslint-disable */\nimport $store from \"@/store\";\nvar askInterval = null;\n\n// 自动问路\nfunction autoask(newData) {\n const askObg = {\n // 自动问路\n BbigEyeRoadisshow: false,\n BbigEyeRoadcolor: \"\",\n Bpathwayisshow: false,\n Bpathwaycolor: \"\",\n Broachisshow: false,\n Broachcolor: \"\",\n // 闲问路\n PbigEyeRoadisshow: false,\n PbigEyeRoadcolor: \"\",\n Ppathwayisshow: false,\n Ppathwaycolor: \"\",\n Proachisshow: false,\n Proachcolor: \"\"\n };\n // 庄问路\n if (newData.ludan_banker) {\n if (newData.ludan_banker.waybill) {\n const bigEyeRoad = newData.ludan_banker.waybill.bigEyeRoad;\n const pathway = newData.ludan_banker.waybill.pathway;\n const roach = newData.ludan_banker.waybill.roach;\n if (bigEyeRoad[0]) {\n if (bigEyeRoad[bigEyeRoad.length - 1].result == 1) {\n askObg.BbigEyeRoadcolor = \"red\";\n } else {\n askObg.BbigEyeRoadcolor = \"blue\";\n }\n askObg.BbigEyeRoadisshow = true;\n } else {\n askObg.BbigEyeRoadisshow = false;\n }\n if (pathway[0]) {\n if (pathway[pathway.length - 1].result == 1) {\n askObg.Bpathwaycolor = \"red\";\n } else {\n askObg.Bpathwaycolor = \"blue\";\n }\n askObg.Bpathwayisshow = true;\n } else {\n askObg.Bpathwayisshow = false;\n }\n if (roach[0]) {\n if (roach[roach.length - 1].result == 1) {\n askObg.Broachcolor = \"red\";\n } else {\n askObg.Broachcolor = \"blue\";\n }\n askObg.Broachisshow = true;\n } else {\n askObg.Broachisshow = false;\n }\n }\n // 闲问路\n if (newData.ludan_player.waybill) {\n const bigEyeRoad = newData.ludan_player.waybill.bigEyeRoad;\n const pathway = newData.ludan_player.waybill.pathway;\n const roach = newData.ludan_player.waybill.roach;\n if (bigEyeRoad[0]) {\n if (bigEyeRoad[bigEyeRoad.length - 1].result == 1) {\n askObg.PbigEyeRoadcolor = \"red\";\n } else {\n askObg.PbigEyeRoadcolor = \"blue\";\n }\n askObg.PbigEyeRoadisshow = true;\n } else {\n askObg.PbigEyeRoadisshow = false;\n }\n if (pathway[0]) {\n if (pathway[pathway.length - 1].result == 1) {\n askObg.Ppathwaycolor = \"red\";\n } else {\n askObg.Ppathwaycolor = \"blue\";\n }\n askObg.Ppathwayisshow = true;\n } else {\n askObg.Ppathwayisshow = false;\n }\n if (roach[0]) {\n if (roach[roach.length - 1].result == 1) {\n askObg.Proachcolor = \"red\";\n } else {\n askObg.Proachcolor = \"blue\";\n }\n askObg.Proachisshow = true;\n } else {\n askObg.Proachisshow = false;\n }\n }\n }\n return askObg;\n}\n// 问路\nfunction waybillAsk(canvas, type, data, game_id) {\n if (askInterval != null) {\n clearInterval(askInterval);\n }\n if (type == \"banker\") {\n if (data.ludan_banker && data.ludan_banker.waybill) {\n ask(canvas, data.ludan_banker, data.ludan, game_id);\n }\n } else if (type == \"palyer\") {\n if (data.ludan_player && data.ludan_player.waybill) {\n ask(canvas, data.ludan_player, data.ludan, game_id);\n }\n }\n}\nfunction ask(canvas, newdata, olddata, game_id) {\n const nshowRoad = newdata.waybill.showRoad || [];\n const nbigEyeRoad = newdata.waybill.bigEyeRoad || [];\n const nbigRoad = newdata.waybill.bigRoad || [];\n const npathway = newdata.waybill.pathway || [];\n const nroach = newdata.waybill.roach || [];\n const nsanxing = newdata.waybill.sanxingRoad || [];\n const oshowRoad = olddata.waybill.showRoad || [];\n const obigEyeRoad = olddata.waybill.bigEyeRoad || [];\n const obigRoad = olddata.waybill.bigRoad || [];\n const opathway = olddata.waybill.pathway || [];\n const oroach = olddata.waybill.roach || [];\n const osanxing = olddata.waybill.sanxingRoad || [];\n if (nshowRoad.length > 0) {\n var n_s_last_x = nshowRoad[nshowRoad.length - 1].show_x;\n } else {\n var n_s_last_x = 0;\n }\n if (nbigEyeRoad.length > 0) {\n var n_e_last_x = nbigEyeRoad[nbigEyeRoad.length - 1].show_x;\n } else {\n var n_e_last_x = 0;\n }\n if (nbigRoad.length > 0) {\n var n_b_last_x = nbigRoad[nbigRoad.length - 1].show_x;\n } else {\n var n_b_last_x = 0;\n }\n if (npathway.length > 0) {\n var n_p_last_x = npathway[npathway.length - 1].show_x;\n } else {\n var n_p_last_x = 0;\n }\n if (nroach.length > 0) {\n var n_r_last_x = nroach[nroach.length - 1].show_x;\n } else {\n var n_r_last_x = 0;\n }\n if (nsanxing.length > 0) {\n var n_sx_last_x = nsanxing[nsanxing.length - 1].show_x;\n } else {\n var n_sx_last_x = 0;\n }\n if (oshowRoad.length > 0) {\n var o_s_last_x = oshowRoad[oshowRoad.length - 1].show_x;\n } else {\n var o_s_last_x = 0;\n }\n if (obigEyeRoad.length > 0) {\n var o_e_last_x = obigEyeRoad[obigEyeRoad.length - 1].show_x;\n } else {\n var o_e_last_x = 0;\n }\n if (obigRoad.length > 0) {\n var o_b_last_x = obigRoad[obigRoad.length - 1].show_x;\n } else {\n var o_b_last_x = 0;\n }\n if (opathway.length > 0) {\n var o_p_last_x = opathway[opathway.length - 1].show_x;\n } else {\n var o_p_last_x = 0;\n }\n if (oroach.length > 0) {\n var o_r_last_x = oroach[oroach.length - 1].show_x;\n } else {\n var o_r_last_x = 0;\n }\n if (osanxing.length > 0) {\n var o_sx_last_x = osanxing[osanxing.length - 1].show_x;\n } else {\n var o_sx_last_x = 0;\n }\n var askroad = {\n askshowroad: false,\n askbigRoad: false,\n askbigEyeRoad: false,\n askpathway: false,\n askroach: false\n };\n if (n_s_last_x > o_s_last_x) {\n askroad.askshowroad = true;\n } else {\n askroad.askshowroad = false;\n }\n if (n_e_last_x > o_e_last_x) {\n askroad.askbigEyeRoad = true;\n } else {\n askroad.askbigEyeRoad = false;\n }\n if (n_b_last_x > o_b_last_x) {\n askroad.askbigRoad = true;\n } else {\n askroad.askbigRoad = false;\n }\n if (n_p_last_x > o_p_last_x) {\n askroad.askpathway = true;\n } else {\n askroad.askpathway = false;\n }\n if (n_r_last_x > o_r_last_x) {\n askroad.askroach = true;\n } else {\n askroad.askroach = false;\n }\n if (n_sx_last_x > o_sx_last_x) {\n askroad.asksanxing = true;\n } else {\n askroad.asksanxing = false;\n }\n var time = 8;\n askInterval = setInterval(function () {\n time--;\n var num = time % 2;\n if (time < 0) {\n clearInterval(askInterval);\n } else {\n if (num == 1) {\n waybillConfig(canvas, newdata, game_id, true, askroad);\n // halfwayConfig(newdata, true, askroad)\n } else {\n waybillConfig(canvas, olddata, game_id, true);\n // halfwayConfig(canvas, olddata, true)\n }\n }\n }, 200);\n}\n// 全路\nfunction waybillConfig(canvas, data, game_id, ask, askroad) {\n // console.log(data)\n var getPixelRatio = context => {\n var backingStore = context.backingStorePixelRatio || context.webkitBackingStorePixelRatio || context.mozBackingStorePixelRatio || context.msBackingStorePixelRatio || context.oBackingStorePixelRatio || context.backingStorePixelRatio || 1;\n return (window.devicePixelRatio || 1) / backingStore;\n };\n const ctb = canvas.getContext(\"2d\"),\n dpr = getPixelRatio(ctb),\n height = canvas.clientHeight,\n width = canvas.clientWidth;\n let rows, unit, cols, path, unit_y, unit_x;\n rows = 6;\n unit = parseInt(height / rows) * dpr;\n cols = parseInt(width / (unit / dpr));\n path = false;\n if (cols % 2 != 0) {\n cols = cols + 1;\n }\n if (game_id == 1 || game_id == 2) {\n if (ask != true) {\n if (data && data.ludan && data.ludan.waybill) {\n path = data.ludan.waybill;\n }\n } else {\n if (data.waybill) {\n path = data.waybill;\n }\n }\n canvas.setAttribute(\"width\", unit * cols);\n canvas.setAttribute(\"height\", unit * rows);\n Waybill(ctb, unit, rows, cols, path, game_id, ask, askroad);\n } else if (game_id == 4 || game_id == 5) {\n rows = 4;\n unit_y = height / rows * dpr;\n unit_x = unit_y * 1.05;\n cols = parseInt(width / (unit_x / dpr));\n canvas.setAttribute(\"width\", unit_x * cols);\n canvas.setAttribute(\"height\", unit_y * rows);\n if (data.ludan && data.ludan.waybill) {\n path = data.ludan.waybill;\n }\n NNcanvas(game_id, ctb, unit_x, unit_y, rows, cols, path);\n } else if (game_id == 6) {\n canvas.setAttribute(\"width\", unit * cols);\n canvas.setAttribute(\"height\", unit * rows);\n if (data && data.ludan && data.ludan.waybill) {\n path = data.ludan.waybill;\n }\n const toningShowBigWay = $store.state.config.toningShowBigWay;\n ToningWaybill(ctb, unit, rows, cols, path, data.game_id, 3, toningShowBigWay);\n } else if (game_id == 7) {\n canvas.setAttribute(\"width\", unit * cols);\n canvas.setAttribute(\"height\", unit * rows);\n if (data && data.ludan && data.ludan.waybill) {\n path = data.ludan.waybill;\n }\n DiceWaybill(ctb, unit, rows, cols, path, 3);\n } else if (game_id == 8) {\n canvas.setAttribute(\"width\", unit * cols);\n canvas.setAttribute(\"height\", unit * rows);\n if (data && data.ludan && data.ludan.waybill) {\n path = data.ludan.waybill;\n }\n RouletteWaybill(ctb, unit, rows, cols, path, 3);\n }\n}\n// 半路\nfunction halfwayConfig(canvas, data, ask, askroad) {\n var getPixelRatio = context => {\n var backingStore = context.backingStorePixelRatio || context.webkitBackingStorePixelRatio || context.mozBackingStorePixelRatio || context.msBackingStorePixelRatio || context.oBackingStorePixelRatio || context.backingStorePixelRatio || 1;\n return (window.devicePixelRatio || 1) / backingStore;\n };\n const ctb = canvas.getContext(\"2d\"),\n dpr = getPixelRatio(ctb),\n height = canvas.clientHeight,\n width = canvas.clientWidth,\n rows = 12,\n unit = parseInt(height / rows) * dpr,\n cols = parseInt(width / (unit / dpr)),\n game_id = data.game_id;\n let path = false;\n if (ask != true) {\n if (data.ludan.waybill) {\n path = data.ludan.waybill;\n }\n } else {\n if (data.waybill) {\n path = data.waybill;\n }\n }\n canvas.setAttribute(\"width\", unit * cols);\n canvas.setAttribute(\"height\", unit * rows);\n HalfWay(ctb, unit, rows, cols, path, game_id, ask, askroad);\n}\nfunction Waybill(ctb, unit, rows, cols, path, gameId, ask, askroad, multiple) {\n var ask = ask || false;\n var askroad = askroad || {\n askshowroad: false,\n askbigRoad: false,\n askbigEyeRoad: false,\n askpathway: false,\n askroach: false,\n asksanxing: false\n };\n ctb.clearRect(0, 0, unit * 100, unit * rows);\n var showRoad = path.showRoad;\n var bigRoad = path.bigRoad;\n var bigEyeRoad = path.bigEyeRoad;\n var pathway = path.pathway;\n var roach = path.roach;\n var sanxingRoad = path.sanxingRoad;\n if (multiple == true) {\n multipleDrawline(ctb, unit, rows, cols);\n var billnumber = 4;\n } else {\n Drawline(ctb, unit, rows, cols);\n var billnumber = 5;\n }\n if (path) {\n if (showRoad && multiple != true) {\n var roadType = \"showWay\";\n cutRoad(billnumber, roadType, ctb, unit, showRoad, cols, gameId, ask, askroad.askshowroad);\n }\n if (bigRoad && bigRoad.length > 0) {\n if (bigRoad[0].result == 3 && bigRoad[0].show_x == 1 && bigRoad[0].show_y == 1) {\n BigPathTie(billnumber, ctb, unit, cols, bigRoad[0].tie_num);\n } else {\n var roadType = \"bigWay\";\n cutRoad(billnumber, roadType, ctb, unit, bigRoad, cols, gameId, ask, askroad.askbigRoad);\n }\n }\n if (bigEyeRoad && bigEyeRoad.length > 0) {\n var roadType = \"bigeyeWay\";\n cutRoad(billnumber, roadType, ctb, unit, bigEyeRoad, cols, gameId, ask, askroad.askbigEyeRoad);\n }\n if (pathway && pathway.length > 0) {\n var roadType = \"littlWay\";\n cutRoad(billnumber, roadType, ctb, unit, pathway, cols, gameId, ask, askroad.askpathway);\n }\n if (roach && roach.length > 0) {\n var roadType = \"roachWay\";\n cutRoad(billnumber, roadType, ctb, unit, roach, cols, gameId, ask, askroad.askroach);\n }\n if (sanxingRoad && sanxingRoad.length > 0) {\n var roadType = \"sanxingWay\";\n cutRoad(billnumber, roadType, ctb, unit, sanxingRoad, cols, gameId, ask, askroad.asksanxing);\n }\n }\n}\n// 大眼路单独一条\nfunction WaybillbigRoad(ctb, unit, rows, cols, path, gameId) {\n ctb.clearRect(0, 0, unit * 100, unit * rows);\n Drawline(ctb, unit, rows, cols, true);\n if (path && path.length > 0) {\n if (path[0].result == 3 && path[0].show_x == 1 && path[0].show_y == 1) {\n BigPathTie(1, ctb, unit, cols, path[0].tie_num, true);\n } else {\n cutRoad(1, \"bigWay\", ctb, unit, path, cols, gameId, false, false);\n }\n }\n}\n\n// 半路 竖版路单\nfunction HalfWay(ctb, unit, rows, cols, path, gameId, ask, askroad) {\n var ask = ask || false;\n var askroad = askroad || {\n askshowroad: false,\n askbigRoad: false,\n askbigEyeRoad: false,\n askpathway: false,\n askroach: false,\n asksanxing: false\n };\n ctb.clearRect(0, 0, unit * 100, unit * rows);\n var showRoad = path.showRoad;\n var bigRoad = path.bigRoad;\n var bigEyeRoad = path.bigEyeRoad;\n var pathway = path.pathway;\n var roach = path.roach;\n var sanxingRoad = path.sanxingRoad;\n halfwayDrawline(ctb, unit, rows, cols);\n if (path) {\n if (showRoad) {\n var roadType = \"showWay\";\n halfcutRoad(roadType, ctb, unit, showRoad, cols, gameId, ask, askroad.askshowroad);\n }\n if (bigRoad) {\n if (bigRoad[0].result == 3 && bigRoad[0].show_x == 1 && bigRoad[0].show_y == 1) {\n BigPathTie(5, ctb, unit, cols, bigRoad[0].tie_num);\n } else {\n var roadType = \"bigWay\";\n halfcutRoad(roadType, ctb, unit, bigRoad, cols, gameId, ask, askroad.askbigRoad);\n }\n }\n if (bigEyeRoad) {\n var roadType = \"bigeyeWay\";\n halfcutRoad(roadType, ctb, unit, bigEyeRoad, cols, gameId, ask, askroad.askbigEyeRoad);\n }\n if (pathway) {\n var roadType = \"littlWay\";\n halfcutRoad(roadType, ctb, unit, pathway, cols, gameId, ask, askroad.askpathway);\n }\n if (roach) {\n var roadType = \"roachWay\";\n halfcutRoad(roadType, ctb, unit, roach, cols, gameId, ask, askroad.askroach);\n }\n if (sanxingRoad) {\n var roadType = \"sanxingWay\";\n halfcutRoad(roadType, ctb, unit, sanxingRoad, cols, gameId, ask, askroad.asksanxing);\n }\n }\n}\n\n// 前端路单数据截取\nfunction cutRoad(billnumber, roadType, ctb, unit, roadData, cols, gameId, ask, askroad) {\n var L = roadData.length;\n var new_roadData = [];\n var Tab = 0;\n var start_x = 0;\n // 格子个数\n if (roadType == \"showWay\" || roadType == \"bigWay\") {\n if (roadType == \"showWay\") {\n if (ask && askroad) {\n Tab = cols / 2;\n } else if (gameId == 6 && billnumber == 3) {\n Tab = parseInt(cols / 3) - 1;\n } else {\n Tab = cols / 2 - 1;\n }\n } else {\n if (ask && askroad) {\n Tab = cols;\n } else {\n Tab = cols - 1;\n }\n }\n } else if (roadType == \"sanxingWay\") {\n if (ask && askroad) {\n Tab = cols / 2;\n } else {\n Tab = cols / 2 - 1;\n }\n } else if (roadType == \"toningBigWay\" || roadType == \"bigRoadBS\" || roadType == \"bigRoadSP\") {\n if (billnumber == 3) {\n Tab = parseInt(cols / 3) - 1;\n } else if (billnumber == 2) {\n Tab = parseInt(cols / 2) - 1;\n } else {\n Tab = cols - 1;\n }\n } else {\n if (ask && askroad) {\n Tab = cols - 1;\n } else {\n Tab = cols - 2;\n }\n }\n // 初始位置\n if (billnumber == 1) {\n start_x = 0.25;\n } else if (billnumber == 2) {\n if (roadType == \"bigRoadSP\") {\n start_x = 0.25;\n }\n if (roadType == \"bigRoadBS\") {\n start_x = parseInt(cols / 2) + 0.25;\n }\n } else if (billnumber == 3) {\n if (roadType == \"toningBigWay\") {\n start_x = 0.25;\n }\n if (roadType == \"bigRoadSP\") {\n start_x = parseInt(cols / 3) + 0.25;\n }\n if (roadType == \"bigRoadBS\") {\n start_x = parseInt(cols / 3) * 2 + 0.25;\n }\n } else if (billnumber == 4) {\n start_x = 0.25;\n if (roadType == \"littlWay\") {\n start_x = cols * 0.55 * unit;\n }\n unit = unit * 2;\n } else if (billnumber == 5) {\n start_x = cols / 2 + 0.25;\n if (roadType == \"bigWay\") {\n start_x = cols / 2;\n }\n if (roadType == \"littlWay\") {\n start_x = cols * 0.5 * unit + 0.25 * unit * (cols + 1);\n }\n if (roadType == \"sanxingWay\") {\n start_x = cols * 0.5 * unit + 0.25 * unit * (cols + 1);\n }\n }\n if (L >= 1) {\n var last_x = roadData[L - 1].show_x;\n if (last_x > Tab) {\n var cut = last_x - Tab;\n roadData.forEach(function (v) {\n if (v.show_x > cut) {\n new_roadData.push(v);\n }\n });\n } else {\n new_roadData = roadData;\n cut = 0;\n }\n } else {\n new_roadData = roadData;\n cut = 0;\n }\n new_roadData.forEach(function (v) {\n if (roadType == \"roachWay\") {\n CockrochPath(ctb, unit, start_x, v.show_x - cut, v.show_y, v.result);\n } else if (roadType == \"littlWay\") {\n LittlePath(ctb, unit, start_x, v.show_x - cut, v.show_y, v.result);\n } else if (roadType == \"bigeyeWay\") {\n BigeyePath(ctb, unit, start_x, v.show_x - cut, v.show_y, v.result);\n } else if (roadType == \"showWay\") {\n SoloPath(gameId, ctb, unit, v.show_x - cut, v.show_y, v.result, v.pair);\n } else if (roadType == \"bigWay\") {\n BigPath(ctb, unit, start_x, v.show_x - cut, v.show_y, v.result, v.tie_num, v.pair, billnumber);\n } else if (roadType == \"sanxingWay\") {\n sanxingPath(ctb, unit, start_x, v.show_x - cut, v.show_y, v.result, v.tie_num);\n } else if (roadType == \"toningBigWay\" || roadType == \"bigRoadSP\" || roadType == \"bigRoadBS\") {\n ToningBigPath(ctb, unit, start_x, v.show_x - cut, v.show_y, v.result, v.tie_num, v.pair, billnumber, roadType);\n }\n });\n}\n\n// 半路单数据截取\nfunction halfcutRoad(roadType, ctb, unit, roadData, cols, gameId, ask, askroad) {\n var L = roadData.length;\n var new_roadData = [];\n var Tab = 0;\n var start_x = 0;\n if (roadType == \"showWay\") {\n if (ask && askroad) {\n Tab = cols;\n } else {\n Tab = cols - 1;\n }\n }\n if (roadType == \"bigeyeWay\" || roadType == \"roachWay\") {\n if (ask && askroad) {\n Tab = cols * 2 + 1;\n } else {\n Tab = cols * 2;\n }\n }\n if (roadType == \"bigWay\" || roadType == \"littlWay\") {\n if (ask && askroad) {\n Tab = cols * 2;\n } else {\n Tab = cols * 2 - 1;\n }\n }\n if (roadType == \"sanxingWay\") {\n if (ask && askroad) {\n Tab = cols;\n } else {\n Tab = cols - 1;\n }\n }\n if (L >= 1) {\n var last_x = roadData[L - 1].show_x;\n if (last_x > Tab) {\n var cut = last_x - Tab;\n roadData.forEach(function (v) {\n if (v.show_x > cut) {\n new_roadData.push(v);\n }\n });\n } else {\n new_roadData = roadData;\n cut = 0;\n }\n } else {\n new_roadData = roadData;\n cut = 0;\n }\n new_roadData.forEach(function (v) {\n if (roadType == \"showWay\") {\n SoloPath(gameId, ctb, unit, v.show_x - cut, v.show_y, v.result, v.pair);\n } else if (roadType == \"bigWay\") {\n BigPath(ctb, unit, start_x, v.show_x - cut, v.show_y + 12, v.result, v.tie_num, v.pair, 2);\n } else if (roadType == \"bigeyeWay\") {\n BigeyePath(ctb, unit, start_x, v.show_x - cut, v.show_y + 24, v.result);\n } else if (roadType == \"littlWay\") {\n start_x = (cols + 0.5) * unit / 2;\n LittlePath(ctb, unit, start_x, v.show_x - cut, v.show_y + 24, v.result);\n } else if (roadType == \"roachWay\") {\n CockrochPath(ctb, unit, start_x, v.show_x - cut, v.show_y + 24, v.result);\n } else if (roadType == \"sanxingWay\") {\n start_x = cols * 0.525 * unit;\n sanxingPath(ctb, unit, start_x, v.show_x - cut, v.show_y + 12, v.result, v.tie_num);\n }\n });\n}\n\n// 画线条\nfunction Drawline(ctb, unit, rows, cols, billnumber) {\n var CanvasWidht = unit * cols;\n var CanvasHeight = unit * rows;\n ctb.lineWidth = 1; //线条宽度\n ctb.strokeStyle = \"#d9d9d9\"; //线条颜色\n ctb.beginPath();\n ctb.moveTo(0, 0.5);\n ctb.lineTo(CanvasWidht, 0.5);\n for (var i = 1; i <= rows; i++) {\n ctb.moveTo(0, unit * i);\n ctb.lineTo(CanvasWidht, unit * i);\n }\n ctb.moveTo(0.5, 0);\n ctb.lineTo(0.5, CanvasHeight);\n for (var j = 1; j <= cols; j++) {\n ctb.moveTo(unit * j, 0);\n ctb.lineTo(unit * j, CanvasHeight);\n }\n if (billnumber != 1) {\n for (var l = 0; l <= rows; l++) {\n ctb.moveTo(CanvasWidht * 0.5, (l + 0.5) * unit);\n ctb.lineTo(CanvasWidht, (l + 0.5) * unit);\n }\n for (var k = 0; k <= cols - Math.floor(0.5 * cols); k++) {\n ctb.moveTo((Math.floor(0.5 * cols) + k + 0.5) * unit, 0);\n ctb.lineTo((Math.floor(0.5 * cols) + k + 0.5) * unit, CanvasHeight);\n }\n }\n ctb.closePath();\n ctb.stroke();\n}\n\n// 多台四条路\nfunction multipleDrawline(ctb, unit, rows, cols) {\n var CanvasWidht = unit * cols;\n var CanvasHeight = unit * rows;\n ctb.lineWidth = 1; //线条宽度\n ctb.strokeStyle = \"#d9d9d9\"; //线条颜色\n ctb.beginPath();\n ctb.moveTo(0, 0.5);\n ctb.lineTo(CanvasWidht, 0.5);\n for (var i = 1; i <= rows; i++) {\n ctb.moveTo(0, unit * i);\n ctb.lineTo(CanvasWidht, unit * i);\n }\n ctb.moveTo(0.5, 0);\n ctb.lineTo(0.5, CanvasHeight);\n for (var j = 1; j <= cols; j++) {\n ctb.moveTo(unit * j, 0);\n ctb.lineTo(unit * j, CanvasHeight);\n }\n ctb.closePath();\n ctb.stroke();\n}\n\n// 半路\nfunction halfwayDrawline(ctb, unit, rows, cols) {\n var CanvasWidht = unit * cols;\n var CanvasHeight = unit * rows;\n ctb.lineWidth = 1;\n ctb.beginPath();\n ctb.strokeStyle = \"#d9d9d9\";\n ctb.moveTo(0, 0.5);\n ctb.lineTo(CanvasWidht, 0.5);\n for (var i = 1; i <= rows; i++) {\n ctb.moveTo(0, unit * i);\n ctb.lineTo(CanvasWidht, unit * i);\n }\n ctb.moveTo(0.5, 0);\n ctb.lineTo(0.5, CanvasHeight);\n for (var j = 1; j <= cols; j++) {\n ctb.moveTo(unit * j, 0);\n ctb.lineTo(unit * j, CanvasHeight);\n }\n for (var i = 0; i <= rows; i++) {\n ctb.moveTo(0, unit * (i + 6.5));\n ctb.lineTo(CanvasWidht, unit * (i + 6.5));\n }\n for (var j = 0; j <= cols; j++) {\n ctb.moveTo(unit * (j + 0.5), CanvasHeight / 2);\n ctb.lineTo(unit * (j + 0.5), CanvasHeight);\n }\n ctb.closePath();\n ctb.stroke();\n // 画划分线\n ctb.beginPath();\n ctb.strokeStyle = \"#555\";\n ctb.moveTo(0, unit * 6);\n ctb.lineTo(CanvasWidht, unit * 6);\n ctb.moveTo(0, unit * 9);\n ctb.lineTo(CanvasWidht, unit * 9);\n ctb.closePath();\n ctb.stroke();\n}\n\n// 局数 数,文字X坐标,文字Y坐标,文字大小风格\nfunction Font_tie(ctb, num, Font_x, Font_y, fontsize, color) {\n if (num !== undefined) {\n ctb.beginPath();\n ctb.font = fontsize;\n ctb.textAlign = \"center\";\n ctb.textBaseline = \"middle\";\n ctb.fillStyle = color || \"#000\";\n ctb.fillText(num, Font_x, Font_y);\n ctb.stroke();\n }\n}\nfunction SoloPath(gameId, ctb, unit, x, y, type, corners) {\n ctb.beginPath();\n ctb.lineWidth = unit * 0.02;\n ctb.strokeStyle = \"#fff\";\n const radius = unit / 2;\n const $Type = $store.state.config.$Type;\n const $lang = $store.state.config.$lang;\n let color, fonts;\n switch (gameId) {\n case 1:\n if (type == 1) {\n color = \"#cf0012\";\n fonts = $Type == \"cn\" || $Type == \"tw\" ? $lang[$Type].banker : \"B\";\n } else if (type == 2) {\n color = \"#1c1f89\";\n fonts = $Type == \"cn\" || $Type == \"tw\" ? $lang[$Type].player : \"P\";\n } else if (type == 3) {\n color = \"#009944\";\n fonts = $Type == \"cn\" || $Type == \"tw\" ? $lang[$Type].tie : \"T\";\n }\n break;\n case 2:\n if (type == 1) {\n color = \"#cf0012\";\n fonts = $Type == \"cn\" || $Type == \"tw\" ? $lang[$Type].dragon : \"D\";\n } else if (type == 2) {\n color = \"#1c1f89\";\n fonts = $Type == \"cn\" || $Type == \"tw\" ? $lang[$Type].tiger : \"T\";\n } else if (type == 3) {\n color = \"#009944\";\n fonts = $Type == \"cn\" || $Type == \"tw\" ? $lang[$Type].tie : \"T\";\n }\n break;\n case 6:\n fonts = type;\n if (type == 0) {\n color = \"#2e2e2e\";\n } else if (type == 1) {\n color = \"#1c1f89\";\n } else if (type == 2) {\n color = \"#009944\";\n } else if (type == 3) {\n color = \"#ffc107\";\n } else if (type == 4) {\n color = \"#cf0012\";\n }\n break;\n }\n ctb.arc(unit * (x - 0.5), radius + unit * (y - 1), unit * 0.4, 0, Math.PI * 2);\n ctb.fillStyle = color;\n ctb.fill();\n ctb.font = \"bold \" + unit * 0.54 + \"px Arial\";\n ctb.fillStyle = \"#ddd\"; // 颜色\n ctb.textAlign = \"center\";\n ctb.textBaseline = \"middle\";\n ctb.fillText(fonts, unit * (x - 0.5), radius + unit * (y - 1));\n ctb.stroke();\n var corner_xy = unit / 3.5;\n if (corners == 1) {\n corner(ctb, unit, x, y, corner_xy, \"#cf0012\");\n } else if (corners == 2) {\n corner(ctb, unit, x, y, -corner_xy, \"#1c1f89\");\n } else if (corners == 3) {\n corner(ctb, unit, x, y, corner_xy, \"#cf0012\");\n corner(ctb, unit, x, y, -corner_xy, \"#1c1f89\");\n }\n}\n//SoloPath角标\nfunction corner(ctb, unit, x, y, corner_xy, corner_color) {\n var radius = unit / 2;\n ctb.beginPath();\n ctb.lineWidth = unit * 0.02;\n ctb.strokeStyle = \"#fff\";\n ctb.arc(unit * (x - 0.5) - corner_xy, radius + unit * (y - 1) - corner_xy, unit * 0.13, 0, Math.PI * 2);\n ctb.fillStyle = corner_color;\n ctb.fill();\n ctb.stroke();\n}\n\n// 大路\nfunction BigPath(ctb, unit, start_x, x, y, type, slash, corners, billnumber) {\n ctb.beginPath();\n if (billnumber == 1) {\n ctb.lineWidth = unit * 0.12;\n var radius = unit,\n half = 0.75;\n } else {\n ctb.lineWidth = unit * 0.065;\n var radius = unit / 2,\n half = 0.5;\n }\n if (type == 2) {\n var color = \"#1c1f89\";\n } else if (type == 1) {\n var color = \"#cf0012\";\n }\n ctb.strokeStyle = color;\n ctb.arc(radius * (x - half) + start_x * unit, radius * (y - 0.5), radius * 0.38, 0, Math.PI * 2);\n ctb.closePath();\n ctb.stroke();\n if (slash != 0) {\n ctb.beginPath();\n var linewidth = unit * 0.15;\n ctb.lineWidth = radius * 0.14; //线条宽度\n ctb.lineCap = \"round\";\n ctb.strokeStyle = \"#009944\"; //线条颜色\n ctb.moveTo(radius * (x - half) + start_x * unit - linewidth, radius * (y - 0.5) + linewidth);\n ctb.lineTo(radius * (x - half) + start_x * unit + linewidth, radius * (y - 0.5) - linewidth);\n ctb.stroke();\n if (slash != 0) {\n Font_tie(ctb, slash, radius * (x - half) + start_x * unit, radius * (y - 0.5), \"bold \" + radius * 0.65 + \"px Arial\");\n }\n }\n var corner_xy = radius / 3.5;\n if (corners == 1) {\n BigPathcorner(ctb, unit, start_x, x, y, corner_xy, \"#cf0012\", billnumber);\n } else if (corners == 2) {\n BigPathcorner(ctb, unit, start_x, x, y, -corner_xy, \"#1c1f89\", billnumber);\n } else if (corners == 3) {\n BigPathcorner(ctb, unit, start_x, x, y, corner_xy, \"#cf0012\", billnumber);\n BigPathcorner(ctb, unit, start_x, x, y, -corner_xy, \"#1c1f89\", billnumber);\n }\n}\n\n//大路角标\nfunction BigPathcorner(ctb, unit, start_x, x, y, corner_xy, corner_color, billnumber) {\n if (billnumber == 1) {\n var radius = unit,\n half = 0.75,\n width = radius * 0.16;\n } else {\n var radius = unit / 2,\n half = 0.55,\n width = radius * 0.18;\n }\n ctb.beginPath();\n ctb.lineWidth = unit * 0.015;\n ctb.strokeStyle = \"#fff\";\n ctb.arc(radius * (x - half) + start_x * unit - corner_xy, radius * (y - 0.5) - corner_xy, width, 0, Math.PI * 2);\n ctb.arc(radius * (x - half) + start_x * unit - corner_xy, radius * (y - 0.5) - corner_xy, width, 0, Math.PI * 2);\n ctb.fillStyle = corner_color;\n ctb.fill();\n ctb.stroke();\n}\n\n// 大路 第一局 和\nfunction BigPathTie(billnumber, ctb, unit, cols, order) {\n if (billnumber == 1 || billnumber == 4) {\n var radius = unit,\n start_x = 0;\n } else {\n var radius = unit / 2,\n start_x = unit * cols * 0.5;\n }\n ctb.beginPath();\n ctb.lineWidth = 3; //线条宽度\n ctb.strokeStyle = \"#3EA542\"; //线条颜色\n ctb.lineCap = \"round\";\n ctb.moveTo(radius * 0.15 + start_x, radius / 2);\n ctb.lineTo(radius * 0.85 + start_x, radius / 2);\n ctb.stroke();\n Font_tie(ctb, order, radius * 0.5 + start_x, radius / 2, radius * 0.8 + \"px Arial\");\n}\n\n// 大眼路\nfunction BigeyePath(ctb, unit, start_x, x, y, type) {\n ctb.beginPath();\n ctb.lineWidth = unit * 0.06;\n var radius = unit / 4;\n if (type == 2) {\n var color = \"#1c1f89\";\n } else if (type == 1) {\n var color = \"#cf0012\";\n }\n ctb.strokeStyle = color;\n ctb.arc(radius / 2 + radius * (x - 2) + start_x * unit, unit * 3.25 + radius * (y - 1.5), unit * 0.09, 0, Math.PI * 2);\n ctb.closePath();\n ctb.stroke();\n}\n//小路\nfunction LittlePath(ctb, unit, start_x, x, y, type) {\n ctb.beginPath();\n ctb.lineWidth = 0;\n var radius = unit / 4;\n if (type == 2) {\n var color = \"#1c1f89\";\n } else if (type == 1) {\n var color = \"#cf0012\";\n }\n ctb.strokeStyle = color;\n ctb.fillStyle = color;\n ctb.arc(radius / 2 + radius * (x - 2) + start_x, unit * 3.25 + radius * (y - 1.5), radius * 0.28, 0, Math.PI * 2);\n ctb.closePath();\n ctb.stroke();\n ctb.fill();\n}\nfunction CockrochPath(ctb, unit, start_x, x, y, type) {\n var radius = unit / 4,\n linewidth = radius * 0.3;\n ctb.beginPath();\n ctb.lineCap = \"round\";\n ctb.lineWidth = radius * 0.3; //线条宽度\n if (type == 2) {\n var color = \"#1c1f89\";\n } else if (type == 1) {\n var color = \"#cf0012\";\n }\n ctb.strokeStyle = color;\n ctb.moveTo(start_x * unit + radius * (x - 1.5) - linewidth, radius / 2 + radius * (y - 1) + linewidth + 4.5 * unit);\n ctb.lineTo(start_x * unit + radius * (x - 1.5) + linewidth, radius / 2 + radius * (y - 1) - linewidth + 4.5 * unit);\n ctb.stroke();\n}\nfunction sanxingPath(ctb, unit, start_x, x, y, type, slash) {\n ctb.beginPath();\n var radius = unit / 2;\n ctb.lineWidth = radius * 0.15;\n if (type == 2) {\n var color = \"#1c1f89\";\n } else if (type == 1) {\n var color = \"#cf0012\";\n }\n ctb.strokeStyle = color;\n ctb.arc(start_x + radius * (x - 1), unit * 4.75 + radius * (y - 1), radius * 0.38, 0, Math.PI * 2);\n ctb.closePath();\n ctb.stroke();\n if (slash != 0) {\n ctb.beginPath();\n var linewidth = unit * 0.12;\n ctb.lineWidth = unit * 0.08; //线条宽度\n ctb.lineCap = \"round\";\n ctb.strokeStyle = \"#009944\"; //线条颜色\n\n ctb.moveTo(start_x + radius * (x - 1) - linewidth, unit * 4.5 + radius * (y - 0.5) + linewidth);\n ctb.lineTo(start_x + radius * (x - 1) + linewidth, unit * 4.5 + radius * (y - 0.5) - linewidth);\n ctb.stroke();\n if (slash > 0) {\n Font_tie(ctb, slash, start_x + radius * (x - 1), unit * 4.5 + radius * (y - 0.5), radius * 0.7 + \"px Arial\");\n }\n }\n}\n\n// NN\nfunction NNcanvas(gameId, ctb, unit_x, unit_y, rows, cols, roadData\n// total_num\n) {\n if (roadData && roadData != undefined) {\n var L = roadData.length;\n var new_roadData = [];\n var Tab = cols - 2;\n if (L >= 1) {\n var last_x = roadData[L - 1].show_x;\n if (last_x > Tab) {\n var cut = last_x - Tab;\n roadData.forEach(function (v) {\n if (v.show_x > cut) {\n new_roadData.push(v);\n }\n });\n } else {\n new_roadData = roadData;\n cut = 0;\n }\n } else {\n new_roadData = roadData;\n cut = 0;\n }\n roadData.forEach(function (v) {\n NNwaybill(gameId, ctb, unit_x, unit_y, v.show_x - cut, v.show_y, v.type, v.result, v.is_win);\n });\n }\n NNtitle(ctb, unit_x, unit_y, unit_y);\n NNline(ctb, unit_x, unit_y, rows, cols);\n}\nfunction NNwaybill(gameId, ctb, unit_x, unit_y, x, y, type, result, win) {\n var fonts = \"\",\n color = \"#000\";\n var fontsize = unit_x * 0.28;\n if ($store.state.config.$Type == \"cn\") {\n if (result == 0) {\n fonts = \"无牛\";\n } else if (result == 1) {\n fonts = \"牛1\";\n } else if (result == 2) {\n fonts = \"牛2\";\n } else if (result == 3) {\n fonts = \"牛3\";\n } else if (result == 4) {\n fonts = \"牛4\";\n } else if (result == 5) {\n fonts = \"牛5\";\n } else if (result == 6) {\n fonts = \"牛6\";\n } else if (result == 7) {\n fonts = \"牛7\";\n } else if (result == 8) {\n fonts = \"牛8\";\n } else if (result == 9) {\n fonts = \"牛9\";\n } else if (result == 10) {\n fonts = \"牛牛\";\n } else if (result == 11 && gameId == 4) {\n fonts = \"五公\";\n } else if (result == 11 && gameId == 5) {\n fonts = \"豹子\";\n } else if (result == 12) {\n fonts = \"同花顺\";\n } else if (result == 13) {\n fonts = \"皇家同花顺\";\n }\n } else if ($store.state.config.$Type == \"tw\") {\n if (result == 0) {\n fonts = \"無牛\";\n } else if (result == 1) {\n fonts = \"牛1\";\n } else if (result == 2) {\n fonts = \"牛2\";\n } else if (result == 3) {\n fonts = \"牛3\";\n } else if (result == 4) {\n fonts = \"牛4\";\n } else if (result == 5) {\n fonts = \"牛5\";\n } else if (result == 6) {\n fonts = \"牛6\";\n } else if (result == 7) {\n fonts = \"牛7\";\n } else if (result == 8) {\n fonts = \"牛8\";\n } else if (result == 9) {\n fonts = \"牛9\";\n } else if (result == 10) {\n fonts = \"牛牛\";\n } else if (result == 11 && gameId == 4) {\n fonts = \"五公\";\n } else if (result == 11 && gameId == 5) {\n fonts = \"豹子\";\n } else if (result == 12) {\n fonts = \"同花順\";\n } else if (result == 13) {\n fonts = \"皇家同花順\";\n }\n } else {\n if (result == 0) {\n fonts = \"No Bull\";\n } else if (result == 1) {\n fonts = \"B 1\";\n } else if (result == 2) {\n fonts = \"B 2\";\n } else if (result == 3) {\n fonts = \"B 3\";\n } else if (result == 4) {\n fonts = \"B 4\";\n } else if (result == 5) {\n fonts = \"B 5\";\n } else if (result == 6) {\n fonts = \"B 6\";\n } else if (result == 7) {\n fonts = \"B 7\";\n } else if (result == 8) {\n fonts = \"B 8\";\n } else if (result == 9) {\n fonts = \"B 9\";\n } else if (result == 10) {\n fonts = \"Super B \";\n } else if (result == 11 && gameId == 4) {\n fonts = \"Five P \";\n } else if (result == 11 && gameId == 5) {\n fonts = \"Leopard\";\n } else if (result == 12) {\n fonts = \"Flush\";\n } else if (result == 13) {\n fonts = \"SuperFlush\";\n }\n fontsize = unit_x * 0.22;\n }\n if (type == 1) {\n color = \"#ce2837\";\n if (win == 1) {\n ctb.fillStyle = color;\n ctb.fillRect(unit_x * x, unit_y * (y - 0.3), unit_x, unit_y * 0.3);\n Font_tie(ctb, \"WIN\", unit_x * (0.5 + x), unit_y * (y - 0.14), \"bold \" + unit_x * 0.15 + \"px Arial\", \"#fff\");\n }\n } else if (type == 2) {\n color = \"#1d4999 \";\n if (win == 1) {\n ctb.fillStyle = color;\n ctb.fillRect(unit_x * x, unit_y * (y - 0.3), unit_x, unit_y * 0.3);\n Font_tie(ctb, \"WIN\", unit_x * (0.5 + x), unit_y * (y - 0.14), \"bold \" + unit_x * 0.15 + \"px Arial\", \"#fff\");\n }\n }\n Font_tie(ctb, fonts, unit_x * (0.5 + x), unit_y * (y - 0.5), \"bold \" + fontsize + \"px Arial\", color);\n}\n\n// 画表头\nfunction NNtitle(ctb, unit_x, unit_y) {\n for (var i = 0; i <= 4; i++) {\n var grd = ctb.createLinearGradient(0, unit_x, 0, 0);\n var fontsize = unit_x * 0.32;\n if (i == 0) {\n if ($store.state.config.$Type == \"cn\") {\n var color = \"#fff\",\n font = \"庄家\";\n } else if ($store.state.config.$Type == \"tw\") {\n var color = \"#fff\",\n font = \"莊家\";\n } else if ($store.state.config.$Type == \"tl\") {\n var color = \"#fff\",\n font = \"เจ้ามือ\";\n } else {\n var color = \"#fff\",\n font = \"Banker\",\n fontsize = unit_x * 0.25;\n }\n grd.addColorStop(0, \"#ae0b1a\");\n grd.addColorStop(0.5, \"#ff0017\");\n grd.addColorStop(1, \"#ae0b1a\");\n } else {\n if ($store.state.config.$Type == \"cn\") {\n var color = \"#fff\",\n font = \"闲\" + i;\n } else if ($store.state.config.$Type == \"tw\") {\n var color = \"#fff\",\n font = \"閒\" + i;\n } else if ($store.state.config.$Type == \"yn\") {\n var color = \"#fff\",\n font = \"Palyer\" + i,\n fontsize = unit_x * 0.25;\n } else if ($store.state.config.$Type == \"tl\") {\n var color = \"#fff\",\n font = \"ผู้เล่น\" + i,\n fontsize = unit_x * 0.25;\n } else {\n var color = \"#fff\",\n font = \"Palyer\" + i,\n fontsize = unit_x * 0.25;\n }\n grd.addColorStop(0, \"#0321a2\");\n grd.addColorStop(0.5, \"#002ffb\");\n grd.addColorStop(1, \"#092679\");\n }\n ctb.fillStyle = grd;\n ctb.fillRect(0, i * unit_y, unit_x, unit_y);\n Font_tie(ctb, font, unit_x / 2, i * unit_y + unit_y / 2, \"bold \" + fontsize + \"px Arial\", color);\n }\n}\n\n// NN画线条\nfunction NNline(ctb, unit_x, unit_y, rows, cols) {\n const CanvasWidht = unit_x * cols;\n const CanvasHeight = unit_y * rows;\n ctb.lineWidth = 1; //线条宽度\n ctb.strokeStyle = \"#deded9\"; //线条颜色\n ctb.beginPath();\n for (let i = 0; i <= rows; i++) {\n ctb.moveTo(0, unit_y * i);\n ctb.lineTo(CanvasWidht, unit_y * i);\n }\n for (let j = 1; j <= cols; j++) {\n ctb.moveTo(unit_x * j, 0);\n ctb.lineTo(unit_x * j, CanvasHeight);\n }\n ctb.closePath();\n ctb.stroke();\n}\n\n// 色碟\nfunction ToningWaybill(ctb, unit, rows, cols, path, gameId, billnumber, showBigWay) {\n ctb.clearRect(0, 0, unit * 100, unit * rows);\n const showRoad = path.showRoad;\n const bigRoad = path.bigRoad;\n const bigRoadBS = path.bigRoadBS;\n const bigRoadSP = path.bigRoadSP;\n let roadType = null;\n Drawline(ctb, unit, rows, cols, true);\n if (path) {\n if (billnumber != 2) {\n if (showRoad && showRoad.length > 0 && !showBigWay && billnumber != 1) {\n roadType = \"showWay\";\n cutRoad(billnumber, roadType, ctb, unit, showRoad, cols, gameId);\n }\n if (bigRoad && bigRoad.length > 0 && showBigWay) {\n roadType = \"toningBigWay\";\n cutRoad(billnumber, roadType, ctb, unit, bigRoad, cols, gameId);\n }\n }\n if (billnumber != 1) {\n if (bigRoadSP && bigRoadSP.length > 0) {\n roadType = \"bigRoadSP\";\n cutRoad(billnumber, roadType, ctb, unit, bigRoadSP, cols, gameId);\n }\n if (bigRoadBS && bigRoadBS.length > 0) {\n roadType = \"bigRoadBS\";\n cutRoad(billnumber, roadType, ctb, unit, bigRoadBS, cols, gameId);\n }\n }\n }\n}\n\n// 色碟单双路\nfunction ToningBigPath(ctb, unit, start_x, x, y, type, slash, corners, billnumber, roadType) {\n const $Type = $store.state.config.$Type;\n const $lang = $store.state.config.$lang;\n ctb.beginPath();\n let radius = unit,\n color,\n font;\n if (roadType == \"toningBigWay\") {\n font = type;\n if (type == 0) {\n color = \"#2e2e2e\";\n } else if (type == 1) {\n color = \"#1c1f89\";\n } else if (type == 2) {\n color = \"#009944\";\n } else if (type == 3) {\n color = \"#ffc107\";\n } else if (type == 4) {\n color = \"#cf0012\";\n }\n } else if (roadType == \"bigRoadBS\") {\n if (type == 1) {\n color = \"#cf0012\";\n font = $Type == \"cn\" || $Type == \"tw\" ? $lang[$Type].big : \"B\";\n } else if (type == 2) {\n color = \"#1c1f89\";\n font = $Type == \"cn\" || $Type == \"tw\" ? $lang[$Type].small : \"S\";\n }\n } else if (roadType == \"bigRoadSP\") {\n if (type == 1) {\n color = \"#cf0012\";\n font = $Type == \"cn\" || $Type == \"tw\" ? $lang[$Type].even : \"E\";\n } else if (type == 2) {\n color = \"#1c1f89\";\n font = $Type == \"cn\" || $Type == \"tw\" ? $lang[$Type].odd : \"O\";\n }\n }\n ctb.arc(radius * (x - 0.75) + start_x * radius, radius * (y - 0.5), radius * 0.38, 0, Math.PI * 2);\n ctb.fillStyle = color;\n ctb.fill();\n ctb.font = \"bold \" + unit * 0.54 + \"px Arial\";\n ctb.fillStyle = \"#fff\"; // 颜色\n ctb.textAlign = \"center\";\n ctb.textBaseline = \"middle\";\n ctb.fillText(font, radius * (x - 0.75) + start_x * unit, radius * (y - 0.5));\n ctb.closePath();\n ctb.stroke();\n const corner_xy = radius / 3.5;\n if (corners == 1) {\n BigPathcorner(ctb, unit, start_x, x, y, corner_xy, \"#cf0012\", billnumber);\n } else if (corners == 2) {\n BigPathcorner(ctb, unit, start_x, x, y, -corner_xy, \"#1c1f89\", billnumber);\n } else if (corners == 3) {\n BigPathcorner(ctb, unit, start_x, x, y, corner_xy, \"#cf0012\", billnumber);\n BigPathcorner(ctb, unit, start_x, x, y, -corner_xy, \"#1c1f89\", billnumber);\n }\n if (slash && roadType == \"bigRoadBS\") {\n corner(ctb, unit, start_x + x - 0.25, y, -corner_xy, \"#009944\");\n }\n}\n\n// 骰宝\nconst diceSpriteSrc = require(`../images/dice/sprite.png`);\nconst en_diceSpriteSrc = require(`../images/dice/en_sprite.png`);\nfunction DiceWaybill(ctb, unit, rows, cols, data, billnumber) {\n const $Type = $store.state.config.$Type;\n ctb.clearRect(0, 0, unit * (cols + 1), unit * (rows + 1));\n const sprite = new Image();\n sprite.crossOrigin = \"anonymous\";\n sprite.src = $Type == \"cn\" || $Type == \"tw\" ? diceSpriteSrc : en_diceSpriteSrc;\n let diceWidth = 0,\n diceHeight = 0,\n spriteArry = [];\n sprite.onload = () => {\n diceWidth = sprite.width / 2;\n diceHeight = sprite.height / 6;\n spriteArry = {\n dice_1: [0, 0],\n dice_2: [0, 1],\n dice_3: [0, 2],\n dice_odd: [0, 3],\n dice_even: [0, 4],\n dice_triplet: [0, 5],\n dice_4: [1, 0],\n dice_5: [1, 1],\n dice_6: [1, 2],\n dice_small: [1, 3],\n dice_big: [1, 4],\n dice_num: [1, 5]\n };\n if (data) {\n inputData(data.showRoad, \"showRoad\");\n if (billnumber == 3) {\n inputData(data.bigRoadBS, \"bigRoadBS\");\n inputData(data.bigRoadSP, \"bigRoadSP\");\n }\n }\n drawLine();\n };\n function inputData(data, type) {\n // 数据截取\n let newData = [];\n const L = data.length;\n let Tab = cols - 1;\n if (billnumber == 3) {\n Tab = parseInt(cols / 3) - 1;\n }\n let cut = 0;\n if (L <= Tab) {\n newData = data;\n } else {\n if (type == \"showRoad\") {\n newData = data.slice(L - Tab, L);\n } else {\n newData = data.filter(v => v.show_x > data[L - 1].show_x - Tab);\n if (newData.length > 0) {\n cut = newData[0].show_x;\n }\n }\n }\n // 绘制图标\n if (type == \"showRoad\") {\n newData.forEach((v, i) => {\n const totle = v[0] + v[1] + v[2];\n drawIcon(i, 0, \"icon\", v[0]);\n drawIcon(i, 1, \"icon\", v[1]);\n drawIcon(i, 2, \"icon\", v[2]);\n drawIcon(i, 3, \"num\", totle);\n if (v[0] == v[1] && v[1] == v[2]) {\n drawIcon(i, 4, \"icon\", \"triplet\");\n drawIcon(i, 5, \"icon\", \"triplet\");\n } else {\n if (totle >= 11) {\n drawIcon(i, 4, \"icon\", \"big\");\n } else {\n drawIcon(i, 4, \"icon\", \"small\");\n }\n if (totle % 2 == 0) {\n drawIcon(i, 5, \"icon\", \"even\");\n } else {\n drawIcon(i, 5, \"icon\", \"odd\");\n }\n }\n });\n } else if (type == \"bigRoadBS\") {\n newData.forEach(v => {\n const text = v.result == 1 ? \"big\" : v.result == 2 ? \"small\" : \"triplet\";\n drawIcon(v.show_x - cut + Tab + 1, v.show_y - 1, \"icon\", text);\n });\n } else if (type == \"bigRoadSP\") {\n newData.forEach(v => {\n const text = v.result == 1 ? \"even\" : v.result == 2 ? \"odd\" : \"triplet\";\n drawIcon(v.show_x - cut + Tab * 2 + 2, v.show_y - 1, \"icon\", text);\n });\n }\n }\n function drawIcon(x, y, type, text) {\n if (type == \"icon\") {\n const position = spriteArry[`dice_${text}`];\n ctb.drawImage(sprite, position[0] * diceWidth, position[1] * diceHeight, diceWidth, diceHeight, unit * x + unit * 0.05, unit * y + unit / diceWidth * diceHeight * 0.05, unit * 0.9, unit / diceWidth * diceHeight * 0.9);\n } else if (type == \"num\") {\n const position = spriteArry[`dice_num`];\n ctb.drawImage(sprite, position[0] * diceWidth, position[1] * diceHeight, diceWidth, diceHeight, unit * x + unit * 0.05, unit * y + unit / diceWidth * diceHeight * 0.05, unit * 0.9, unit / diceWidth * diceHeight * 0.9);\n ctb.font = `bold ${unit * 0.58}px Arial`;\n ctb.fillStyle = \"#fff\";\n ctb.textAlign = \"center\";\n ctb.textBaseline = \"middle\";\n ctb.fillText(text, unit * (x + 0.45), unit * (y + 0.55));\n }\n // 大小单双路\n if (billnumber == 3 && type == \"icon\") {\n const position = spriteArry[`dice_${text}`];\n ctb.drawImage(sprite, position[0] * diceWidth, position[1] * diceHeight, diceWidth, diceHeight, unit * x, unit * y, unit * 0.9, unit / diceWidth * diceHeight * 0.9);\n }\n }\n function drawLine() {\n const CanvasWidht = unit * cols;\n const CanvasHeight = unit * rows;\n ctb.lineWidth = 1;\n ctb.strokeStyle = \"#deded9\";\n ctb.beginPath();\n for (let i = 0; i <= rows; i++) {\n ctb.moveTo(0, unit * i);\n ctb.lineTo(CanvasWidht, unit * i);\n }\n for (let j = 0; j <= cols; j++) {\n ctb.moveTo(unit * j, 0);\n ctb.lineTo(unit * j, CanvasHeight);\n }\n ctb.closePath();\n ctb.stroke();\n }\n}\n\n// 轮盘\nconst rouletteSpriteSrc = require(`../images/roulette/sprite.png`);\nfunction RouletteWaybill(ctb, unit, rows, cols, data, billnumber) {\n const $Type = $store.state.config.$Type;\n const $lang = $store.state.config.$lang;\n ctb.clearRect(0, 0, unit * (cols + 1), unit * (rows + 1));\n const sprite = new Image();\n sprite.crossOrigin = \"anonymous\";\n sprite.src = rouletteSpriteSrc;\n let W = 0,\n H = 0,\n spriteArry = [];\n sprite.onload = () => {\n W = sprite.width / 2;\n H = sprite.height / 3;\n spriteArry = {\n blue: [0, 0],\n red: [0, 1],\n green: [0, 2],\n black: [1, 2]\n };\n if (data) {\n inputData(data.showRoad, \"showRoad\");\n // console.log(data)\n if (billnumber == 3) {\n // console.log(data.bigRoadBS)\n inputData(data.bigRoadBS, \"bigRoadBS\");\n inputData(data.bigRoadSP, \"bigRoadSP\");\n }\n }\n drawLine();\n };\n function inputData(data, type) {\n // 数据截取\n let newData = [];\n const L = data.length;\n let Tab = cols - 1;\n if (billnumber == 3) {\n Tab = parseInt(cols / 3) - 1;\n }\n let cut = 0;\n if (L <= Tab) {\n newData = data;\n } else {\n newData = data.filter(v => v.show_x > data[L - 1].show_x - Tab);\n if (newData.length > 0) {\n cut = newData[0].show_x;\n }\n }\n // 绘制图标\n if (type == \"showRoad\") {\n newData.forEach((v, i) => {\n drawIcon(type, v.show_x - cut - 1, v.show_y - 1, v.result);\n });\n } else if (type == \"bigRoadBS\") {\n // console.log(newData)\n newData.forEach(v => {\n drawIcon(type, v.show_x - cut + Tab + 1, v.show_y - 1, v.result);\n });\n } else if (type == \"bigRoadSP\") {\n newData.forEach(v => {\n drawIcon(type, v.show_x - cut + Tab * 2 + 2, v.show_y - 1, v.result);\n });\n }\n }\n function drawIcon(type, x, y, text) {\n let position = [0, 0];\n if (type == \"showRoad\") {\n const isBlack = [\"2\", \"4\", \"6\", \"8\", \"10\", \"11\", \"13\", \"15\", \"17\", \"20\", \"22\", \"24\", \"26\", \"28\", \"29\", \"31\", \"33\", \"35\"].includes(text);\n const isRed = [\"1\", \"3\", \"5\", \"7\", \"9\", \"12\", \"14\", \"16\", \"18\", \"19\", \"21\", \"23\", \"25\", \"27\", \"30\", \"32\", \"34\", \"36\"].includes(text);\n if (text == 0) {\n position = spriteArry.green;\n } else if (isBlack) {\n position = spriteArry.black;\n } else if (isRed) {\n position = spriteArry.red;\n }\n } else if (type == \"bigRoadBS\") {\n if (text == 1) {\n text = $Type == \"cn\" || $Type == \"tw\" ? $lang[$Type].big : \"B\";\n position = spriteArry.red;\n } else if (text == 2) {\n text = $Type == \"cn\" || $Type == \"tw\" ? $lang[$Type].small : \"S\";\n position = spriteArry.blue;\n } else if (text == 3) {\n text = $Type == \"cn\" || $Type == \"tw\" ? $lang[$Type].zero : \"Z\";\n position = spriteArry.green;\n }\n } else if (type == \"bigRoadSP\") {\n if (text == 1) {\n text = $Type == \"cn\" || $Type == \"tw\" ? $lang[$Type].even : \"E\";\n position = spriteArry.red;\n } else if (text == 2) {\n text = $Type == \"cn\" || $Type == \"tw\" ? $lang[$Type].odd : \"O\";\n position = spriteArry.blue;\n } else if (text == 3) {\n text = $Type == \"cn\" || $Type == \"tw\" ? $lang[$Type].zero : \"Z\";\n position = spriteArry.green;\n }\n }\n ctb.drawImage(sprite, position[0] * W, position[1] * H, W, H, unit * x + unit * 0.05, unit * y + unit / W * H * 0.05, unit * 0.9, unit / W * H * 0.9);\n ctb.font = `bold ${unit * 0.58}px Arial`;\n ctb.fillStyle = \"#fff\";\n ctb.textAlign = \"center\";\n ctb.textBaseline = \"middle\";\n ctb.fillText(text, unit * (x + 0.5), unit * (y + 0.55));\n }\n function drawLine() {\n const CanvasWidht = unit * cols;\n const CanvasHeight = unit * rows;\n ctb.lineWidth = 1;\n ctb.strokeStyle = \"#deded9\";\n ctb.beginPath();\n for (let i = 0; i <= rows; i++) {\n ctb.moveTo(0, unit * i);\n ctb.lineTo(CanvasWidht, unit * i);\n }\n for (let j = 0; j <= cols; j++) {\n ctb.moveTo(unit * j, 0);\n ctb.lineTo(unit * j, CanvasHeight);\n }\n ctb.closePath();\n ctb.stroke();\n }\n}\nexport { autoask, waybillAsk, waybillConfig, halfwayConfig, Waybill, WaybillbigRoad, NNcanvas, ToningWaybill, DiceWaybill, RouletteWaybill, HalfWay };","map":{"version":3,"names":["$store","askInterval","autoask","newData","askObg","BbigEyeRoadisshow","BbigEyeRoadcolor","Bpathwayisshow","Bpathwaycolor","Broachisshow","Broachcolor","PbigEyeRoadisshow","PbigEyeRoadcolor","Ppathwayisshow","Ppathwaycolor","Proachisshow","Proachcolor","ludan_banker","waybill","bigEyeRoad","pathway","roach","length","result","ludan_player","waybillAsk","canvas","type","data","game_id","clearInterval","ask","ludan","newdata","olddata","nshowRoad","showRoad","nbigEyeRoad","nbigRoad","bigRoad","npathway","nroach","nsanxing","sanxingRoad","oshowRoad","obigEyeRoad","obigRoad","opathway","oroach","osanxing","n_s_last_x","show_x","n_e_last_x","n_b_last_x","n_p_last_x","n_r_last_x","n_sx_last_x","o_s_last_x","o_e_last_x","o_b_last_x","o_p_last_x","o_r_last_x","o_sx_last_x","askroad","askshowroad","askbigRoad","askbigEyeRoad","askpathway","askroach","asksanxing","time","setInterval","num","waybillConfig","getPixelRatio","context","backingStore","backingStorePixelRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","window","devicePixelRatio","ctb","getContext","dpr","height","clientHeight","width","clientWidth","rows","unit","cols","path","unit_y","unit_x","parseInt","setAttribute","Waybill","NNcanvas","toningShowBigWay","state","config","ToningWaybill","DiceWaybill","RouletteWaybill","halfwayConfig","HalfWay","gameId","multiple","clearRect","multipleDrawline","billnumber","Drawline","roadType","cutRoad","show_y","BigPathTie","tie_num","WaybillbigRoad","halfwayDrawline","halfcutRoad","roadData","L","new_roadData","Tab","start_x","last_x","cut","forEach","v","push","CockrochPath","LittlePath","BigeyePath","SoloPath","pair","BigPath","sanxingPath","ToningBigPath","CanvasWidht","CanvasHeight","lineWidth","strokeStyle","beginPath","moveTo","lineTo","i","j","l","k","Math","floor","closePath","stroke","Font_tie","Font_x","Font_y","fontsize","color","undefined","font","textAlign","textBaseline","fillStyle","fillText","x","y","corners","radius","$Type","$lang","fonts","banker","player","tie","dragon","tiger","arc","PI","fill","corner_xy","corner","corner_color","slash","half","linewidth","lineCap","BigPathcorner","order","NNwaybill","is_win","NNtitle","NNline","win","fillRect","grd","createLinearGradient","addColorStop","showBigWay","bigRoadBS","bigRoadSP","big","small","even","odd","diceSpriteSrc","require","en_diceSpriteSrc","sprite","Image","crossOrigin","src","diceWidth","diceHeight","spriteArry","onload","dice_1","dice_2","dice_3","dice_odd","dice_even","dice_triplet","dice_4","dice_5","dice_6","dice_small","dice_big","dice_num","inputData","drawLine","slice","filter","totle","drawIcon","text","position","drawImage","rouletteSpriteSrc","W","H","blue","red","green","black","isBlack","includes","isRed","zero"],"sources":["/Users/li/Desktop/work/work2/OG/GamePortrait/src/assets/js/waybill.js"],"sourcesContent":["/* eslint-disable */\nimport $store from \"@/store\"\n\nvar askInterval = null\n\n// 自动问路\nfunction autoask(newData) {\n const askObg = {\n // 自动问路\n BbigEyeRoadisshow: false,\n BbigEyeRoadcolor: \"\",\n Bpathwayisshow: false,\n Bpathwaycolor: \"\",\n Broachisshow: false,\n Broachcolor: \"\",\n // 闲问路\n PbigEyeRoadisshow: false,\n PbigEyeRoadcolor: \"\",\n Ppathwayisshow: false,\n Ppathwaycolor: \"\",\n Proachisshow: false,\n Proachcolor: \"\"\n }\n // 庄问路\n if (newData.ludan_banker) {\n if (newData.ludan_banker.waybill) {\n const bigEyeRoad = newData.ludan_banker.waybill.bigEyeRoad\n const pathway = newData.ludan_banker.waybill.pathway\n const roach = newData.ludan_banker.waybill.roach\n if (bigEyeRoad[0]) {\n if (bigEyeRoad[bigEyeRoad.length - 1].result == 1) {\n askObg.BbigEyeRoadcolor = \"red\"\n } else {\n askObg.BbigEyeRoadcolor = \"blue\"\n }\n askObg.BbigEyeRoadisshow = true\n } else {\n askObg.BbigEyeRoadisshow = false\n }\n if (pathway[0]) {\n if (pathway[pathway.length - 1].result == 1) {\n askObg.Bpathwaycolor = \"red\"\n } else {\n askObg.Bpathwaycolor = \"blue\"\n }\n askObg.Bpathwayisshow = true\n } else {\n askObg.Bpathwayisshow = false\n }\n if (roach[0]) {\n if (roach[roach.length - 1].result == 1) {\n askObg.Broachcolor = \"red\"\n } else {\n askObg.Broachcolor = \"blue\"\n }\n askObg.Broachisshow = true\n } else {\n askObg.Broachisshow = false\n }\n }\n // 闲问路\n if (newData.ludan_player.waybill) {\n const bigEyeRoad = newData.ludan_player.waybill.bigEyeRoad\n const pathway = newData.ludan_player.waybill.pathway\n const roach = newData.ludan_player.waybill.roach\n if (bigEyeRoad[0]) {\n if (bigEyeRoad[bigEyeRoad.length - 1].result == 1) {\n askObg.PbigEyeRoadcolor = \"red\"\n } else {\n askObg.PbigEyeRoadcolor = \"blue\"\n }\n askObg.PbigEyeRoadisshow = true\n } else {\n askObg.PbigEyeRoadisshow = false\n }\n if (pathway[0]) {\n if (pathway[pathway.length - 1].result == 1) {\n askObg.Ppathwaycolor = \"red\"\n } else {\n askObg.Ppathwaycolor = \"blue\"\n }\n askObg.Ppathwayisshow = true\n } else {\n askObg.Ppathwayisshow = false\n }\n if (roach[0]) {\n if (roach[roach.length - 1].result == 1) {\n askObg.Proachcolor = \"red\"\n } else {\n askObg.Proachcolor = \"blue\"\n }\n askObg.Proachisshow = true\n } else {\n askObg.Proachisshow = false\n }\n }\n }\n return askObg\n}\n// 问路\nfunction waybillAsk(canvas, type, data, game_id) {\n if (askInterval != null) {\n clearInterval(askInterval)\n }\n if (type == \"banker\") {\n if (data.ludan_banker && data.ludan_banker.waybill) {\n ask(canvas, data.ludan_banker, data.ludan, game_id)\n }\n } else if (type == \"palyer\") {\n if (data.ludan_player && data.ludan_player.waybill) {\n ask(canvas, data.ludan_player, data.ludan, game_id)\n }\n }\n}\nfunction ask(canvas, newdata, olddata, game_id) {\n const nshowRoad = newdata.waybill.showRoad || []\n const nbigEyeRoad = newdata.waybill.bigEyeRoad || []\n const nbigRoad = newdata.waybill.bigRoad || []\n const npathway = newdata.waybill.pathway || []\n const nroach = newdata.waybill.roach || []\n const nsanxing = newdata.waybill.sanxingRoad || []\n const oshowRoad = olddata.waybill.showRoad || []\n const obigEyeRoad = olddata.waybill.bigEyeRoad || []\n const obigRoad = olddata.waybill.bigRoad || []\n const opathway = olddata.waybill.pathway || []\n const oroach = olddata.waybill.roach || []\n const osanxing = olddata.waybill.sanxingRoad || []\n if (nshowRoad.length > 0) {\n var n_s_last_x = nshowRoad[nshowRoad.length - 1].show_x\n } else {\n var n_s_last_x = 0\n }\n if (nbigEyeRoad.length > 0) {\n var n_e_last_x = nbigEyeRoad[nbigEyeRoad.length - 1].show_x\n } else {\n var n_e_last_x = 0\n }\n if (nbigRoad.length > 0) {\n var n_b_last_x = nbigRoad[nbigRoad.length - 1].show_x\n } else {\n var n_b_last_x = 0\n }\n if (npathway.length > 0) {\n var n_p_last_x = npathway[npathway.length - 1].show_x\n } else {\n var n_p_last_x = 0\n }\n if (nroach.length > 0) {\n var n_r_last_x = nroach[nroach.length - 1].show_x\n } else {\n var n_r_last_x = 0\n }\n if (nsanxing.length > 0) {\n var n_sx_last_x = nsanxing[nsanxing.length - 1].show_x\n } else {\n var n_sx_last_x = 0\n }\n if (oshowRoad.length > 0) {\n var o_s_last_x = oshowRoad[oshowRoad.length - 1].show_x\n } else {\n var o_s_last_x = 0\n }\n if (obigEyeRoad.length > 0) {\n var o_e_last_x = obigEyeRoad[obigEyeRoad.length - 1].show_x\n } else {\n var o_e_last_x = 0\n }\n if (obigRoad.length > 0) {\n var o_b_last_x = obigRoad[obigRoad.length - 1].show_x\n } else {\n var o_b_last_x = 0\n }\n if (opathway.length > 0) {\n var o_p_last_x = opathway[opathway.length - 1].show_x\n } else {\n var o_p_last_x = 0\n }\n if (oroach.length > 0) {\n var o_r_last_x = oroach[oroach.length - 1].show_x\n } else {\n var o_r_last_x = 0\n }\n if (osanxing.length > 0) {\n var o_sx_last_x = osanxing[osanxing.length - 1].show_x\n } else {\n var o_sx_last_x = 0\n }\n var askroad = {\n askshowroad: false,\n askbigRoad: false,\n askbigEyeRoad: false,\n askpathway: false,\n askroach: false\n }\n if (n_s_last_x > o_s_last_x) {\n askroad.askshowroad = true\n } else {\n askroad.askshowroad = false\n }\n if (n_e_last_x > o_e_last_x) {\n askroad.askbigEyeRoad = true\n } else {\n askroad.askbigEyeRoad = false\n }\n if (n_b_last_x > o_b_last_x) {\n askroad.askbigRoad = true\n } else {\n askroad.askbigRoad = false\n }\n if (n_p_last_x > o_p_last_x) {\n askroad.askpathway = true\n } else {\n askroad.askpathway = false\n }\n if (n_r_last_x > o_r_last_x) {\n askroad.askroach = true\n } else {\n askroad.askroach = false\n }\n if (n_sx_last_x > o_sx_last_x) {\n askroad.asksanxing = true\n } else {\n askroad.asksanxing = false\n }\n var time = 8\n askInterval = setInterval(function () {\n time--\n var num = time % 2\n if (time < 0) {\n clearInterval(askInterval)\n } else {\n if (num == 1) {\n waybillConfig(canvas, newdata, game_id, true, askroad)\n // halfwayConfig(newdata, true, askroad)\n } else {\n waybillConfig(canvas, olddata, game_id, true)\n // halfwayConfig(canvas, olddata, true)\n }\n }\n }, 200)\n}\n// 全路\nfunction waybillConfig(canvas, data, game_id, ask, askroad) {\n // console.log(data)\n var getPixelRatio = (context) => {\n var backingStore =\n context.backingStorePixelRatio ||\n context.webkitBackingStorePixelRatio ||\n context.mozBackingStorePixelRatio ||\n context.msBackingStorePixelRatio ||\n context.oBackingStorePixelRatio ||\n context.backingStorePixelRatio ||\n 1\n return (window.devicePixelRatio || 1) / backingStore\n }\n\n const ctb = canvas.getContext(\"2d\"),\n dpr = getPixelRatio(ctb),\n height = canvas.clientHeight,\n width = canvas.clientWidth\n let rows, unit, cols, path, unit_y, unit_x\n rows = 6\n unit = parseInt(height / rows) * dpr\n cols = parseInt(width / (unit / dpr))\n path = false\n if (cols % 2 != 0) {\n cols = cols + 1\n }\n if (game_id == 1 || game_id == 2) {\n if (ask != true) {\n if (data && data.ludan && data.ludan.waybill) {\n path = data.ludan.waybill\n }\n } else {\n if (data.waybill) {\n path = data.waybill\n }\n }\n canvas.setAttribute(\"width\", unit * cols)\n canvas.setAttribute(\"height\", unit * rows)\n Waybill(ctb, unit, rows, cols, path, game_id, ask, askroad)\n } else if (game_id == 4 || game_id == 5) {\n rows = 4\n unit_y = (height / rows) * dpr\n unit_x = unit_y * 1.05\n cols = parseInt(width / (unit_x / dpr))\n canvas.setAttribute(\"width\", unit_x * cols)\n canvas.setAttribute(\"height\", unit_y * rows)\n if (data.ludan && data.ludan.waybill) {\n path = data.ludan.waybill\n }\n NNcanvas(game_id, ctb, unit_x, unit_y, rows, cols, path)\n } else if (game_id == 6) {\n canvas.setAttribute(\"width\", unit * cols)\n canvas.setAttribute(\"height\", unit * rows)\n if (data && data.ludan && data.ludan.waybill) {\n path = data.ludan.waybill\n }\n const toningShowBigWay = $store.state.config.toningShowBigWay\n ToningWaybill(\n ctb,\n unit,\n rows,\n cols,\n path,\n data.game_id,\n 3,\n toningShowBigWay\n )\n } else if (game_id == 7) {\n canvas.setAttribute(\"width\", unit * cols)\n canvas.setAttribute(\"height\", unit * rows)\n if (data && data.ludan && data.ludan.waybill) {\n path = data.ludan.waybill\n }\n DiceWaybill(ctb, unit, rows, cols, path, 3)\n } else if (game_id == 8) {\n canvas.setAttribute(\"width\", unit * cols)\n canvas.setAttribute(\"height\", unit * rows)\n if (data && data.ludan && data.ludan.waybill) {\n path = data.ludan.waybill\n }\n RouletteWaybill(ctb, unit, rows, cols, path, 3)\n }\n}\n// 半路\nfunction halfwayConfig(canvas, data, ask, askroad) {\n var getPixelRatio = (context) => {\n var backingStore =\n context.backingStorePixelRatio ||\n context.webkitBackingStorePixelRatio ||\n context.mozBackingStorePixelRatio ||\n context.msBackingStorePixelRatio ||\n context.oBackingStorePixelRatio ||\n context.backingStorePixelRatio ||\n 1\n return (window.devicePixelRatio || 1) / backingStore\n }\n const ctb = canvas.getContext(\"2d\"),\n dpr = getPixelRatio(ctb),\n height = canvas.clientHeight,\n width = canvas.clientWidth,\n rows = 12,\n unit = parseInt(height / rows) * dpr,\n cols = parseInt(width / (unit / dpr)),\n game_id = data.game_id\n let path = false\n if (ask != true) {\n if (data.ludan.waybill) {\n path = data.ludan.waybill\n }\n } else {\n if (data.waybill) {\n path = data.waybill\n }\n }\n canvas.setAttribute(\"width\", unit * cols)\n canvas.setAttribute(\"height\", unit * rows)\n HalfWay(ctb, unit, rows, cols, path, game_id, ask, askroad)\n}\n\nfunction Waybill(ctb, unit, rows, cols, path, gameId, ask, askroad, multiple) {\n var ask = ask || false\n var askroad = askroad || {\n askshowroad: false,\n askbigRoad: false,\n askbigEyeRoad: false,\n askpathway: false,\n askroach: false,\n asksanxing: false\n }\n ctb.clearRect(0, 0, unit * 100, unit * rows)\n var showRoad = path.showRoad\n var bigRoad = path.bigRoad\n var bigEyeRoad = path.bigEyeRoad\n var pathway = path.pathway\n var roach = path.roach\n var sanxingRoad = path.sanxingRoad\n if (multiple == true) {\n multipleDrawline(ctb, unit, rows, cols)\n var billnumber = 4\n } else {\n Drawline(ctb, unit, rows, cols)\n var billnumber = 5\n }\n if (path) {\n if (showRoad && multiple != true) {\n var roadType = \"showWay\"\n cutRoad(\n billnumber,\n roadType,\n ctb,\n unit,\n showRoad,\n cols,\n gameId,\n ask,\n askroad.askshowroad\n )\n }\n if (bigRoad && bigRoad.length > 0) {\n if (\n bigRoad[0].result == 3 &&\n bigRoad[0].show_x == 1 &&\n bigRoad[0].show_y == 1\n ) {\n BigPathTie(billnumber, ctb, unit, cols, bigRoad[0].tie_num)\n } else {\n var roadType = \"bigWay\"\n cutRoad(\n billnumber,\n roadType,\n ctb,\n unit,\n bigRoad,\n cols,\n gameId,\n ask,\n askroad.askbigRoad\n )\n }\n }\n if (bigEyeRoad && bigEyeRoad.length > 0) {\n var roadType = \"bigeyeWay\"\n cutRoad(\n billnumber,\n roadType,\n ctb,\n unit,\n bigEyeRoad,\n cols,\n gameId,\n ask,\n askroad.askbigEyeRoad\n )\n }\n if (pathway && pathway.length > 0) {\n var roadType = \"littlWay\"\n cutRoad(\n billnumber,\n roadType,\n ctb,\n unit,\n pathway,\n cols,\n gameId,\n ask,\n askroad.askpathway\n )\n }\n if (roach && roach.length > 0) {\n var roadType = \"roachWay\"\n cutRoad(\n billnumber,\n roadType,\n ctb,\n unit,\n roach,\n cols,\n gameId,\n ask,\n askroad.askroach\n )\n }\n if (sanxingRoad && sanxingRoad.length > 0) {\n var roadType = \"sanxingWay\"\n cutRoad(\n billnumber,\n roadType,\n ctb,\n unit,\n sanxingRoad,\n cols,\n gameId,\n ask,\n askroad.asksanxing\n )\n }\n }\n}\n// 大眼路单独一条\nfunction WaybillbigRoad(ctb, unit, rows, cols, path, gameId) {\n ctb.clearRect(0, 0, unit * 100, unit * rows)\n Drawline(ctb, unit, rows, cols, true)\n if (path && path.length > 0) {\n if (path[0].result == 3 && path[0].show_x == 1 && path[0].show_y == 1) {\n BigPathTie(1, ctb, unit, cols, path[0].tie_num, true)\n } else {\n cutRoad(1, \"bigWay\", ctb, unit, path, cols, gameId, false, false)\n }\n }\n}\n\n// 半路 竖版路单\nfunction HalfWay(ctb, unit, rows, cols, path, gameId, ask, askroad) {\n var ask = ask || false\n var askroad = askroad || {\n askshowroad: false,\n askbigRoad: false,\n askbigEyeRoad: false,\n askpathway: false,\n askroach: false,\n asksanxing: false\n }\n ctb.clearRect(0, 0, unit * 100, unit * rows)\n var showRoad = path.showRoad\n var bigRoad = path.bigRoad\n var bigEyeRoad = path.bigEyeRoad\n var pathway = path.pathway\n var roach = path.roach\n var sanxingRoad = path.sanxingRoad\n halfwayDrawline(ctb, unit, rows, cols)\n\n if (path) {\n if (showRoad) {\n var roadType = \"showWay\"\n halfcutRoad(\n roadType,\n ctb,\n unit,\n showRoad,\n cols,\n gameId,\n ask,\n askroad.askshowroad\n )\n }\n if (bigRoad) {\n if (\n bigRoad[0].result == 3 &&\n bigRoad[0].show_x == 1 &&\n bigRoad[0].show_y == 1\n ) {\n BigPathTie(5, ctb, unit, cols, bigRoad[0].tie_num)\n } else {\n var roadType = \"bigWay\"\n halfcutRoad(\n roadType,\n ctb,\n unit,\n bigRoad,\n cols,\n gameId,\n ask,\n askroad.askbigRoad\n )\n }\n }\n if (bigEyeRoad) {\n var roadType = \"bigeyeWay\"\n halfcutRoad(\n roadType,\n ctb,\n unit,\n bigEyeRoad,\n cols,\n gameId,\n ask,\n askroad.askbigEyeRoad\n )\n }\n if (pathway) {\n var roadType = \"littlWay\"\n halfcutRoad(\n roadType,\n ctb,\n unit,\n pathway,\n cols,\n gameId,\n ask,\n askroad.askpathway\n )\n }\n if (roach) {\n var roadType = \"roachWay\"\n halfcutRoad(\n roadType,\n ctb,\n unit,\n roach,\n cols,\n gameId,\n ask,\n askroad.askroach\n )\n }\n if (sanxingRoad) {\n var roadType = \"sanxingWay\"\n halfcutRoad(\n roadType,\n ctb,\n unit,\n sanxingRoad,\n cols,\n gameId,\n ask,\n askroad.asksanxing\n )\n }\n }\n}\n\n// 前端路单数据截取\nfunction cutRoad(\n billnumber,\n roadType,\n ctb,\n unit,\n roadData,\n cols,\n gameId,\n ask,\n askroad\n) {\n var L = roadData.length\n var new_roadData = []\n var Tab = 0\n var start_x = 0\n // 格子个数\n if (roadType == \"showWay\" || roadType == \"bigWay\") {\n if (roadType == \"showWay\") {\n if (ask && askroad) {\n Tab = cols / 2\n } else if (gameId == 6 && billnumber == 3) {\n Tab = parseInt(cols / 3) - 1\n } else {\n Tab = cols / 2 - 1\n }\n } else {\n if (ask && askroad) {\n Tab = cols\n } else {\n Tab = cols - 1\n }\n }\n } else if (roadType == \"sanxingWay\") {\n if (ask && askroad) {\n Tab = cols / 2\n } else {\n Tab = cols / 2 - 1\n }\n } else if (\n roadType == \"toningBigWay\" ||\n roadType == \"bigRoadBS\" ||\n roadType == \"bigRoadSP\"\n ) {\n if (billnumber == 3) {\n Tab = parseInt(cols / 3) - 1\n } else if (billnumber == 2) {\n Tab = parseInt(cols / 2) - 1\n } else {\n Tab = cols - 1\n }\n } else {\n if (ask && askroad) {\n Tab = cols - 1\n } else {\n Tab = cols - 2\n }\n }\n // 初始位置\n if (billnumber == 1) {\n start_x = 0.25\n } else if (billnumber == 2) {\n if (roadType == \"bigRoadSP\") {\n start_x = 0.25\n }\n if (roadType == \"bigRoadBS\") {\n start_x = parseInt(cols / 2) + 0.25\n }\n } else if (billnumber == 3) {\n if (roadType == \"toningBigWay\") {\n start_x = 0.25\n }\n if (roadType == \"bigRoadSP\") {\n start_x = parseInt(cols / 3) + 0.25\n }\n if (roadType == \"bigRoadBS\") {\n start_x = parseInt(cols / 3) * 2 + 0.25\n }\n } else if (billnumber == 4) {\n start_x = 0.25\n if (roadType == \"littlWay\") {\n start_x = cols * 0.55 * unit\n }\n unit = unit * 2\n } else if (billnumber == 5) {\n start_x = cols / 2 + 0.25\n if (roadType == \"bigWay\") {\n start_x = cols / 2\n }\n if (roadType == \"littlWay\") {\n start_x = cols * 0.5 * unit + 0.25 * unit * (cols + 1)\n }\n if (roadType == \"sanxingWay\") {\n start_x = cols * 0.5 * unit + 0.25 * unit * (cols + 1)\n }\n }\n if (L >= 1) {\n var last_x = roadData[L - 1].show_x\n if (last_x > Tab) {\n var cut = last_x - Tab\n roadData.forEach(function (v) {\n if (v.show_x > cut) {\n new_roadData.push(v)\n }\n })\n } else {\n new_roadData = roadData\n cut = 0\n }\n } else {\n new_roadData = roadData\n cut = 0\n }\n new_roadData.forEach(function (v) {\n if (roadType == \"roachWay\") {\n CockrochPath(ctb, unit, start_x, v.show_x - cut, v.show_y, v.result)\n } else if (roadType == \"littlWay\") {\n LittlePath(ctb, unit, start_x, v.show_x - cut, v.show_y, v.result)\n } else if (roadType == \"bigeyeWay\") {\n BigeyePath(ctb, unit, start_x, v.show_x - cut, v.show_y, v.result)\n } else if (roadType == \"showWay\") {\n SoloPath(gameId, ctb, unit, v.show_x - cut, v.show_y, v.result, v.pair)\n } else if (roadType == \"bigWay\") {\n BigPath(\n ctb,\n unit,\n start_x,\n v.show_x - cut,\n v.show_y,\n v.result,\n v.tie_num,\n v.pair,\n billnumber\n )\n } else if (roadType == \"sanxingWay\") {\n sanxingPath(\n ctb,\n unit,\n start_x,\n v.show_x - cut,\n v.show_y,\n v.result,\n v.tie_num\n )\n } else if (\n roadType == \"toningBigWay\" ||\n roadType == \"bigRoadSP\" ||\n roadType == \"bigRoadBS\"\n ) {\n ToningBigPath(\n ctb,\n unit,\n start_x,\n v.show_x - cut,\n v.show_y,\n v.result,\n v.tie_num,\n v.pair,\n billnumber,\n roadType\n )\n }\n })\n}\n\n// 半路单数据截取\nfunction halfcutRoad(\n roadType,\n ctb,\n unit,\n roadData,\n cols,\n gameId,\n ask,\n askroad\n) {\n var L = roadData.length\n var new_roadData = []\n var Tab = 0\n var start_x = 0\n if (roadType == \"showWay\") {\n if (ask && askroad) {\n Tab = cols\n } else {\n Tab = cols - 1\n }\n }\n if (roadType == \"bigeyeWay\" || roadType == \"roachWay\") {\n if (ask && askroad) {\n Tab = cols * 2 + 1\n } else {\n Tab = cols * 2\n }\n }\n if (roadType == \"bigWay\" || roadType == \"littlWay\") {\n if (ask && askroad) {\n Tab = cols * 2\n } else {\n Tab = cols * 2 - 1\n }\n }\n if (roadType == \"sanxingWay\") {\n if (ask && askroad) {\n Tab = cols\n } else {\n Tab = cols - 1\n }\n }\n if (L >= 1) {\n var last_x = roadData[L - 1].show_x\n if (last_x > Tab) {\n var cut = last_x - Tab\n roadData.forEach(function (v) {\n if (v.show_x > cut) {\n new_roadData.push(v)\n }\n })\n } else {\n new_roadData = roadData\n cut = 0\n }\n } else {\n new_roadData = roadData\n cut = 0\n }\n new_roadData.forEach(function (v) {\n if (roadType == \"showWay\") {\n SoloPath(gameId, ctb, unit, v.show_x - cut, v.show_y, v.result, v.pair)\n } else if (roadType == \"bigWay\") {\n BigPath(\n ctb,\n unit,\n start_x,\n v.show_x - cut,\n v.show_y + 12,\n v.result,\n v.tie_num,\n v.pair,\n 2\n )\n } else if (roadType == \"bigeyeWay\") {\n BigeyePath(ctb, unit, start_x, v.show_x - cut, v.show_y + 24, v.result)\n } else if (roadType == \"littlWay\") {\n start_x = ((cols + 0.5) * unit) / 2\n LittlePath(ctb, unit, start_x, v.show_x - cut, v.show_y + 24, v.result)\n } else if (roadType == \"roachWay\") {\n CockrochPath(ctb, unit, start_x, v.show_x - cut, v.show_y + 24, v.result)\n } else if (roadType == \"sanxingWay\") {\n start_x = cols * 0.525 * unit\n sanxingPath(\n ctb,\n unit,\n start_x,\n v.show_x - cut,\n v.show_y + 12,\n v.result,\n v.tie_num\n )\n }\n })\n}\n\n// 画线条\nfunction Drawline(ctb, unit, rows, cols, billnumber) {\n var CanvasWidht = unit * cols\n var CanvasHeight = unit * rows\n ctb.lineWidth = 1 //线条宽度\n ctb.strokeStyle = \"#d9d9d9\" //线条颜色\n ctb.beginPath()\n ctb.moveTo(0, 0.5)\n ctb.lineTo(CanvasWidht, 0.5)\n for (var i = 1; i <= rows; i++) {\n ctb.moveTo(0, unit * i)\n ctb.lineTo(CanvasWidht, unit * i)\n }\n ctb.moveTo(0.5, 0)\n ctb.lineTo(0.5, CanvasHeight)\n for (var j = 1; j <= cols; j++) {\n ctb.moveTo(unit * j, 0)\n ctb.lineTo(unit * j, CanvasHeight)\n }\n if (billnumber != 1) {\n for (var l = 0; l <= rows; l++) {\n ctb.moveTo(CanvasWidht * 0.5, (l + 0.5) * unit)\n ctb.lineTo(CanvasWidht, (l + 0.5) * unit)\n }\n for (var k = 0; k <= cols - Math.floor(0.5 * cols); k++) {\n ctb.moveTo((Math.floor(0.5 * cols) + k + 0.5) * unit, 0)\n ctb.lineTo((Math.floor(0.5 * cols) + k + 0.5) * unit, CanvasHeight)\n }\n }\n ctb.closePath()\n ctb.stroke()\n}\n\n// 多台四条路\nfunction multipleDrawline(ctb, unit, rows, cols) {\n var CanvasWidht = unit * cols\n var CanvasHeight = unit * rows\n ctb.lineWidth = 1 //线条宽度\n ctb.strokeStyle = \"#d9d9d9\" //线条颜色\n ctb.beginPath()\n ctb.moveTo(0, 0.5)\n ctb.lineTo(CanvasWidht, 0.5)\n for (var i = 1; i <= rows; i++) {\n ctb.moveTo(0, unit * i)\n ctb.lineTo(CanvasWidht, unit * i)\n }\n ctb.moveTo(0.5, 0)\n ctb.lineTo(0.5, CanvasHeight)\n for (var j = 1; j <= cols; j++) {\n ctb.moveTo(unit * j, 0)\n ctb.lineTo(unit * j, CanvasHeight)\n }\n ctb.closePath()\n ctb.stroke()\n}\n\n// 半路\nfunction halfwayDrawline(ctb, unit, rows, cols) {\n var CanvasWidht = unit * cols\n var CanvasHeight = unit * rows\n ctb.lineWidth = 1\n\n ctb.beginPath()\n ctb.strokeStyle = \"#d9d9d9\"\n ctb.moveTo(0, 0.5)\n ctb.lineTo(CanvasWidht, 0.5)\n for (var i = 1; i <= rows; i++) {\n ctb.moveTo(0, unit * i)\n ctb.lineTo(CanvasWidht, unit * i)\n }\n ctb.moveTo(0.5, 0)\n ctb.lineTo(0.5, CanvasHeight)\n for (var j = 1; j <= cols; j++) {\n ctb.moveTo(unit * j, 0)\n ctb.lineTo(unit * j, CanvasHeight)\n }\n for (var i = 0; i <= rows; i++) {\n ctb.moveTo(0, unit * (i + 6.5))\n ctb.lineTo(CanvasWidht, unit * (i + 6.5))\n }\n for (var j = 0; j <= cols; j++) {\n ctb.moveTo(unit * (j + 0.5), CanvasHeight / 2)\n ctb.lineTo(unit * (j + 0.5), CanvasHeight)\n }\n\n ctb.closePath()\n ctb.stroke()\n // 画划分线\n ctb.beginPath()\n ctb.strokeStyle = \"#555\"\n ctb.moveTo(0, unit * 6)\n ctb.lineTo(CanvasWidht, unit * 6)\n\n ctb.moveTo(0, unit * 9)\n ctb.lineTo(CanvasWidht, unit * 9)\n ctb.closePath()\n ctb.stroke()\n}\n\n// 局数 数,文字X坐标,文字Y坐标,文字大小风格\nfunction Font_tie(ctb, num, Font_x, Font_y, fontsize, color) {\n if (num !== undefined) {\n ctb.beginPath()\n ctb.font = fontsize\n ctb.textAlign = \"center\"\n ctb.textBaseline = \"middle\"\n ctb.fillStyle = color || \"#000\"\n ctb.fillText(num, Font_x, Font_y)\n ctb.stroke()\n }\n}\nfunction SoloPath(gameId, ctb, unit, x, y, type, corners) {\n ctb.beginPath()\n ctb.lineWidth = unit * 0.02\n ctb.strokeStyle = \"#fff\"\n const radius = unit / 2\n const $Type = $store.state.config.$Type\n const $lang = $store.state.config.$lang\n let color, fonts\n switch (gameId) {\n case 1:\n if (type == 1) {\n color = \"#cf0012\"\n fonts = $Type == \"cn\" || $Type == \"tw\" ? $lang[$Type].banker : \"B\"\n } else if (type == 2) {\n color = \"#1c1f89\"\n fonts = $Type == \"cn\" || $Type == \"tw\" ? $lang[$Type].player : \"P\"\n } else if (type == 3) {\n color = \"#009944\"\n fonts = $Type == \"cn\" || $Type == \"tw\" ? $lang[$Type].tie : \"T\"\n }\n break\n\n case 2:\n if (type == 1) {\n color = \"#cf0012\"\n fonts = $Type == \"cn\" || $Type == \"tw\" ? $lang[$Type].dragon : \"D\"\n } else if (type == 2) {\n color = \"#1c1f89\"\n fonts = $Type == \"cn\" || $Type == \"tw\" ? $lang[$Type].tiger : \"T\"\n } else if (type == 3) {\n color = \"#009944\"\n fonts = $Type == \"cn\" || $Type == \"tw\" ? $lang[$Type].tie : \"T\"\n }\n break\n case 6:\n fonts = type\n if (type == 0) {\n color = \"#2e2e2e\"\n } else if (type == 1) {\n color = \"#1c1f89\"\n } else if (type == 2) {\n color = \"#009944\"\n } else if (type == 3) {\n color = \"#ffc107\"\n } else if (type == 4) {\n color = \"#cf0012\"\n }\n break\n }\n ctb.arc(unit * (x - 0.5), radius + unit * (y - 1), unit * 0.4, 0, Math.PI * 2)\n ctb.fillStyle = color\n ctb.fill()\n ctb.font = \"bold \" + unit * 0.54 + \"px Arial\"\n ctb.fillStyle = \"#ddd\" // 颜色\n ctb.textAlign = \"center\"\n ctb.textBaseline = \"middle\"\n ctb.fillText(fonts, unit * (x - 0.5), radius + unit * (y - 1))\n ctb.stroke()\n var corner_xy = unit / 3.5\n if (corners == 1) {\n corner(ctb, unit, x, y, corner_xy, \"#cf0012\")\n } else if (corners == 2) {\n corner(ctb, unit, x, y, -corner_xy, \"#1c1f89\")\n } else if (corners == 3) {\n corner(ctb, unit, x, y, corner_xy, \"#cf0012\")\n corner(ctb, unit, x, y, -corner_xy, \"#1c1f89\")\n }\n}\n//SoloPath角标\nfunction corner(ctb, unit, x, y, corner_xy, corner_color) {\n var radius = unit / 2\n ctb.beginPath()\n ctb.lineWidth = unit * 0.02\n ctb.strokeStyle = \"#fff\"\n ctb.arc(\n unit * (x - 0.5) - corner_xy,\n radius + unit * (y - 1) - corner_xy,\n unit * 0.13,\n 0,\n Math.PI * 2\n )\n ctb.fillStyle = corner_color\n ctb.fill()\n ctb.stroke()\n}\n\n// 大路\nfunction BigPath(ctb, unit, start_x, x, y, type, slash, corners, billnumber) {\n ctb.beginPath()\n if (billnumber == 1) {\n ctb.lineWidth = unit * 0.12\n var radius = unit,\n half = 0.75\n } else {\n ctb.lineWidth = unit * 0.065\n var radius = unit / 2,\n half = 0.5\n }\n if (type == 2) {\n var color = \"#1c1f89\"\n } else if (type == 1) {\n var color = \"#cf0012\"\n }\n ctb.strokeStyle = color\n ctb.arc(\n radius * (x - half) + start_x * unit,\n radius * (y - 0.5),\n radius * 0.38,\n 0,\n Math.PI * 2\n )\n ctb.closePath()\n ctb.stroke()\n if (slash != 0) {\n ctb.beginPath()\n var linewidth = unit * 0.15\n ctb.lineWidth = radius * 0.14 //线条宽度\n ctb.lineCap = \"round\"\n ctb.strokeStyle = \"#009944\" //线条颜色\n ctb.moveTo(\n radius * (x - half) + start_x * unit - linewidth,\n radius * (y - 0.5) + linewidth\n )\n ctb.lineTo(\n radius * (x - half) + start_x * unit + linewidth,\n radius * (y - 0.5) - linewidth\n )\n ctb.stroke()\n if (slash != 0) {\n Font_tie(\n ctb,\n slash,\n radius * (x - half) + start_x * unit,\n radius * (y - 0.5),\n \"bold \" + radius * 0.65 + \"px Arial\"\n )\n }\n }\n\n var corner_xy = radius / 3.5\n if (corners == 1) {\n BigPathcorner(ctb, unit, start_x, x, y, corner_xy, \"#cf0012\", billnumber)\n } else if (corners == 2) {\n BigPathcorner(ctb, unit, start_x, x, y, -corner_xy, \"#1c1f89\", billnumber)\n } else if (corners == 3) {\n BigPathcorner(ctb, unit, start_x, x, y, corner_xy, \"#cf0012\", billnumber)\n BigPathcorner(ctb, unit, start_x, x, y, -corner_xy, \"#1c1f89\", billnumber)\n }\n}\n\n//大路角标\nfunction BigPathcorner(\n ctb,\n unit,\n start_x,\n x,\n y,\n corner_xy,\n corner_color,\n billnumber\n) {\n if (billnumber == 1) {\n var radius = unit,\n half = 0.75,\n width = radius * 0.16\n } else {\n var radius = unit / 2,\n half = 0.55,\n width = radius * 0.18\n }\n ctb.beginPath()\n ctb.lineWidth = unit * 0.015\n ctb.strokeStyle = \"#fff\"\n ctb.arc(\n radius * (x - half) + start_x * unit - corner_xy,\n radius * (y - 0.5) - corner_xy,\n width,\n 0,\n Math.PI * 2\n )\n ctb.arc(\n radius * (x - half) + start_x * unit - corner_xy,\n radius * (y - 0.5) - corner_xy,\n width,\n 0,\n Math.PI * 2\n )\n ctb.fillStyle = corner_color\n ctb.fill()\n ctb.stroke()\n}\n\n// 大路 第一局 和\nfunction BigPathTie(billnumber, ctb, unit, cols, order) {\n if (billnumber == 1 || billnumber == 4) {\n var radius = unit,\n start_x = 0\n } else {\n var radius = unit / 2,\n start_x = unit * cols * 0.5\n }\n\n ctb.beginPath()\n ctb.lineWidth = 3 //线条宽度\n ctb.strokeStyle = \"#3EA542\" //线条颜色\n ctb.lineCap = \"round\"\n ctb.moveTo(radius * 0.15 + start_x, radius / 2)\n ctb.lineTo(radius * 0.85 + start_x, radius / 2)\n ctb.stroke()\n Font_tie(\n ctb,\n order,\n radius * 0.5 + start_x,\n radius / 2,\n radius * 0.8 + \"px Arial\"\n )\n}\n\n// 大眼路\nfunction BigeyePath(ctb, unit, start_x, x, y, type) {\n ctb.beginPath()\n ctb.lineWidth = unit * 0.06\n var radius = unit / 4\n if (type == 2) {\n var color = \"#1c1f89\"\n } else if (type == 1) {\n var color = \"#cf0012\"\n }\n ctb.strokeStyle = color\n ctb.arc(\n radius / 2 + radius * (x - 2) + start_x * unit,\n unit * 3.25 + radius * (y - 1.5),\n unit * 0.09,\n 0,\n Math.PI * 2\n )\n ctb.closePath()\n ctb.stroke()\n}\n//小路\nfunction LittlePath(ctb, unit, start_x, x, y, type) {\n ctb.beginPath()\n ctb.lineWidth = 0\n var radius = unit / 4\n if (type == 2) {\n var color = \"#1c1f89\"\n } else if (type == 1) {\n var color = \"#cf0012\"\n }\n ctb.strokeStyle = color\n ctb.fillStyle = color\n ctb.arc(\n radius / 2 + radius * (x - 2) + start_x,\n unit * 3.25 + radius * (y - 1.5),\n radius * 0.28,\n 0,\n Math.PI * 2\n )\n ctb.closePath()\n ctb.stroke()\n ctb.fill()\n}\nfunction CockrochPath(ctb, unit, start_x, x, y, type) {\n var radius = unit / 4,\n linewidth = radius * 0.3\n ctb.beginPath()\n ctb.lineCap = \"round\"\n ctb.lineWidth = radius * 0.3 //线条宽度\n if (type == 2) {\n var color = \"#1c1f89\"\n } else if (type == 1) {\n var color = \"#cf0012\"\n }\n ctb.strokeStyle = color\n ctb.moveTo(\n start_x * unit + radius * (x - 1.5) - linewidth,\n radius / 2 + radius * (y - 1) + linewidth + 4.5 * unit\n )\n ctb.lineTo(\n start_x * unit + radius * (x - 1.5) + linewidth,\n radius / 2 + radius * (y - 1) - linewidth + 4.5 * unit\n )\n ctb.stroke()\n}\n\nfunction sanxingPath(ctb, unit, start_x, x, y, type, slash) {\n ctb.beginPath()\n var radius = unit / 2\n ctb.lineWidth = radius * 0.15\n\n if (type == 2) {\n var color = \"#1c1f89\"\n } else if (type == 1) {\n var color = \"#cf0012\"\n }\n ctb.strokeStyle = color\n ctb.arc(\n start_x + radius * (x - 1),\n unit * 4.75 + radius * (y - 1),\n radius * 0.38,\n 0,\n Math.PI * 2\n )\n ctb.closePath()\n ctb.stroke()\n\n if (slash != 0) {\n ctb.beginPath()\n var linewidth = unit * 0.12\n ctb.lineWidth = unit * 0.08 //线条宽度\n ctb.lineCap = \"round\"\n ctb.strokeStyle = \"#009944\" //线条颜色\n\n ctb.moveTo(\n start_x + radius * (x - 1) - linewidth,\n unit * 4.5 + radius * (y - 0.5) + linewidth\n )\n ctb.lineTo(\n start_x + radius * (x - 1) + linewidth,\n unit * 4.5 + radius * (y - 0.5) - linewidth\n )\n\n ctb.stroke()\n if (slash > 0) {\n Font_tie(\n ctb,\n slash,\n start_x + radius * (x - 1),\n unit * 4.5 + radius * (y - 0.5),\n radius * 0.7 + \"px Arial\"\n )\n }\n }\n}\n\n// NN\nfunction NNcanvas(\n gameId,\n ctb,\n unit_x,\n unit_y,\n rows,\n cols,\n roadData\n // total_num\n) {\n if (roadData && roadData != undefined) {\n var L = roadData.length\n var new_roadData = []\n var Tab = cols - 2\n if (L >= 1) {\n var last_x = roadData[L - 1].show_x\n if (last_x > Tab) {\n var cut = last_x - Tab\n roadData.forEach(function (v) {\n if (v.show_x > cut) {\n new_roadData.push(v)\n }\n })\n } else {\n new_roadData = roadData\n cut = 0\n }\n } else {\n new_roadData = roadData\n cut = 0\n }\n roadData.forEach(function (v) {\n NNwaybill(\n gameId,\n ctb,\n unit_x,\n unit_y,\n v.show_x - cut,\n v.show_y,\n v.type,\n v.result,\n v.is_win\n )\n })\n }\n NNtitle(ctb, unit_x, unit_y, unit_y)\n NNline(ctb, unit_x, unit_y, rows, cols)\n}\n\nfunction NNwaybill(gameId, ctb, unit_x, unit_y, x, y, type, result, win) {\n var fonts = \"\",\n color = \"#000\"\n var fontsize = unit_x * 0.28\n if ($store.state.config.$Type == \"cn\") {\n if (result == 0) {\n fonts = \"无牛\"\n } else if (result == 1) {\n fonts = \"牛1\"\n } else if (result == 2) {\n fonts = \"牛2\"\n } else if (result == 3) {\n fonts = \"牛3\"\n } else if (result == 4) {\n fonts = \"牛4\"\n } else if (result == 5) {\n fonts = \"牛5\"\n } else if (result == 6) {\n fonts = \"牛6\"\n } else if (result == 7) {\n fonts = \"牛7\"\n } else if (result == 8) {\n fonts = \"牛8\"\n } else if (result == 9) {\n fonts = \"牛9\"\n } else if (result == 10) {\n fonts = \"牛牛\"\n } else if (result == 11 && gameId == 4) {\n fonts = \"五公\"\n } else if (result == 11 && gameId == 5) {\n fonts = \"豹子\"\n } else if (result == 12) {\n fonts = \"同花顺\"\n } else if (result == 13) {\n fonts = \"皇家同花顺\"\n }\n } else if ($store.state.config.$Type == \"tw\") {\n if (result == 0) {\n fonts = \"無牛\"\n } else if (result == 1) {\n fonts = \"牛1\"\n } else if (result == 2) {\n fonts = \"牛2\"\n } else if (result == 3) {\n fonts = \"牛3\"\n } else if (result == 4) {\n fonts = \"牛4\"\n } else if (result == 5) {\n fonts = \"牛5\"\n } else if (result == 6) {\n fonts = \"牛6\"\n } else if (result == 7) {\n fonts = \"牛7\"\n } else if (result == 8) {\n fonts = \"牛8\"\n } else if (result == 9) {\n fonts = \"牛9\"\n } else if (result == 10) {\n fonts = \"牛牛\"\n } else if (result == 11 && gameId == 4) {\n fonts = \"五公\"\n } else if (result == 11 && gameId == 5) {\n fonts = \"豹子\"\n } else if (result == 12) {\n fonts = \"同花順\"\n } else if (result == 13) {\n fonts = \"皇家同花順\"\n }\n } else {\n if (result == 0) {\n fonts = \"No Bull\"\n } else if (result == 1) {\n fonts = \"B 1\"\n } else if (result == 2) {\n fonts = \"B 2\"\n } else if (result == 3) {\n fonts = \"B 3\"\n } else if (result == 4) {\n fonts = \"B 4\"\n } else if (result == 5) {\n fonts = \"B 5\"\n } else if (result == 6) {\n fonts = \"B 6\"\n } else if (result == 7) {\n fonts = \"B 7\"\n } else if (result == 8) {\n fonts = \"B 8\"\n } else if (result == 9) {\n fonts = \"B 9\"\n } else if (result == 10) {\n fonts = \"Super B \"\n } else if (result == 11 && gameId == 4) {\n fonts = \"Five P \"\n } else if (result == 11 && gameId == 5) {\n fonts = \"Leopard\"\n } else if (result == 12) {\n fonts = \"Flush\"\n } else if (result == 13) {\n fonts = \"SuperFlush\"\n }\n fontsize = unit_x * 0.22\n }\n\n if (type == 1) {\n color = \"#ce2837\"\n if (win == 1) {\n ctb.fillStyle = color\n ctb.fillRect(unit_x * x, unit_y * (y - 0.3), unit_x, unit_y * 0.3)\n Font_tie(\n ctb,\n \"WIN\",\n unit_x * (0.5 + x),\n unit_y * (y - 0.14),\n \"bold \" + unit_x * 0.15 + \"px Arial\",\n \"#fff\"\n )\n }\n } else if (type == 2) {\n color = \"#1d4999 \"\n if (win == 1) {\n ctb.fillStyle = color\n ctb.fillRect(unit_x * x, unit_y * (y - 0.3), unit_x, unit_y * 0.3)\n Font_tie(\n ctb,\n \"WIN\",\n unit_x * (0.5 + x),\n unit_y * (y - 0.14),\n \"bold \" + unit_x * 0.15 + \"px Arial\",\n \"#fff\"\n )\n }\n }\n Font_tie(\n ctb,\n fonts,\n unit_x * (0.5 + x),\n unit_y * (y - 0.5),\n \"bold \" + fontsize + \"px Arial\",\n color\n )\n}\n\n// 画表头\nfunction NNtitle(ctb, unit_x, unit_y) {\n for (var i = 0; i <= 4; i++) {\n var grd = ctb.createLinearGradient(0, unit_x, 0, 0)\n var fontsize = unit_x * 0.32\n if (i == 0) {\n if ($store.state.config.$Type == \"cn\") {\n var color = \"#fff\",\n font = \"庄家\"\n } else if ($store.state.config.$Type == \"tw\") {\n var color = \"#fff\",\n font = \"莊家\"\n } else if ($store.state.config.$Type == \"tl\") {\n var color = \"#fff\",\n font = \"เจ้ามือ\"\n }else {\n var color = \"#fff\",\n font = \"Banker\",\n fontsize = unit_x * 0.25\n }\n grd.addColorStop(0, \"#ae0b1a\")\n grd.addColorStop(0.5, \"#ff0017\")\n grd.addColorStop(1, \"#ae0b1a\")\n } else {\n if ($store.state.config.$Type == \"cn\") {\n var color = \"#fff\",\n font = \"闲\" + i\n } else if ($store.state.config.$Type == \"tw\") {\n var color = \"#fff\",\n font = \"閒\" + i\n } else if ($store.state.config.$Type == \"yn\") {\n var color = \"#fff\",\n font = \"Palyer\" + i,\n fontsize = unit_x * 0.25\n } else if ($store.state.config.$Type == \"tl\") {\n var color = \"#fff\",\n font = \"ผู้เล่น\" + i,\n fontsize = unit_x * 0.25\n } else {\n var color = \"#fff\",\n font = \"Palyer\" + i,\n fontsize = unit_x * 0.25\n }\n\n grd.addColorStop(0, \"#0321a2\")\n grd.addColorStop(0.5, \"#002ffb\")\n grd.addColorStop(1, \"#092679\")\n }\n ctb.fillStyle = grd\n ctb.fillRect(0, i * unit_y, unit_x, unit_y)\n Font_tie(\n ctb,\n font,\n unit_x / 2,\n i * unit_y + unit_y / 2,\n \"bold \" + fontsize + \"px Arial\",\n color\n )\n }\n}\n\n// NN画线条\nfunction NNline(ctb, unit_x, unit_y, rows, cols) {\n const CanvasWidht = unit_x * cols\n const CanvasHeight = unit_y * rows\n ctb.lineWidth = 1 //线条宽度\n ctb.strokeStyle = \"#deded9\" //线条颜色\n ctb.beginPath()\n for (let i = 0; i <= rows; i++) {\n ctb.moveTo(0, unit_y * i)\n ctb.lineTo(CanvasWidht, unit_y * i)\n }\n for (let j = 1; j <= cols; j++) {\n ctb.moveTo(unit_x * j, 0)\n ctb.lineTo(unit_x * j, CanvasHeight)\n }\n ctb.closePath()\n ctb.stroke()\n}\n\n// 色碟\nfunction ToningWaybill(\n ctb,\n unit,\n rows,\n cols,\n path,\n gameId,\n billnumber,\n showBigWay\n) {\n ctb.clearRect(0, 0, unit * 100, unit * rows)\n const showRoad = path.showRoad\n const bigRoad = path.bigRoad\n const bigRoadBS = path.bigRoadBS\n const bigRoadSP = path.bigRoadSP\n let roadType = null\n Drawline(ctb, unit, rows, cols, true)\n if (path) {\n if (billnumber != 2) {\n if (showRoad && showRoad.length > 0 && !showBigWay && billnumber != 1) {\n roadType = \"showWay\"\n cutRoad(billnumber, roadType, ctb, unit, showRoad, cols, gameId)\n }\n if (bigRoad && bigRoad.length > 0 && showBigWay) {\n roadType = \"toningBigWay\"\n cutRoad(billnumber, roadType, ctb, unit, bigRoad, cols, gameId)\n }\n }\n if (billnumber != 1) {\n if (bigRoadSP && bigRoadSP.length > 0) {\n roadType = \"bigRoadSP\"\n cutRoad(billnumber, roadType, ctb, unit, bigRoadSP, cols, gameId)\n }\n if (bigRoadBS && bigRoadBS.length > 0) {\n roadType = \"bigRoadBS\"\n cutRoad(billnumber, roadType, ctb, unit, bigRoadBS, cols, gameId)\n }\n }\n }\n}\n\n// 色碟单双路\nfunction ToningBigPath(\n ctb,\n unit,\n start_x,\n x,\n y,\n type,\n slash,\n corners,\n billnumber,\n roadType\n) {\n const $Type = $store.state.config.$Type\n const $lang = $store.state.config.$lang\n ctb.beginPath()\n let radius = unit,\n color,\n font\n if (roadType == \"toningBigWay\") {\n font = type\n if (type == 0) {\n color = \"#2e2e2e\"\n } else if (type == 1) {\n color = \"#1c1f89\"\n } else if (type == 2) {\n color = \"#009944\"\n } else if (type == 3) {\n color = \"#ffc107\"\n } else if (type == 4) {\n color = \"#cf0012\"\n }\n } else if (roadType == \"bigRoadBS\") {\n if (type == 1) {\n color = \"#cf0012\"\n font = $Type == \"cn\" || $Type == \"tw\" ? $lang[$Type].big : \"B\"\n } else if (type == 2) {\n color = \"#1c1f89\"\n font = $Type == \"cn\" || $Type == \"tw\" ? $lang[$Type].small : \"S\"\n }\n } else if (roadType == \"bigRoadSP\") {\n if (type == 1) {\n color = \"#cf0012\"\n font = $Type == \"cn\" || $Type == \"tw\" ? $lang[$Type].even : \"E\"\n } else if (type == 2) {\n color = \"#1c1f89\"\n font = $Type == \"cn\" || $Type == \"tw\" ? $lang[$Type].odd : \"O\"\n }\n }\n\n ctb.arc(\n radius * (x - 0.75) + start_x * radius,\n radius * (y - 0.5),\n radius * 0.38,\n 0,\n Math.PI * 2\n )\n ctb.fillStyle = color\n ctb.fill()\n ctb.font = \"bold \" + unit * 0.54 + \"px Arial\"\n ctb.fillStyle = \"#fff\" // 颜色\n ctb.textAlign = \"center\"\n ctb.textBaseline = \"middle\"\n ctb.fillText(font, radius * (x - 0.75) + start_x * unit, radius * (y - 0.5))\n ctb.closePath()\n ctb.stroke()\n const corner_xy = radius / 3.5\n if (corners == 1) {\n BigPathcorner(ctb, unit, start_x, x, y, corner_xy, \"#cf0012\", billnumber)\n } else if (corners == 2) {\n BigPathcorner(ctb, unit, start_x, x, y, -corner_xy, \"#1c1f89\", billnumber)\n } else if (corners == 3) {\n BigPathcorner(ctb, unit, start_x, x, y, corner_xy, \"#cf0012\", billnumber)\n BigPathcorner(ctb, unit, start_x, x, y, -corner_xy, \"#1c1f89\", billnumber)\n }\n if (slash && roadType == \"bigRoadBS\") {\n corner(ctb, unit, start_x + x - 0.25, y, -corner_xy, \"#009944\")\n }\n}\n\n// 骰宝\nconst diceSpriteSrc = require(`../images/dice/sprite.png`)\nconst en_diceSpriteSrc = require(`../images/dice/en_sprite.png`)\nfunction DiceWaybill(ctb, unit, rows, cols, data, billnumber) {\n const $Type = $store.state.config.$Type\n ctb.clearRect(0, 0, unit * (cols + 1), unit * (rows + 1))\n const sprite = new Image()\n sprite.crossOrigin = \"anonymous\"\n sprite.src = $Type == \"cn\" || $Type == \"tw\" ? diceSpriteSrc : en_diceSpriteSrc\n let diceWidth = 0,\n diceHeight = 0,\n spriteArry = []\n sprite.onload = () => {\n diceWidth = sprite.width / 2\n diceHeight = sprite.height / 6\n spriteArry = {\n dice_1: [0, 0],\n dice_2: [0, 1],\n dice_3: [0, 2],\n dice_odd: [0, 3],\n dice_even: [0, 4],\n dice_triplet: [0, 5],\n dice_4: [1, 0],\n dice_5: [1, 1],\n dice_6: [1, 2],\n dice_small: [1, 3],\n dice_big: [1, 4],\n dice_num: [1, 5]\n }\n if (data) {\n inputData(data.showRoad, \"showRoad\")\n if (billnumber == 3) {\n inputData(data.bigRoadBS, \"bigRoadBS\")\n inputData(data.bigRoadSP, \"bigRoadSP\")\n }\n }\n\n drawLine()\n }\n\n function inputData(data, type) {\n // 数据截取\n let newData = []\n const L = data.length\n let Tab = cols - 1\n if (billnumber == 3) {\n Tab = parseInt(cols / 3) - 1\n }\n let cut = 0\n if (L <= Tab) {\n newData = data\n } else {\n if (type == \"showRoad\") {\n newData = data.slice(L - Tab, L)\n } else {\n newData = data.filter((v) => v.show_x > data[L - 1].show_x - Tab)\n if (newData.length > 0) {\n cut = newData[0].show_x\n }\n }\n }\n // 绘制图标\n if (type == \"showRoad\") {\n newData.forEach((v, i) => {\n const totle = v[0] + v[1] + v[2]\n drawIcon(i, 0, \"icon\", v[0])\n drawIcon(i, 1, \"icon\", v[1])\n drawIcon(i, 2, \"icon\", v[2])\n drawIcon(i, 3, \"num\", totle)\n if (v[0] == v[1] && v[1] == v[2]) {\n drawIcon(i, 4, \"icon\", \"triplet\")\n drawIcon(i, 5, \"icon\", \"triplet\")\n } else {\n if (totle >= 11) {\n drawIcon(i, 4, \"icon\", \"big\")\n } else {\n drawIcon(i, 4, \"icon\", \"small\")\n }\n if (totle % 2 == 0) {\n drawIcon(i, 5, \"icon\", \"even\")\n } else {\n drawIcon(i, 5, \"icon\", \"odd\")\n }\n }\n })\n } else if (type == \"bigRoadBS\") {\n newData.forEach((v) => {\n const text = v.result == 1 ? \"big\" : v.result == 2 ? \"small\" : \"triplet\"\n drawIcon(v.show_x - cut + Tab + 1, v.show_y - 1, \"icon\", text)\n })\n } else if (type == \"bigRoadSP\") {\n newData.forEach((v) => {\n const text = v.result == 1 ? \"even\" : v.result == 2 ? \"odd\" : \"triplet\"\n drawIcon(v.show_x - cut + Tab * 2 + 2, v.show_y - 1, \"icon\", text)\n })\n }\n }\n function drawIcon(x, y, type, text) {\n if (type == \"icon\") {\n const position = spriteArry[`dice_${text}`]\n ctb.drawImage(\n sprite,\n position[0] * diceWidth,\n position[1] * diceHeight,\n diceWidth,\n diceHeight,\n unit * x + unit * 0.05,\n unit * y + (unit / diceWidth) * diceHeight * 0.05,\n unit * 0.9,\n (unit / diceWidth) * diceHeight * 0.9\n )\n } else if (type == \"num\") {\n const position = spriteArry[`dice_num`]\n ctb.drawImage(\n sprite,\n position[0] * diceWidth,\n position[1] * diceHeight,\n diceWidth,\n diceHeight,\n unit * x + unit * 0.05,\n unit * y + (unit / diceWidth) * diceHeight * 0.05,\n unit * 0.9,\n (unit / diceWidth) * diceHeight * 0.9\n )\n ctb.font = `bold ${unit * 0.58}px Arial`\n ctb.fillStyle = \"#fff\"\n ctb.textAlign = \"center\"\n ctb.textBaseline = \"middle\"\n ctb.fillText(text, unit * (x + 0.45), unit * (y + 0.55))\n }\n // 大小单双路\n if (billnumber == 3 && type == \"icon\") {\n const position = spriteArry[`dice_${text}`]\n ctb.drawImage(\n sprite,\n position[0] * diceWidth,\n position[1] * diceHeight,\n diceWidth,\n diceHeight,\n unit * x,\n unit * y,\n unit * 0.9,\n (unit / diceWidth) * diceHeight * 0.9\n )\n }\n }\n function drawLine() {\n const CanvasWidht = unit * cols\n const CanvasHeight = unit * rows\n ctb.lineWidth = 1\n ctb.strokeStyle = \"#deded9\"\n ctb.beginPath()\n for (let i = 0; i <= rows; i++) {\n ctb.moveTo(0, unit * i)\n ctb.lineTo(CanvasWidht, unit * i)\n }\n for (let j = 0; j <= cols; j++) {\n ctb.moveTo(unit * j, 0)\n ctb.lineTo(unit * j, CanvasHeight)\n }\n ctb.closePath()\n ctb.stroke()\n }\n}\n\n// 轮盘\nconst rouletteSpriteSrc = require(`../images/roulette/sprite.png`)\nfunction RouletteWaybill(ctb, unit, rows, cols, data, billnumber) {\n const $Type = $store.state.config.$Type\n const $lang = $store.state.config.$lang\n ctb.clearRect(0, 0, unit * (cols + 1), unit * (rows + 1))\n const sprite = new Image()\n sprite.crossOrigin = \"anonymous\"\n sprite.src = rouletteSpriteSrc\n let W = 0,\n H = 0,\n spriteArry = []\n sprite.onload = () => {\n W = sprite.width / 2\n H = sprite.height / 3\n spriteArry = {\n blue: [0, 0],\n red: [0, 1],\n green: [0, 2],\n black: [1, 2]\n }\n\n if (data) {\n inputData(data.showRoad, \"showRoad\")\n // console.log(data)\n if (billnumber == 3) {\n // console.log(data.bigRoadBS)\n inputData(data.bigRoadBS, \"bigRoadBS\")\n inputData(data.bigRoadSP, \"bigRoadSP\")\n }\n }\n\n drawLine()\n }\n\n function inputData(data, type) {\n // 数据截取\n let newData = []\n const L = data.length\n let Tab = cols - 1\n if (billnumber == 3) {\n Tab = parseInt(cols / 3) - 1\n }\n let cut = 0\n if (L <= Tab) {\n newData = data\n } else {\n newData = data.filter((v) => v.show_x > data[L - 1].show_x - Tab)\n if (newData.length > 0) {\n cut = newData[0].show_x\n }\n }\n // 绘制图标\n if (type == \"showRoad\") {\n newData.forEach((v, i) => {\n drawIcon(type, v.show_x - cut - 1, v.show_y - 1, v.result)\n })\n } else if (type == \"bigRoadBS\") {\n // console.log(newData)\n newData.forEach((v) => {\n drawIcon(type, v.show_x - cut + Tab + 1, v.show_y - 1, v.result)\n })\n } else if (type == \"bigRoadSP\") {\n newData.forEach((v) => {\n drawIcon(type, v.show_x - cut + Tab * 2 + 2, v.show_y - 1, v.result)\n })\n }\n }\n function drawIcon(type, x, y, text) {\n let position = [0, 0]\n if (type == \"showRoad\") {\n const isBlack = [\n \"2\",\n \"4\",\n \"6\",\n \"8\",\n \"10\",\n \"11\",\n \"13\",\n \"15\",\n \"17\",\n \"20\",\n \"22\",\n \"24\",\n \"26\",\n \"28\",\n \"29\",\n \"31\",\n \"33\",\n \"35\"\n ].includes(text)\n const isRed = [\n \"1\",\n \"3\",\n \"5\",\n \"7\",\n \"9\",\n \"12\",\n \"14\",\n \"16\",\n \"18\",\n \"19\",\n \"21\",\n \"23\",\n \"25\",\n \"27\",\n \"30\",\n \"32\",\n \"34\",\n \"36\"\n ].includes(text)\n if (text == 0) {\n position = spriteArry.green\n } else if (isBlack) {\n position = spriteArry.black\n } else if (isRed) {\n position = spriteArry.red\n }\n } else if (type == \"bigRoadBS\") {\n if (text == 1) {\n text = $Type == \"cn\" || $Type == \"tw\" ? $lang[$Type].big : \"B\"\n position = spriteArry.red\n } else if (text == 2) {\n text = $Type == \"cn\" || $Type == \"tw\" ? $lang[$Type].small : \"S\"\n position = spriteArry.blue\n } else if (text == 3) {\n text = $Type == \"cn\" || $Type == \"tw\" ? $lang[$Type].zero : \"Z\"\n position = spriteArry.green\n }\n } else if (type == \"bigRoadSP\") {\n if (text == 1) {\n text = $Type == \"cn\" || $Type == \"tw\" ? $lang[$Type].even : \"E\"\n position = spriteArry.red\n } else if (text == 2) {\n text = $Type == \"cn\" || $Type == \"tw\" ? $lang[$Type].odd : \"O\"\n position = spriteArry.blue\n } else if (text == 3) {\n text = $Type == \"cn\" || $Type == \"tw\" ? $lang[$Type].zero : \"Z\"\n position = spriteArry.green\n }\n }\n\n ctb.drawImage(\n sprite,\n position[0] * W,\n position[1] * H,\n W,\n H,\n unit * x + unit * 0.05,\n unit * y + (unit / W) * H * 0.05,\n unit * 0.9,\n (unit / W) * H * 0.9\n )\n ctb.font = `bold ${unit * 0.58}px Arial`\n ctb.fillStyle = \"#fff\"\n ctb.textAlign = \"center\"\n ctb.textBaseline = \"middle\"\n ctb.fillText(text, unit * (x + 0.5), unit * (y + 0.55))\n }\n\n function drawLine() {\n const CanvasWidht = unit * cols\n const CanvasHeight = unit * rows\n ctb.lineWidth = 1\n ctb.strokeStyle = \"#deded9\"\n ctb.beginPath()\n for (let i = 0; i <= rows; i++) {\n ctb.moveTo(0, unit * i)\n ctb.lineTo(CanvasWidht, unit * i)\n }\n for (let j = 0; j <= cols; j++) {\n ctb.moveTo(unit * j, 0)\n ctb.lineTo(unit * j, CanvasHeight)\n }\n ctb.closePath()\n ctb.stroke()\n }\n}\n\nexport {\n autoask,\n waybillAsk,\n waybillConfig,\n halfwayConfig,\n Waybill,\n WaybillbigRoad,\n NNcanvas,\n ToningWaybill,\n DiceWaybill,\n RouletteWaybill,\n HalfWay\n}\n"],"mappings":"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"},"metadata":{},"sourceType":"module","externalDependencies":[]} |