diff options
-rw-r--r-- | play.js | 66 |
1 files changed, 39 insertions, 27 deletions
@@ -732,16 +732,16 @@ function layout_influence() { e.style.left = 25 + 71 * view.inf[VE] + "px" } -function layout_pieces(list, xorig, yorig, discs, s) { +function layout_pieces(mains, xorig, yorig, discs, s, others) { const dx = 17 const dy = 11 let off_x = 0 let off_y = 0 - function layout_piece_rowcol(nrow, ncol, row, col, e, z) { + function layout_piece_rowcol(nrow, ncol, row, col, e, z, offset_x, offset_y) { // basic piece size = 29x36 - let x = xorig - (row * dx - col * dx) - 15 + off_x - let y = yorig - (row * dy + col * dy) - 24 + off_y + let x = xorig - (row * dx - col * dx) - 15 + off_x + offset_x + let y = yorig - (row * dy + col * dy) - 24 + off_y + offset_y let xo = e.my_x_offset let yo = e.my_y_offset e.style.left = (xo + x) + "px" @@ -752,7 +752,7 @@ function layout_pieces(list, xorig, yorig, discs, s) { e.my_z = z } - if (list.length > 0) { + function layout_p(list, offset_x=0, offset_y=0) { let nrow = Math.round(Math.sqrt(list.length)) let ncol = Math.ceil(list.length / nrow) let z = 50 @@ -764,11 +764,21 @@ function layout_pieces(list, xorig, yorig, discs, s) { for (let row = 0; row < nrow; ++row) for (let col = 0; col < ncol; ++col) if (i < list.length) - layout_piece_rowcol(nrow, ncol, row, col, list[list.length-(++i)], z--) + layout_piece_rowcol(nrow, ncol, row, col, list[list.length-(++i)], z--, offset_x, offset_y) } + if (mains.length > 0) { layout_p(mains) } + if (discs) layout_discs(discs, xorig + off_x, yorig + 12 + off_y, s) + + if (others && others.length > 0) { + let nrow = Math.round(Math.sqrt(mains.length)) + let ncol = Math.ceil(mains.length / nrow) + console.log(nrow, ncol) + layout_p(others, 21 + 5*nrow, 17 + 9*ncol) + } + } function place_piece(p, x, y, z) { @@ -783,7 +793,7 @@ function place_piece(p, x, y, z) { function layout_discs(list, xc, yc, s) { if (list.length === 1) { - place_piece(list[0], xc - 20 + 32, yc - 10, 52) + place_piece(list[0], xc - 20 - 32, yc - 10, 52) } if (list.length === 2) { place_piece(list[0], xc - 20 + 18, yc - 0, 52) @@ -1064,35 +1074,37 @@ function on_update() { layout_score() - let items = [ ] + let elites = [ ] + let troops = [ ] let discs = [ ] + let items = [ ] for (let s = 0; s < data.spaces.length; ++s) { let xy if (s <= last_province) { - items.length = discs.length = 0 + troops.length = elites.length = discs.length = 0 filter_piece_list(discs, s, DS, DISC) - filter_piece_list(items, s, DS, ELITE) - filter_piece_list(items, s, DS, TROOPS) + filter_piece_list(elites, s, DS, ELITE) + filter_piece_list(troops, s, DS, TROOPS) xy = get_layout_xy(s, "DS") - layout_pieces(items, xy[0], xy[1], discs, DS) + layout_pieces(troops, xy[0], xy[1], discs, DS, elites) - items.length = discs.length = 0 + troops.length = elites.length = discs.length = 0 filter_piece_list(discs, s, BK, DISC) - filter_piece_list(items, s, BK, ELITE) + filter_piece_list(elites, s, BK, ELITE) xy = get_layout_xy(s, "BK") - layout_pieces(items, xy[0], xy[1], discs, BK) + layout_pieces(elites, xy[0], xy[1], discs, BK) - items.length = discs.length = 0 + troops.length = elites.length = discs.length = 0 filter_piece_list(discs, s, VE, DISC) - filter_piece_list(items, s, VE, ELITE) + filter_piece_list(elites, s, VE, ELITE) xy = get_layout_xy(s, "VE") - layout_pieces(items, xy[0], xy[1], discs, VE) + layout_pieces(elites, xy[0], xy[1], discs, VE) - items.length = discs.length = 0 - filter_piece_list(items, s, MI, TROOPS) + troops.length = elites.length = discs.length = 0 + filter_piece_list(troops, s, MI, TROOPS) xy = get_layout_xy(s, "mongols") - layout_pieces(items, xy[0], xy[1], discs, MI) + layout_pieces(troops, xy[0], xy[1], discs, MI) } else if (s <= S_VE_AVAILABLE) { ui.spaces[s].classList.toggle("action", is_action("space", s)) } else if (s <= S_BK_INF_4) { @@ -1133,19 +1145,19 @@ function on_update() { // layout cavalry items.length = 0 filter_calvary_tokens(items, DS) - layout_cavalry(items, 1125, 120, 14) + layout_cavalry(items, 1125, 100, 14) items.length = 0 filter_calvary_tokens(items, BK) - layout_cavalry(items, 200, 935, 14) + layout_cavalry(items, 265, 920, 14) items.length = 0 filter_calvary_tokens(items, VE) - layout_cavalry(items, 200, 1435, 14) + layout_cavalry(items, 265, 1420, 14) items.length = 0 filter_calvary_tokens(items, AVAILABLE) - layout_cavalry(items, 725, 90, 14) + layout_cavalry(items, 1186, 1080, 17) // layout pieces items.length = 0 @@ -1157,12 +1169,12 @@ function on_update() { items.length = 0 filter_piece_list(items, AVAILABLE, BK, DISC) layout_available_bases(items, 258, 1060, 1, 45, 0) - layout_available(BK, ELITE, 135, 975) + layout_available(BK, ELITE, 125, 1000) items.length = 0 filter_piece_list(items, AVAILABLE, VE, DISC) layout_available_bases(items, 258, 1560, 1, 45, 0) - layout_available(VE, ELITE, 135, 1475) + layout_available(VE, ELITE, 125, 1500) layout_available(MI, TROOPS, 100, 155) |