diff --git a/locales/ja.yml b/locales/ja.yml index 052dd59971..80fb50ea3e 100644 --- a/locales/ja.yml +++ b/locales/ja.yml @@ -54,6 +54,7 @@ common: update-available: "Misskeyの新しいバージョンがあります({newer}。現在{current}を利用中)。ページを再度読み込みすると更新が適用されます。" my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。" i-like-sushi: "私は(プリンよりむしろ)寿司が好き" + show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示" widgets: analog-clock: "アナログ時計" diff --git a/src/client/app/common/views/components/reversi.game.vue b/src/client/app/common/views/components/reversi.game.vue index dc79c95bb8..b38ca856ab 100644 --- a/src/client/app/common/views/components/reversi.game.vue +++ b/src/client/app/common/views/components/reversi.game.vue @@ -13,14 +13,23 @@

-
-
- - +
+
+ {{ String.fromCharCode(96 + i) }} +
+
+
+
{{ i }}
+
+
+
+ + +
+
@@ -92,6 +101,12 @@ export default Vue.extend({ isMyTurn(): boolean { if (this.turnUser == null) return null; return this.turnUser.id == this.$store.state.i.id; + }, + cellsStyle(): any { + return { + 'grid-template-rows': `repeat(${ this.game.settings.map.length }, 1fr)`, + 'grid-template-columns': `repeat(${ this.game.settings.map[0].length }, 1fr)` + }; } }, @@ -244,54 +259,97 @@ export default Vue.extend({ border-bottom dashed 1px #c4cdd4 > .board - display grid - grid-gap 4px width 350px height 350px margin 0 auto - > div - background transparent - border-radius 6px - overflow hidden + $label-size = 32px + $gap = 4px - * - pointer-events none - user-select none + > .labels-x + height $label-size + padding-left $label-size + display flex - &.empty - border solid 2px #eee + > * + flex 1 + display flex + align-items center + justify-content center - &.empty.can - background #eee + &:first-child + margin-left -($gap / 2) - &.empty.myTurn - border-color #ddd + &:last-child + margin-right -($gap / 2) - &.can - background #eee - cursor pointer + > .flex + display flex - &:hover - border-color darken($theme-color, 10%) - background $theme-color + > .labels-y + width $label-size + display flex + flex-direction column - &:active - background darken($theme-color, 10%) + > * + flex 1 + display flex + align-items center + justify-content center - &.prev - box-shadow 0 0 0 4px rgba($theme-color, 0.7) + &:first-child + margin-top -($gap / 2) - &.isEnded - border-color #ddd + &:last-child + margin-bottom -($gap / 2) - &.none - border-color transparent !important + > .cells + flex 1 + display grid + grid-gap $gap - > img - display block - width 100% - height 100% + > div + background transparent + border-radius 6px + overflow hidden + + * + pointer-events none + user-select none + + &.empty + border solid 2px #eee + + &.empty.can + background #eee + + &.empty.myTurn + border-color #ddd + + &.can + background #eee + cursor pointer + + &:hover + border-color darken($theme-color, 10%) + background $theme-color + + &:active + background darken($theme-color, 10%) + + &.prev + box-shadow 0 0 0 4px rgba($theme-color, 0.7) + + &.isEnded + border-color #ddd + + &.none + border-color transparent !important + + > img + display block + width 100% + height 100% > .graph display grid diff --git a/src/client/app/desktop/views/components/settings.vue b/src/client/app/desktop/views/components/settings.vue index 536d270dce..74ab45626d 100644 --- a/src/client/app/desktop/views/components/settings.vue +++ b/src/client/app/desktop/views/components/settings.vue @@ -54,6 +54,7 @@ %i18n:@show-maps-desc% +
@@ -369,6 +370,12 @@ export default Vue.extend({ value: v }); }, + onChangeReversiBoardLabels(v) { + this.$store.dispatch('settings/set', { + key: 'reversiBoardLabels', + value: v + }); + }, onChangeGradientWindowHeader(v) { this.$store.dispatch('settings/set', { key: 'gradientWindowHeader', diff --git a/src/client/app/mobile/views/pages/settings.vue b/src/client/app/mobile/views/pages/settings.vue index 34482fccba..89e5eaff67 100644 --- a/src/client/app/mobile/views/pages/settings.vue +++ b/src/client/app/mobile/views/pages/settings.vue @@ -13,6 +13,7 @@ %i18n:@dark-mode% %i18n:@circle-icons% %i18n:common.i-like-sushi% + %i18n:common.show-reversi-board-labels%
%i18n:@timeline%
@@ -182,6 +183,13 @@ export default Vue.extend({ }); }, + onChangeReversiBoardLabels(v) { + this.$store.dispatch('settings/set', { + key: 'reversiBoardLabels', + value: v + }); + }, + onChangeShowReplyTarget(v) { this.$store.dispatch('settings/set', { key: 'showReplyTarget', diff --git a/src/client/app/store.ts b/src/client/app/store.ts index 1bc39ae66d..dfb24bb5f4 100644 --- a/src/client/app/store.ts +++ b/src/client/app/store.ts @@ -19,7 +19,8 @@ const defaultSettings = { loadRemoteMedia: true, disableViaMobile: false, memo: null, - iLikeSushi: false + iLikeSushi: false, + reversiBoardLabels: false }; const defaultDeviceSettings = {