@johnmorrisdotca/kyogijo-stadiums 0.20.0 → 0.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +17 -0
- package/NOTICE.md +1 -1
- package/README.md +41 -25
- package/dist/budo/describe.js +26 -0
- package/dist/budo/looks.d.ts +2 -0
- package/dist/budo/looks.js +12 -0
- package/dist/budo/mat.d.ts +34 -0
- package/dist/budo/mat.js +71 -0
- package/dist/budo/plan.d.ts +5 -1
- package/dist/budo/plan.js +20 -4
- package/dist/budo/ring.d.ts +47 -0
- package/dist/budo/ring.js +80 -0
- package/dist/budo/types.d.ts +9 -5
- package/dist/budo.style.js +14 -4
- package/dist/crowd.js +4 -0
- package/dist/draw.js +5 -3
- package/dist/features.js +19 -0
- package/dist/fields.types.d.ts +3 -3
- package/dist/heat.zones.js +1 -1
- package/dist/homeside.js +4 -0
- package/dist/leagues/combat.d.ts +91 -2
- package/dist/leagues/combat.js +77 -1
- package/dist/leagues/sources.js +7 -0
- package/dist/leagues/types.d.ts +1 -1
- package/dist/leagues.d.ts +1 -1
- package/dist/leagues.js +43 -3
- package/dist/outline.js +2 -0
- package/dist/ranges.names.js +2 -0
- package/dist/score.js +6 -0
- package/dist/strings.d.ts +14 -1
- package/dist/strings.js +36 -10
- package/dist/turn.kit.d.ts +1 -1
- package/dist/turn.style.js +5 -0
- package/dist/types.d.ts +2 -2
- package/dist/units.js +4 -0
- package/dist/uprights.budo.js +9 -1
- package/dist/uprights.js +1 -1
- package/dist/uprights.ring.d.ts +12 -0
- package/dist/uprights.ring.js +76 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
package/dist/leagues.js
CHANGED
|
@@ -15,7 +15,7 @@ import { FIELD_HOCKEY_LEAGUES, fieldHockeyInFeet } from "./leagues/fieldhockey.j
|
|
|
15
15
|
import { ATHLETICS_LEAGUES, athleticsInFeet } from "./leagues/athletics.js";
|
|
16
16
|
import { longOval, outerEdge } from "./skating/track.js";
|
|
17
17
|
import { SKATING_LEAGUES, skatingInFeet } from "./leagues/skating.js";
|
|
18
|
-
import { MMA_LEAGUES } from "./leagues/combat.js";
|
|
18
|
+
import { BOXING_LEAGUES, MMA_LEAGUES, WRESTLING_LEAGUES } from "./leagues/combat.js";
|
|
19
19
|
import { BUDO_LEAGUES, DOJO_LEAGUES, JUDO_LEAGUES, KARATE_LEAGUES, KENDO_LEAGUES, KYUDO_LEAGUES, SUMO_LEAGUES } from "./leagues/budo.js";
|
|
20
20
|
import { GAELIC_LEAGUES, gaelicInFeet } from "./leagues/gaelic.js";
|
|
21
21
|
import { HANDBALL_LEAGUES, handballInFeet } from "./leagues/handball.js";
|
|
@@ -28,10 +28,10 @@ export { LEAGUE_SOURCES };
|
|
|
28
28
|
export { AFL_GROUNDS } from "./leagues/aussie.js";
|
|
29
29
|
export { WA_STANDARD_TRACK, WA_SHORT_TRACK, WA_STAGGER_TABLE, WA_SHORT_STAGGER_TABLE } from "./leagues/athletics.js";
|
|
30
30
|
export { ISU_LONG_TRACK, ISU_SHORT_TRACK, ISU_FIGURE_RINK, ISU_LONG_TRACK_TABLE } from "./leagues/skating.js";
|
|
31
|
-
export { IMMAF_CAGE, MMA_LEAGUES, NRUC_CAGE } from "./leagues/combat.js";
|
|
31
|
+
export { BOXING_LEAGUES, IMMAF_CAGE, MMA_LEAGUES, NRUC_CAGE, NCAA_MAT, NFHS_MAT, NRUC_RING, UWW_MAT, WBC_AMATEUR_RING, WISCONSIN_RING, WRESTLING_LEAGUES } from "./leagues/combat.js";
|
|
32
32
|
export { AJJF_CONTEST, BUDO_LEAGUES, ENTEKI, FIK_SHIAI_JO, IJF_CONTEST, IJF_KATA, JSA_DOHYO, KINTEKI, WKF_KATA, WKF_KUMITE } from "./leagues/budo.js";
|
|
33
33
|
/** The family of surface each sport draws; soccer's variants are its pitches (`pitch`), not leagues. */
|
|
34
|
-
export const FAMILY_OF = Object.freeze({ nfl: "football", cfl: "football", ifaf: "football", nhl: "hockey", nba: "basketball", mlb: "baseball", soccer: undefined, curling: "curling", tennis: "tennis", volleyball: "volleyball", badminton: "badminton", pickleball: "pickleball", tabletennis: "tabletennis", padel: "padel", squash: "squash", racquetball: "racquetball", sepaktakraw: "sepaktakraw", teqball: "teqball", roundnet: "roundnet", netball: "netball", lacrosse: "lacrosse", rugby: "rugby", afl: "afl", gaelic: "gaelic", cricket: "cricket", fieldhockey: "fieldhockey", handball: "handball", swimming: undefined, waterpolo: undefined, diving: undefined, artisticswimming: undefined, athletics: "athletics", skating: "skating", judo: "judo", karate: "karate", kendo: "kendo", sumo: "sumo", kyudo: "kyudo", dojo: "dojo", mma: "mma" });
|
|
34
|
+
export const FAMILY_OF = Object.freeze({ nfl: "football", cfl: "football", ifaf: "football", nhl: "hockey", nba: "basketball", mlb: "baseball", soccer: undefined, curling: "curling", tennis: "tennis", volleyball: "volleyball", badminton: "badminton", pickleball: "pickleball", tabletennis: "tabletennis", padel: "padel", squash: "squash", racquetball: "racquetball", sepaktakraw: "sepaktakraw", teqball: "teqball", roundnet: "roundnet", netball: "netball", lacrosse: "lacrosse", rugby: "rugby", afl: "afl", gaelic: "gaelic", cricket: "cricket", fieldhockey: "fieldhockey", handball: "handball", swimming: undefined, waterpolo: undefined, diving: undefined, artisticswimming: undefined, athletics: "athletics", skating: "skating", judo: "judo", karate: "karate", kendo: "kendo", sumo: "sumo", kyudo: "kyudo", dojo: "dojo", mma: "mma", boxing: "boxing", wrestling: "wrestling" });
|
|
35
35
|
/**
|
|
36
36
|
* The leagues each sport can draw, in the order a menu lists them, the sport's own first (the three football sports share their
|
|
37
37
|
* list, the football leagues). Soccer and the pools have none.
|
|
@@ -78,6 +78,8 @@ export const LEAGUES = Object.freeze({
|
|
|
78
78
|
kyudo: KYUDO_LEAGUES,
|
|
79
79
|
dojo: DOJO_LEAGUES,
|
|
80
80
|
mma: MMA_LEAGUES,
|
|
81
|
+
boxing: BOXING_LEAGUES,
|
|
82
|
+
wrestling: WRESTLING_LEAGUES,
|
|
81
83
|
});
|
|
82
84
|
/** Every league of every family, once each. */
|
|
83
85
|
export const VARIANTS = Object.freeze([...BASKETBALL_LEAGUES, ...HOCKEY_LEAGUES, ...FOOTBALL_LEAGUES, ...BASEBALL_LEAGUES, ...CURLING_LEAGUES, ...TENNIS_LEAGUES, ...VOLLEYBALL_LEAGUES, ...BADMINTON_LEAGUES, ...PICKLEBALL_LEAGUES, ...TABLE_TENNIS_LEAGUES, ...PADEL_LEAGUES, ...SQUASH_LEAGUES, ...RACQUETBALL_LEAGUES, ...SEPAK_TAKRAW_LEAGUES, ...TEQBALL_LEAGUES, ...ROUNDNET_LEAGUES, ...NETBALL_LEAGUES, ...LACROSSE_LEAGUES, ...RUGBY_LEAGUES, ...AFL_LEAGUES, ...GAELIC_LEAGUES, ...CRICKET_LEAGUES, ...FIELD_HOCKEY_LEAGUES, ...HANDBALL_LEAGUES, ...ATHLETICS_LEAGUES, ...BUDO_LEAGUES]);
|
|
@@ -333,6 +335,20 @@ export function leagueSize(sport, id, unit) {
|
|
|
333
335
|
feet = { length: convertLength(length, "m", "ft"), width: convertLength(frontage, "m", "ft") };
|
|
334
336
|
break;
|
|
335
337
|
}
|
|
338
|
+
case "wrestling": {
|
|
339
|
+
// The mat's square: the circle with the matted area round it.
|
|
340
|
+
const d = league.dimensions;
|
|
341
|
+
const m = d.circle.drawn + 2 * d.border.drawn;
|
|
342
|
+
feet = { length: convertLength(m, "m", "ft"), width: convertLength(m, "m", "ft") };
|
|
343
|
+
break;
|
|
344
|
+
}
|
|
345
|
+
case "boxing": {
|
|
346
|
+
// The platform: the ring at the size drawn, with its apron.
|
|
347
|
+
const d = league.dimensions;
|
|
348
|
+
const m = d.size.drawn + 2 * Math.max(d.apron.drawn, d.post.fromRopes + d.post.pad / 2 + 0.02);
|
|
349
|
+
feet = { length: convertLength(m, "m", "ft"), width: convertLength(m, "m", "ft") };
|
|
350
|
+
break;
|
|
351
|
+
}
|
|
336
352
|
case "mma": {
|
|
337
353
|
// The platform: the cage at the size drawn, with its apron.
|
|
338
354
|
const d = league.dimensions;
|
|
@@ -694,6 +710,30 @@ export function leagueFigures(league) {
|
|
|
694
710
|
["shajō", `${f.hall.depth} m deep, ${f.hall.side} m from the end shooters to the walls, ceiling ${f.ceiling} m`],
|
|
695
711
|
];
|
|
696
712
|
}
|
|
713
|
+
case "wrestling": {
|
|
714
|
+
const f = league.dimensions;
|
|
715
|
+
const ft = (m) => `${Math.round((m / 0.3048) * 100) / 100} ft`;
|
|
716
|
+
const m = (v) => `${Math.round(v * 100) / 100} m`;
|
|
717
|
+
const sized = f.circle.min === f.circle.max ? m(f.circle.min) : `${ft(f.circle.min)} to ${ft(f.circle.max)}`;
|
|
718
|
+
return [
|
|
719
|
+
["wrestling area", `a circle of ${sized}`],
|
|
720
|
+
["matted area", `${f.border.min === f.border.max ? m(f.border.min) : `at least ${ft(f.border.min)}`} round the circle`],
|
|
721
|
+
...(f.passivity > 0 ? [["passivity band", `${m(f.passivity)} wide inside the circle`]] : []),
|
|
722
|
+
...(f.centre === null ? [] : [["centre circle", `${f.centre.diameter >= 3 ? ft(f.centre.diameter) : m(f.centre.diameter)} across`]]),
|
|
723
|
+
...(f.lines === null ? [] : [["starting lines", `two of ${Math.round(f.lines.width / 0.0254)} inch, ${ft(f.lines.length)} long, ${Math.round(f.lines.apart / 0.0254)} inches apart`]]),
|
|
724
|
+
];
|
|
725
|
+
}
|
|
726
|
+
case "boxing": {
|
|
727
|
+
const f = league.dimensions;
|
|
728
|
+
const ft = (m) => `${Math.round((m / 0.3048) * 100) / 100} ft`;
|
|
729
|
+
const sized = f.size.min === f.size.max ? `${ft(f.size.min)} square` : `${ft(f.size.min)} to ${ft(f.size.max)} square`;
|
|
730
|
+
return [
|
|
731
|
+
["ring", `${sized} within the ropes`],
|
|
732
|
+
["platform", `at most ${ft(f.platform.height.max)} high, with ${f.platform.steps.sets} sets of steps`],
|
|
733
|
+
["ropes", `${f.ropes.count} at ${f.ropes.heights.map((h) => `${Math.round((h / 0.0254) * 10) / 10} in`).join(", ")}`],
|
|
734
|
+
["posts", `${Math.round((f.post.height / 0.0254) * 10) / 10} in over the ring floor, ${Math.round((f.post.fromRopes / 0.0254) * 10) / 10} in from the ropes`],
|
|
735
|
+
];
|
|
736
|
+
}
|
|
697
737
|
case "mma": {
|
|
698
738
|
const f = league.dimensions;
|
|
699
739
|
const ft = (m) => `${Math.round((m / 0.3048) * 100) / 100} ft`;
|
package/dist/outline.js
CHANGED
package/dist/ranges.names.js
CHANGED
|
@@ -79,6 +79,8 @@ export const RANGES = Object.freeze({
|
|
|
79
79
|
kyudo: Object.freeze([range("shajo"), range("yamichi"), range("azuchi")]),
|
|
80
80
|
dojo: Object.freeze([range("kamiza"), range("half", "left")]),
|
|
81
81
|
mma: Object.freeze([range("cage"), range("gate"), range("half", "left")]),
|
|
82
|
+
boxing: Object.freeze([range("ropes"), range("corner"), range("half", "left")]),
|
|
83
|
+
wrestling: Object.freeze([range("start"), range("passivity", undefined, ["uww"]), range("half", "left")]),
|
|
82
84
|
});
|
|
83
85
|
const isNumber = (value) => typeof value === "number" && Number.isFinite(value);
|
|
84
86
|
/**
|
package/dist/score.js
CHANGED
|
@@ -218,6 +218,12 @@ export function glyph(sport) {
|
|
|
218
218
|
case "dojo":
|
|
219
219
|
// A dojo: a floor of mats laid so that no four corners meet.
|
|
220
220
|
return "M-14 -10H14V10H-14ZM-14 0H14M-5 -10V0M5 0V10";
|
|
221
|
+
case "wrestling":
|
|
222
|
+
// A mat: the square, the circle, the passivity band and the circle in the middle.
|
|
223
|
+
return "M-10 -10H10V10H-10ZM-8 0A8 8 0 1 0 8 0A8 8 0 1 0 -8 0M-5.5 0A5.5 5.5 0 1 0 5.5 0A5.5 5.5 0 1 0 -5.5 0M-1 0A1 1 0 1 0 1 0A1 1 0 1 0 -1 0";
|
|
224
|
+
case "boxing":
|
|
225
|
+
// A ring: the platform's square, the ropes and the four posts.
|
|
226
|
+
return "M-10 -10H10V10H-10ZM-6 -6H6V6H-6ZM-8 -8L-6 -6M8 -8L6 -6M-8 8L-6 6M8 8L6 6";
|
|
221
227
|
case "mma":
|
|
222
228
|
// An eight-sided cage on its platform: the platform's square, the octagon of the fence and the two gates.
|
|
223
229
|
return "M-10 -10H10V10H-10ZM-3 -7L3 -7L7 -3L7 3L3 7L-3 7L-7 3L-7 -3ZM-2 -7V-10M2 -7V-10M-2 7V10M2 7V10";
|
package/dist/strings.d.ts
CHANGED
|
@@ -446,6 +446,19 @@ export interface KyogijoWords {
|
|
|
446
446
|
mmaFloor: string;
|
|
447
447
|
mmaGates: string;
|
|
448
448
|
mmaSteps: string;
|
|
449
|
+
/** A boxing ring: the sentence ({size}, {feet}, {apron}, {platform}), the platform it stands on ({height}) or the floor, and the sentences about its corners and its steps. */
|
|
450
|
+
boxing: string;
|
|
451
|
+
boxingPlatform: string;
|
|
452
|
+
boxingFloor: string;
|
|
453
|
+
boxingCorners: string;
|
|
454
|
+
boxingSteps: string;
|
|
455
|
+
/** A wrestling mat: the UWW's ({circle}, {border}, {band}, {platform}) and a folkstyle mat's ({feet}, {circle}, {border}, {platform}), the platform it stands on ({height}) or the floor, and the sentences about its middle circle ({d}) and its starting lines. */
|
|
456
|
+
wrestlingUww: string;
|
|
457
|
+
wrestlingFolk: string;
|
|
458
|
+
wrestlingPlatform: string;
|
|
459
|
+
wrestlingFloor: string;
|
|
460
|
+
wrestlingCentre: string;
|
|
461
|
+
wrestlingLines: string;
|
|
449
462
|
/** The scoreboards: the heads and the sentences that say what each side scored. */
|
|
450
463
|
board: {
|
|
451
464
|
ippon: string;
|
|
@@ -999,7 +1012,7 @@ export interface KyogijoWords {
|
|
|
999
1012
|
item: string;
|
|
1000
1013
|
itemSag: string;
|
|
1001
1014
|
/** The names of what stands on the surface, by kind. */
|
|
1002
|
-
parts: Record<"scoreboard" | "net" | "antennae" | "goalposts" | "netposts" | "hoop" | "goal" | "boards" | "stumps" | "pylons" | "flags" | "fence" | "backstop" | "foul-poles" | "table-legs" | "walls" | "starting-blocks" | "backstroke-flags" | "false-start-rope" | "springboards" | "platforms" | "judges-stand" | "hurdles" | "steeplechase" | "high-jump" | "pole-vault" | "cage" | "padding" | "rink-boards" | "mound" | "azuchi" | "targets" | "stands" | "wall-seats" | "roof" | "gallery" | "dais" | "banner" | "shrine" | "mat-edge" | "surrounds" | "officials" | "judges" | "deck" | "cage-fence" | "cage-posts", string>;
|
|
1015
|
+
parts: Record<"scoreboard" | "net" | "antennae" | "goalposts" | "netposts" | "hoop" | "goal" | "boards" | "stumps" | "pylons" | "flags" | "fence" | "backstop" | "foul-poles" | "table-legs" | "walls" | "starting-blocks" | "backstroke-flags" | "false-start-rope" | "springboards" | "platforms" | "judges-stand" | "hurdles" | "steeplechase" | "high-jump" | "pole-vault" | "cage" | "padding" | "rink-boards" | "mound" | "azuchi" | "targets" | "stands" | "wall-seats" | "roof" | "gallery" | "dais" | "banner" | "shrine" | "mat-edge" | "surrounds" | "officials" | "judges" | "deck" | "cage-fence" | "cage-posts" | "ring-ropes" | "ring-posts", string>;
|
|
1003
1016
|
};
|
|
1004
1017
|
/** The names of the zones that `zoneAt` answers with (rules.ts), by id. */
|
|
1005
1018
|
rules: Record<RuleId, string>;
|
package/dist/strings.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/** The words of the package, by language. */
|
|
2
2
|
export const KYOGIJO_STRINGS = {
|
|
3
3
|
en: {
|
|
4
|
-
surface: { skating: "Skating rink", nfl: "NFL football field", cfl: "CFL football field", ifaf: "IFAF football field", nhl: "NHL hockey rink", nba: "NBA basketball court", mlb: "Baseball field", soccer: "Soccer pitch", curling: "Curling sheet", tennis: "Tennis court", volleyball: "Volleyball court", badminton: "Badminton court", pickleball: "Pickleball court", tabletennis: "Table tennis table", padel: "Padel court", squash: "Squash court", racquetball: "Racquetball court", sepaktakraw: "Sepak takraw court", teqball: "Teqball court", roundnet: "Roundnet court", netball: "Netball court", lacrosse: "Lacrosse field", rugby: "Rugby union field", afl: "Australian football ground", gaelic: "Gaelic football field", cricket: "Cricket ground", fieldhockey: "Field hockey pitch", handball: "Handball court", swimming: "Swimming pool", waterpolo: "Water polo field", diving: "Diving well", artisticswimming: "Artistic swimming pool", athletics: "Athletics track", judo: "Judo contest area", karate: "Karate competition area", kendo: "Kendo shiai-jo", sumo: "Sumo dohyō", kyudo: "Kyūdō range", dojo: "Dojo", mma: "MMA cage" },
|
|
4
|
+
surface: { skating: "Skating rink", nfl: "NFL football field", cfl: "CFL football field", ifaf: "IFAF football field", nhl: "NHL hockey rink", nba: "NBA basketball court", mlb: "Baseball field", soccer: "Soccer pitch", curling: "Curling sheet", tennis: "Tennis court", volleyball: "Volleyball court", badminton: "Badminton court", pickleball: "Pickleball court", tabletennis: "Table tennis table", padel: "Padel court", squash: "Squash court", racquetball: "Racquetball court", sepaktakraw: "Sepak takraw court", teqball: "Teqball court", roundnet: "Roundnet court", netball: "Netball court", lacrosse: "Lacrosse field", rugby: "Rugby union field", afl: "Australian football ground", gaelic: "Gaelic football field", cricket: "Cricket ground", fieldhockey: "Field hockey pitch", handball: "Handball court", swimming: "Swimming pool", waterpolo: "Water polo field", diving: "Diving well", artisticswimming: "Artistic swimming pool", athletics: "Athletics track", judo: "Judo contest area", karate: "Karate competition area", kendo: "Kendo shiai-jo", sumo: "Sumo dohyō", kyudo: "Kyūdō range", dojo: "Dojo", mma: "MMA cage", boxing: "Boxing ring", wrestling: "Wrestling mat" },
|
|
5
5
|
about: {
|
|
6
6
|
nfl: "an American football field, 120 by 53 and a third yards with its end zones, with a yard line every 5 yards, hash marks, numbers and goal posts",
|
|
7
7
|
cfl: "a Canadian football field, 150 by 65 yards with its 20-yard end zones, with a yard line every 5 yards, hash marks, numbers and goal posts on the goal lines",
|
|
@@ -43,6 +43,8 @@ export const KYOGIJO_STRINGS = {
|
|
|
43
43
|
kyudo: "a kyūdōjō for kinteki: a shajō with five shooting positions, 28 metres from the targets at the azuchi",
|
|
44
44
|
dojo: "a dojo of 20 jō of tatami",
|
|
45
45
|
mma: "an MMA cage: an eight-sided fenced area 9.14 metres (30 feet) across, on a platform 122 centimetres high",
|
|
46
|
+
boxing: "a boxing ring: a square of 6.1 metres (20 feet) inside the ropes, on a platform 122 centimetres high",
|
|
47
|
+
wrestling: "a wrestling mat of the UWW: a circle 9 metres across in a protection area 1.5 metres wide, with an orange passivity band inside the circle, on a platform 1 metre high",
|
|
46
48
|
},
|
|
47
49
|
status: { final: "Final", "final-ot": "Final/OT", "final-so": "Final/SO", "final-aet": "Final/AET", "final-pens": "Final/Pens", live: "Live", half: "Halftime", "extra-time": "Extra time", "extra-end": "Extra end", penalties: "Penalties", postponed: "Postponed", tiebreak: "Tiebreak", "match-tiebreak": "Match tiebreak", retired: "Retired", walkover: "Walkover" },
|
|
48
50
|
endStatus: "End {n}",
|
|
@@ -232,6 +234,17 @@ export const KYOGIJO_STRINGS = {
|
|
|
232
234
|
mmaFloor: "at floor level",
|
|
233
235
|
mmaGates: "It has two gates, opposite each other.",
|
|
234
236
|
mmaSteps: "Steps lead up to the platform at each gate.",
|
|
237
|
+
boxing: "a boxing ring: a square of {size} metres ({feet} feet) inside four ropes, on a canvas with an apron {apron} centimetres wide beyond them and a padded post in each corner, {platform}",
|
|
238
|
+
boxingPlatform: "on a platform {height} centimetres high",
|
|
239
|
+
boxingFloor: "at floor level",
|
|
240
|
+
boxingCorners: "The corners are red and blue for the two boxers and white for the neutral ones.",
|
|
241
|
+
boxingSteps: "Three sets of steps lead up to the platform: one in each boxer's corner and one in a neutral corner.",
|
|
242
|
+
wrestlingUww: "a wrestling mat of the UWW, for freestyle and Greco-Roman wrestling: a circle {circle} metres across in a protection area {border} metres wide, with an orange passivity band {band} metre wide inside the circle, {platform}",
|
|
243
|
+
wrestlingFolk: "a folkstyle wrestling mat: a circle {feet} feet ({circle} metres) across in a matted area {border} feet wide, {platform}",
|
|
244
|
+
wrestlingPlatform: "on a platform {height} metres high",
|
|
245
|
+
wrestlingFloor: "on the floor of the hall",
|
|
246
|
+
wrestlingCentre: "A circle {d} metres across marks the middle.",
|
|
247
|
+
wrestlingLines: "Two parallel starting lines at the middle are closed at their ends by a green line and a red line.",
|
|
235
248
|
board: {
|
|
236
249
|
ippon: "Ippon", wazaari: "Waza-ari", yuko: "Yuko", shido: "Shido", senshu: "Senshu", chui: "Chui", points: "Points", kimarite: "Kimarite",
|
|
237
250
|
techniques: { men: "Men", kote: "Kote", do: "Dō", tsuki: "Tsuki", hansoku: "Hansoku" },
|
|
@@ -293,7 +306,7 @@ export const KYOGIJO_STRINGS = {
|
|
|
293
306
|
results: { touchdown: "touchdown", "field-goal": "field goal", "missed-field-goal": "missed field goal", punt: "punt", turnover: "turnover", interception: "interception", fumble: "fumble", downs: "turnover on downs", safety: "safety", "end-of-half": "end of the half" },
|
|
294
307
|
},
|
|
295
308
|
special: {
|
|
296
|
-
guest: { skating: "rink", nfl: "football field", cfl: "football field", ifaf: "football field", nhl: "rink", nba: "court", mlb: "baseball field", soccer: "pitch", curling: "sheet", tennis: "court", volleyball: "court", badminton: "court", pickleball: "court", tabletennis: "table", padel: "court", squash: "court", racquetball: "court", sepaktakraw: "court", teqball: "court", roundnet: "court", netball: "court", lacrosse: "field", rugby: "field", afl: "ground", gaelic: "field", cricket: "ground", fieldhockey: "pitch", handball: "court", swimming: "pool", waterpolo: "pool", diving: "well", artisticswimming: "pool", athletics: "track", judo: "contest area", karate: "competition area", kendo: "shiai-jo", sumo: "dohyō", kyudo: "range", dojo: "dojo", mma: "cage" },
|
|
309
|
+
guest: { skating: "rink", nfl: "football field", cfl: "football field", ifaf: "football field", nhl: "rink", nba: "court", mlb: "baseball field", soccer: "pitch", curling: "sheet", tennis: "court", volleyball: "court", badminton: "court", pickleball: "court", tabletennis: "table", padel: "court", squash: "court", racquetball: "court", sepaktakraw: "court", teqball: "court", roundnet: "court", netball: "court", lacrosse: "field", rugby: "field", afl: "ground", gaelic: "field", cricket: "ground", fieldhockey: "pitch", handball: "court", swimming: "pool", waterpolo: "pool", diving: "well", artisticswimming: "pool", athletics: "track", judo: "contest area", karate: "competition area", kendo: "shiai-jo", sumo: "dohyō", kyudo: "range", dojo: "dojo", mma: "cage", boxing: "ring", wrestling: "mat" },
|
|
297
310
|
title: "{guest} in {host}",
|
|
298
311
|
game: "{event}, {date}.",
|
|
299
312
|
inside: "The {guest} lies wholly inside the outline of {host}.",
|
|
@@ -388,7 +401,7 @@ export const KYOGIJO_STRINGS = {
|
|
|
388
401
|
boundary: "Boundary", pitch: "Pitch", "bowling-crease": "Bowling crease", "popping-crease": "Popping crease", "return-crease": "Return crease", wicket: "Wicket", "thirty-yard-circle": "30-yard circle",
|
|
389
402
|
"twenty-three-line": "23-metre line", "shooting-circle": "Shooting circle", "penalty-spot": "Penalty spot", "broken-circle-line": "Broken line round the circle", "goal-area-line": "Goal-area line",
|
|
390
403
|
"finish-line": "Finish line", kerb: "Kerb", "lane-lines": "Lane lines", bend: "Bend", straight: "Straight", "infield-pitch": "Soccer pitch", "start-line": "Start line", breakline: "Breakline", "water-jump": "Water jump", "exchange-zone": "Takeover zone",
|
|
391
|
-
"referee-position": "Referee's place", "shiai-jo": "Shiai-jo", floorboard: "Floorboard", heri: "Heri, the mat's edge", "contest-area": "Contest area", "safety-area": "Safety area", "danger-zone": "Danger zone", "start-mark": "Start mark", "common-safe-zone": "Common safe zone", "free-zone": "Free zone", platform: "Platform", "technical-table": "Technical table", "centre-tape": "Centre tape", "kata-judges": "Judges, shomen side", "coach-chair": "Coach's chair", "kata-entry": "Entry and exit, opposite shomen", arena: "Arena floor", "competition-area": "Competition area", "boundary-band": "Boundary band", "start-mat": "Start mat", judge: "Judge", "between-areas": "Between the areas", "centre-cross": "Centre cross", "kaishi-sen": "Kaishi-sen", "outer-boundary": "Outer boundary", dohyo: "Dohyō", ring: "Ring", tawara: "Tawara", tokudawara: "Tokudawara", "shikiri-sen": "Shikiri-sen", "jano-me": "Jano-me", shajo: "Shajō", "shooting-position": "Shooting position", honza: "Honza", yamichi: "Yamichi", "yatori-michi": "Path for the arrows", azuchi: "Azuchi", mato: "Target", kamiza: "Kamiza", "cage-canvas": "Canvas", "cage-fence": "Fence", "cage-post": "Padded post", "cage-gate": "Gate", "cage-steps": "Steps", "cage-platform": "Platform", shimoza: "Shimoza", shinzen: "Shinzen", dais: "Dais, the seat of honour", banner: "Banner", entrance: "Entrance", window: "Window", tatami: "Tatami", wall: "Wall", "inner-lane": "Inner lane", "outer-lane": "Outer lane", "crossing-straight": "Crossing straight", "warm-up-lane": "Warm-up lane", padding: "Padding", infield: "Infield", "coaches-area": "Coaches' area", blocks: "Blocks", "track-line": "Line of the track", "start-lines": "Starting lines", ice: "Ice", "technical-panel": "Technical panel", referee: "Referee", "kiss-and-cry": "Kiss and cry", judges: "Judges", runway: "Runway", "take-off-board": "Take-off board", "landing-area": "Landing area", "throwing-circle": "Throwing circle", sector: "Landing sector", "stop-board": "Stop board", cage: "Cage", "throwing-arc": "Throwing arc", crossbar: "Crossbar", "landing-mat": "Landing mat", "run-up": "Run-up", "zero-line": "Zero line", box: "Box",
|
|
404
|
+
"referee-position": "Referee's place", "shiai-jo": "Shiai-jo", floorboard: "Floorboard", heri: "Heri, the mat's edge", "contest-area": "Contest area", "safety-area": "Safety area", "danger-zone": "Danger zone", "start-mark": "Start mark", "common-safe-zone": "Common safe zone", "free-zone": "Free zone", platform: "Platform", "technical-table": "Technical table", "centre-tape": "Centre tape", "kata-judges": "Judges, shomen side", "coach-chair": "Coach's chair", "kata-entry": "Entry and exit, opposite shomen", arena: "Arena floor", "competition-area": "Competition area", "boundary-band": "Boundary band", "start-mat": "Start mat", judge: "Judge", "between-areas": "Between the areas", "centre-cross": "Centre cross", "kaishi-sen": "Kaishi-sen", "outer-boundary": "Outer boundary", dohyo: "Dohyō", ring: "Ring", tawara: "Tawara", tokudawara: "Tokudawara", "shikiri-sen": "Shikiri-sen", "jano-me": "Jano-me", shajo: "Shajō", "shooting-position": "Shooting position", honza: "Honza", yamichi: "Yamichi", "yatori-michi": "Path for the arrows", azuchi: "Azuchi", mato: "Target", kamiza: "Kamiza", "cage-canvas": "Canvas", "cage-fence": "Fence", "cage-post": "Padded post", "cage-gate": "Gate", "cage-steps": "Steps", "cage-platform": "Platform", "ring-canvas": "Canvas", "ring-ropes": "Ropes", "ring-post": "Corner post", "ring-red-corner": "Red corner", "ring-blue-corner": "Blue corner", "ring-apron": "Apron", "ring-steps": "Steps", "mat-circle": "Wrestling area", "mat-central": "Central surface", "mat-border": "Border of the mat", "mat-passivity": "Passivity zone", "mat-centre-circle": "Centre circle", "mat-starting-lines": "Starting lines", "mat-platform": "Platform", shimoza: "Shimoza", shinzen: "Shinzen", dais: "Dais, the seat of honour", banner: "Banner", entrance: "Entrance", window: "Window", tatami: "Tatami", wall: "Wall", "inner-lane": "Inner lane", "outer-lane": "Outer lane", "crossing-straight": "Crossing straight", "warm-up-lane": "Warm-up lane", padding: "Padding", infield: "Infield", "coaches-area": "Coaches' area", blocks: "Blocks", "track-line": "Line of the track", "start-lines": "Starting lines", ice: "Ice", "technical-panel": "Technical panel", referee: "Referee", "kiss-and-cry": "Kiss and cry", judges: "Judges", runway: "Runway", "take-off-board": "Take-off board", "landing-area": "Landing area", "throwing-circle": "Throwing circle", sector: "Landing sector", "stop-board": "Stop board", cage: "Cage", "throwing-arc": "Throwing arc", crossbar: "Crossbar", "landing-mat": "Landing mat", "run-up": "Run-up", "zero-line": "Zero line", box: "Box",
|
|
392
405
|
"seven-metre-line": "7-metre line", "four-metre-line": "4-metre line", "throw-off-area": "Throw-off area", "restraining-line": "Restraining line", "wing-line": "Wing line", "marking-area": "Marking area", "two-point-arc": "Two-point arc",
|
|
393
406
|
"lane-rope": "Lane rope", "lane-line": "Lane marking on the floor", "lane-end-cross": "Cross line at the end of the lane marking", "fifteen-metre-mark": "15 m mark", "touch-pad": "Touch panel", "starting-block": "Starting block", "backstroke-flags": "Backstroke flags", "false-start-rope": "False start rope", gutter: "Gutter",
|
|
394
407
|
"two-metre-line": "2 m line", "five-metre-mark": "5 m mark", "six-metre-line": "6 m line", "half-distance-line": "Half distance line", "re-entry-area": "Re-entry area", "referee-platform": "Referee platform", "official-table": "Official table", "substitution-area": "Substitution area",
|
|
@@ -408,7 +421,7 @@ export const KYOGIJO_STRINGS = {
|
|
|
408
421
|
"in-goal": "in-goal area", "twenty-two": "area between the try line and the 22-metre line", twenty: "area between the goal line and the 20-metre line", crease: "crease", "forward-fifty": "area inside the fifty metre arc", "centre-square": "centre square",
|
|
409
422
|
"large-rectangle": "large rectangle", pitch: "pitch", circle: "circle", "twenty-three": "23-metre area", "goal-area": "goal area",
|
|
410
423
|
"pool-end": "end of the pool, up to the 15 m mark", springboards: "springboards", platforms: "platforms", "centre-stage": "centre of the pool, the middle third",
|
|
411
|
-
"contest-area": "contest area", ring: "ring", shajo: "shajō", yamichi: "yamichi", azuchi: "azuchi", kamiza: "kamiza", cage: "cage", gate: "gate", "crossing-straight": "crossing straight", "first-bend": "first bend", "second-bend": "second bend", judges: "judges", "kiss-and-cry": "kiss and cry", bend: "bend", "home-straight": "finish straight", "back-straight": "back straight", finish: "finish line", start: "start", "high-jump": "high jump", "pole-vault": "pole vault", "long-jump": "long jump", "triple-jump": "triple jump", "shot-put": "shot put", "discus-throw": "discus throw", "hammer-throw": "hammer throw", "javelin-throw": "javelin throw", "water-jump": "water jump",
|
|
424
|
+
"contest-area": "contest area", ring: "ring", shajo: "shajō", yamichi: "yamichi", azuchi: "azuchi", kamiza: "kamiza", cage: "cage", gate: "gate", ropes: "ring inside the ropes", corner: "corner", passivity: "passivity zone", "crossing-straight": "crossing straight", "first-bend": "first bend", "second-bend": "second bend", judges: "judges", "kiss-and-cry": "kiss and cry", bend: "bend", "home-straight": "finish straight", "back-straight": "back straight", finish: "finish line", start: "start", "high-jump": "high jump", "pole-vault": "pole vault", "long-jump": "long jump", "triple-jump": "triple jump", "shot-put": "shot put", "discus-throw": "discus throw", "hammer-throw": "hammer throw", "javelin-throw": "javelin throw", "water-jump": "water jump",
|
|
412
425
|
},
|
|
413
426
|
folded: {
|
|
414
427
|
top: "Top house", bottom: "Bottom house", left: "Left house", right: "Right house",
|
|
@@ -438,7 +451,7 @@ export const KYOGIJO_STRINGS = {
|
|
|
438
451
|
announce: "{name} view", announceAngle: "Turned to {yaw} degrees, seen from {pitch} degrees above the floor.",
|
|
439
452
|
flat: "This browser cannot draw the 3D view, so the flat drawing is shown.",
|
|
440
453
|
standing: "Standing on it, in the 3D view: {list}.", item: "{name} {h}", itemSag: "{name} {h} at the posts, {low} at the middle",
|
|
441
|
-
parts: { scoreboard: "scoreboard (lower edge)", net: "net", antennae: "antennae", goalposts: "goal posts", netposts: "net posts", hoop: "baskets", goal: "goals", boards: "boards and glass", stumps: "stumps", pylons: "pylons", flags: "corner flags", fence: "fence", backstop: "backstop", "foul-poles": "foul poles", "table-legs": "table top", walls: "walls", "starting-blocks": "starting blocks", "backstroke-flags": "backstroke flags", "false-start-rope": "false start rope", springboards: "springboards", platforms: "platforms", "judges-stand": "judges' stand", hurdles: "hurdles", steeplechase: "steeplechase barriers", "high-jump": "high jump uprights and bar", "pole-vault": "pole vault uprights and bar", cage: "discus and hammer cage", padding: "padding", "rink-boards": "boards", mound: "clay mound", azuchi: "azuchi", targets: "targets", stands: "stands", "wall-seats": "seats on top of the wall", roof: "roof", gallery: "gallery", dais: "dais", banner: "banner", shrine: "shrine", "mat-edge": "mat thickness", surrounds: "surrounds", officials: "umpires' chairs and score tables", judges: "name cards on the judges' table", deck: "platform", "cage-fence": "fence", "cage-posts": "padded posts" },
|
|
454
|
+
parts: { scoreboard: "scoreboard (lower edge)", net: "net", antennae: "antennae", goalposts: "goal posts", netposts: "net posts", hoop: "baskets", goal: "goals", boards: "boards and glass", stumps: "stumps", pylons: "pylons", flags: "corner flags", fence: "fence", backstop: "backstop", "foul-poles": "foul poles", "table-legs": "table top", walls: "walls", "starting-blocks": "starting blocks", "backstroke-flags": "backstroke flags", "false-start-rope": "false start rope", springboards: "springboards", platforms: "platforms", "judges-stand": "judges' stand", hurdles: "hurdles", steeplechase: "steeplechase barriers", "high-jump": "high jump uprights and bar", "pole-vault": "pole vault uprights and bar", cage: "discus and hammer cage", padding: "padding", "rink-boards": "boards", mound: "clay mound", azuchi: "azuchi", targets: "targets", stands: "stands", "wall-seats": "seats on top of the wall", roof: "roof", gallery: "gallery", dais: "dais", banner: "banner", shrine: "shrine", "mat-edge": "mat thickness", surrounds: "surrounds", officials: "umpires' chairs and score tables", judges: "name cards on the judges' table", deck: "platform", "cage-fence": "fence", "cage-posts": "padded posts", "ring-ropes": "ropes", "ring-posts": "corner posts" },
|
|
442
455
|
},
|
|
443
456
|
rules: {
|
|
444
457
|
"defensive-zone": "Defensive zone",
|
|
@@ -533,7 +546,7 @@ export const KYOGIJO_STRINGS = {
|
|
|
533
546
|
// (ISU Rule 281.1a; the JOC's usage). Television's インコース, アウトコース, バックストレート and ホームストレート are aliases in docs/skating.md. No rule book words were found for the figure skating
|
|
534
547
|
// furniture (ジャッジ席, テクニカルパネル, レフェリー, キス・アンド・クライ): they are the usual words.
|
|
535
548
|
ja: {
|
|
536
|
-
surface: { skating: "スケートリンク", nfl: "NFLのフィールド", cfl: "CFLのフィールド", ifaf: "IFAFのフィールド", nhl: "NHLのアイスホッケーリンク", nba: "NBAのバスケットボールコート", mlb: "野球場", soccer: "サッカーのピッチ", curling: "カーリングのシート", tennis: "テニスコート", volleyball: "バレーボールコート", badminton: "バドミントンコート", pickleball: "ピックルボールコート", tabletennis: "卓球台", padel: "パデルコート", squash: "スカッシュコート", racquetball: "ラケットボールコート", sepaktakraw: "セパタクローコート", teqball: "テックボールコート", roundnet: "ラウンドネットコート", netball: "ネットボールコート", lacrosse: "ラクロスのフィールド", rugby: "ラグビーユニオンのグラウンド", afl: "オーストラリアンフットボールのグラウンド", gaelic: "ゲーリック・フットボールのフィールド", cricket: "クリケットのグラウンド", fieldhockey: "フィールドホッケーのピッチ", handball: "ハンドボールのコート", swimming: "競泳プール", waterpolo: "水球のフィールド", diving: "飛込プール", artisticswimming: "アーティスティックスイミングのプール", athletics: "陸上競技のトラック", judo: "柔道の試合場", karate: "空手道の試合場", kendo: "剣道の試合場", sumo: "相撲の土俵", kyudo: "弓道場", dojo: "道場", mma: "総合格闘技のケージ" },
|
|
549
|
+
surface: { skating: "スケートリンク", nfl: "NFLのフィールド", cfl: "CFLのフィールド", ifaf: "IFAFのフィールド", nhl: "NHLのアイスホッケーリンク", nba: "NBAのバスケットボールコート", mlb: "野球場", soccer: "サッカーのピッチ", curling: "カーリングのシート", tennis: "テニスコート", volleyball: "バレーボールコート", badminton: "バドミントンコート", pickleball: "ピックルボールコート", tabletennis: "卓球台", padel: "パデルコート", squash: "スカッシュコート", racquetball: "ラケットボールコート", sepaktakraw: "セパタクローコート", teqball: "テックボールコート", roundnet: "ラウンドネットコート", netball: "ネットボールコート", lacrosse: "ラクロスのフィールド", rugby: "ラグビーユニオンのグラウンド", afl: "オーストラリアンフットボールのグラウンド", gaelic: "ゲーリック・フットボールのフィールド", cricket: "クリケットのグラウンド", fieldhockey: "フィールドホッケーのピッチ", handball: "ハンドボールのコート", swimming: "競泳プール", waterpolo: "水球のフィールド", diving: "飛込プール", artisticswimming: "アーティスティックスイミングのプール", athletics: "陸上競技のトラック", judo: "柔道の試合場", karate: "空手道の試合場", kendo: "剣道の試合場", sumo: "相撲の土俵", kyudo: "弓道場", dojo: "道場", mma: "総合格闘技のケージ", boxing: "ボクシングのリング", wrestling: "レスリングのマット" },
|
|
537
550
|
about: {
|
|
538
551
|
nfl: "アメリカンフットボールのフィールド。エンドゾーンを含めて120×53⅓ヤードで、5ヤードごとのヤードライン、ハッシュマーク、ヤードナンバー、ゴールポストがあります",
|
|
539
552
|
cfl: "カナディアンフットボールのフィールド。20ヤードのエンドゾーンを含めて150×65ヤードで、5ヤードごとのヤードライン、ハッシュマーク、ヤードナンバー、ゴールライン上のゴールポストがあります",
|
|
@@ -575,6 +588,8 @@ export const KYOGIJO_STRINGS = {
|
|
|
575
588
|
kyudo: "近的の弓道場。射位が5か所ある射場から、安土の的まで28mあります",
|
|
576
589
|
dojo: "20畳の道場",
|
|
577
590
|
mma: "総合格闘技のケージ。金網で囲まれた、対辺間の距離が30フィート(約9.1m)の八角形で、高さ122cmの台の上にあります",
|
|
591
|
+
boxing: "ボクシングのリング。ロープの内側は一辺20フィート(約6.1m)の正方形で、リングは高さ122cmの台の上にあります",
|
|
592
|
+
wrestling: "UWWのレスリングマット。直径9mの円の外側に幅1.5mのプロテクションエリアがあり、円の内側にオレンジ色のパッシビティゾーンがあります。マットは高さ1mの台の上にあります",
|
|
578
593
|
},
|
|
579
594
|
status: { final: "試合終了", "final-ot": "試合終了(延長)", "final-so": "試合終了(SO)", "final-aet": "試合終了(延長戦)", "final-pens": "試合終了(PK戦)", live: "試合中", half: "ハーフタイム", "extra-time": "延長戦", "extra-end": "エキストラエンド", penalties: "PK戦", postponed: "延期", tiebreak: "タイブレーク", "match-tiebreak": "マッチタイブレーク", retired: "途中棄権", walkover: "不戦勝" },
|
|
580
595
|
endStatus: "第{n}エンド",
|
|
@@ -774,6 +789,17 @@ export const KYOGIJO_STRINGS = {
|
|
|
774
789
|
mmaFloor: "ケージは床と同じ高さにあります",
|
|
775
790
|
mmaGates: "出入口は向かい合う2か所にあります。",
|
|
776
791
|
mmaSteps: "各出入口に、台へ上がる階段があります。",
|
|
792
|
+
boxing: "ボクシングのリング。キャンバスを張った床は、ロープの内側が一辺{feet}フィート(約{size}m)の正方形で、4本のロープで囲まれています。ロープの外側には幅{apron}cmのエプロンが続き、四隅にパッド付きのコーナーポストがあります。{platform}",
|
|
793
|
+
boxingPlatform: "リングは高さ{height}cmの台の上にあります",
|
|
794
|
+
boxingFloor: "リングは床と同じ高さにあります",
|
|
795
|
+
boxingCorners: "コーナーの色は、ボクサー用が赤と青、中立コーナーが白です。",
|
|
796
|
+
boxingSteps: "台へ上がる階段は3か所で、各ボクサーのコーナーに1か所ずつと、中立コーナーに1か所あります。",
|
|
797
|
+
wrestlingUww: "UWWのレスリングマット(フリースタイルとグレコローマン)。直径{circle}mの円の外側に幅{border}mのプロテクションエリアがあり、円の内側には幅{band}mのオレンジ色のパッシビティゾーンがあります。{platform}",
|
|
798
|
+
wrestlingFolk: "フォークスタイルのレスリングマット。直径{feet}フィート(約{circle}m)の円の外側に、幅{border}フィートのマットが敷かれています。{platform}",
|
|
799
|
+
wrestlingPlatform: "マットは高さ{height}mの台の上にあります",
|
|
800
|
+
wrestlingFloor: "マットは会場の床に敷かれています",
|
|
801
|
+
wrestlingCentre: "中央には直径{d}mの円があります。",
|
|
802
|
+
wrestlingLines: "中央の平行な2本のスタートラインは、一方の端が緑の線、もう一方の端が赤の線で閉じられています。",
|
|
777
803
|
board: {
|
|
778
804
|
ippon: "一本", wazaari: "技あり", yuko: "有効", shido: "指導", senshu: "先取", chui: "注意", points: "ポイント", kimarite: "決まり手",
|
|
779
805
|
techniques: { men: "面", kote: "小手", do: "胴", tsuki: "突き", hansoku: "反則" },
|
|
@@ -835,7 +861,7 @@ export const KYOGIJO_STRINGS = {
|
|
|
835
861
|
results: { touchdown: "タッチダウン", "field-goal": "フィールドゴール", "missed-field-goal": "フィールドゴール失敗", punt: "パント", turnover: "ターンオーバー", interception: "インターセプト", fumble: "ファンブル", downs: "ダウン更新失敗によるターンオーバー", safety: "セーフティ", "end-of-half": "ハーフ終了" },
|
|
836
862
|
},
|
|
837
863
|
special: {
|
|
838
|
-
guest: { skating: "リンク", nfl: "アメリカンフットボールのフィールド", cfl: "カナディアンフットボールのフィールド", ifaf: "アメリカンフットボールのフィールド", nhl: "リンク", nba: "コート", mlb: "野球のグラウンド", soccer: "ピッチ", curling: "シート", tennis: "コート", volleyball: "コート", badminton: "コート", pickleball: "コート", tabletennis: "卓球台", padel: "コート", squash: "コート", racquetball: "コート", sepaktakraw: "コート", teqball: "コート", roundnet: "コート", netball: "コート", lacrosse: "フィールド", rugby: "グラウンド", afl: "グラウンド", gaelic: "フィールド", cricket: "グラウンド", fieldhockey: "ピッチ", handball: "コート", swimming: "プール", waterpolo: "プール", diving: "プール", artisticswimming: "プール", athletics: "トラック", judo: "試合場", karate: "試合場", kendo: "試合場", sumo: "土俵", kyudo: "弓道場", dojo: "道場", mma: "ケージ" },
|
|
864
|
+
guest: { skating: "リンク", nfl: "アメリカンフットボールのフィールド", cfl: "カナディアンフットボールのフィールド", ifaf: "アメリカンフットボールのフィールド", nhl: "リンク", nba: "コート", mlb: "野球のグラウンド", soccer: "ピッチ", curling: "シート", tennis: "コート", volleyball: "コート", badminton: "コート", pickleball: "コート", tabletennis: "卓球台", padel: "コート", squash: "コート", racquetball: "コート", sepaktakraw: "コート", teqball: "コート", roundnet: "コート", netball: "コート", lacrosse: "フィールド", rugby: "グラウンド", afl: "グラウンド", gaelic: "フィールド", cricket: "グラウンド", fieldhockey: "ピッチ", handball: "コート", swimming: "プール", waterpolo: "プール", diving: "プール", artisticswimming: "プール", athletics: "トラック", judo: "試合場", karate: "試合場", kendo: "試合場", sumo: "土俵", kyudo: "弓道場", dojo: "道場", mma: "ケージ", boxing: "リング", wrestling: "マット" },
|
|
839
865
|
title: "{host}の中の{guest}",
|
|
840
866
|
game: "{event}、{date}。",
|
|
841
867
|
inside: "{guest}全体が{host}の輪郭の内側に収まっています。",
|
|
@@ -929,7 +955,7 @@ export const KYOGIJO_STRINGS = {
|
|
|
929
955
|
"distance-line": "距離を示すライン", "large-rectangle": "大きい長方形", "small-rectangle": "小さい長方形", "thirteen-metre-arc": "13メートルアーク", "forty-metre-arc": "40メートルアーク", "penalty-point": "ペナルティーマーク",
|
|
930
956
|
boundary: "バウンダリー", pitch: "ピッチ", "bowling-crease": "ボウリングクリース", "popping-crease": "ポッピングクリース", "return-crease": "リターンクリース", wicket: "ウィケット", "thirty-yard-circle": "30ヤードサークル",
|
|
931
957
|
"twenty-three-line": "23メートルライン", "shooting-circle": "シューティングサークル", "penalty-spot": "ペナルティースポット", "broken-circle-line": "サークルを囲む破線", "goal-area-line": "ゴールエリアライン",
|
|
932
|
-
"referee-position": "主審の位置", "shiai-jo": "試合場", floorboard: "床板", heri: "畳縁", "contest-area": "試合場内", "safety-area": "安全地帯", "danger-zone": "危険地帯", "start-mark": "開始線", "common-safe-zone": "共通の安全地帯", "free-zone": "フリーゾーン", platform: "畳の台", "technical-table": "係員席", "centre-tape": "中央のテープ", "kata-judges": "審判員席(正面側)", "coach-chair": "コーチ席", "kata-entry": "入退場口(正面の反対側)", arena: "アリーナの床", "competition-area": "試合場", "boundary-band": "境界の帯", "start-mat": "開始位置のマット", judge: "副審", "between-areas": "試合場の間", "centre-cross": "中央の×印", "kaishi-sen": "開始線", "outer-boundary": "場外の余地", dohyo: "土俵", ring: "土俵の円", tawara: "俵", tokudawara: "徳俵", "shikiri-sen": "仕切り線", "jano-me": "蛇の目", shajo: "射場", "shooting-position": "射位", honza: "本座", yamichi: "矢道", "yatori-michi": "矢取道", azuchi: "安土", mato: "的", kamiza: "上座", "cage-canvas": "キャンバス", "cage-fence": "金網", "cage-post": "パッド付き支柱", "cage-gate": "出入口", "cage-steps": "階段", "cage-platform": "台", shimoza: "下座", shinzen: "神棚", dais: "上座の台", banner: "垂れ幕", entrance: "入口", window: "窓", tatami: "畳", wall: "壁", "inner-lane": "インレーン", "outer-lane": "アウトレーン", "crossing-straight": "交差ストレート", "warm-up-lane": "ウォームアップレーン", padding: "防護マット", infield: "インフィールド", "coaches-area": "コーチエリア", blocks: "ブロック", "track-line": "トラックのライン", "start-lines": "スタートライン", ice: "氷面", "technical-panel": "テクニカルパネル", referee: "レフェリー", "kiss-and-cry": "キス・アンド・クライ", judges: "ジャッジ席", runway: "助走路", "take-off-board": "踏切板", "landing-area": "砂場", "throwing-circle": "投てきサークル", sector: "着地場所", "stop-board": "足留材", cage: "囲い", "throwing-arc": "スターティング・ライン", crossbar: "バー", "landing-mat": "着地マット", "run-up": "助走路", "zero-line": "ゼロライン", box: "ボックス",
|
|
958
|
+
"referee-position": "主審の位置", "shiai-jo": "試合場", floorboard: "床板", heri: "畳縁", "contest-area": "試合場内", "safety-area": "安全地帯", "danger-zone": "危険地帯", "start-mark": "開始線", "common-safe-zone": "共通の安全地帯", "free-zone": "フリーゾーン", platform: "畳の台", "technical-table": "係員席", "centre-tape": "中央のテープ", "kata-judges": "審判員席(正面側)", "coach-chair": "コーチ席", "kata-entry": "入退場口(正面の反対側)", arena: "アリーナの床", "competition-area": "試合場", "boundary-band": "境界の帯", "start-mat": "開始位置のマット", judge: "副審", "between-areas": "試合場の間", "centre-cross": "中央の×印", "kaishi-sen": "開始線", "outer-boundary": "場外の余地", dohyo: "土俵", ring: "土俵の円", tawara: "俵", tokudawara: "徳俵", "shikiri-sen": "仕切り線", "jano-me": "蛇の目", shajo: "射場", "shooting-position": "射位", honza: "本座", yamichi: "矢道", "yatori-michi": "矢取道", azuchi: "安土", mato: "的", kamiza: "上座", "cage-canvas": "キャンバス", "cage-fence": "金網", "cage-post": "パッド付き支柱", "cage-gate": "出入口", "cage-steps": "階段", "cage-platform": "台", "ring-canvas": "キャンバス", "ring-ropes": "ロープ", "ring-post": "コーナーポスト", "ring-red-corner": "赤コーナー", "ring-blue-corner": "青コーナー", "ring-apron": "エプロン", "ring-steps": "階段", "mat-circle": "レスリングエリア", "mat-central": "中央の競技面", "mat-border": "マットの外周部", "mat-passivity": "パッシビティゾーン", "mat-centre-circle": "センターサークル", "mat-starting-lines": "スタートライン", "mat-platform": "台", shimoza: "下座", shinzen: "神棚", dais: "上座の台", banner: "垂れ幕", entrance: "入口", window: "窓", tatami: "畳", wall: "壁", "inner-lane": "インレーン", "outer-lane": "アウトレーン", "crossing-straight": "交差ストレート", "warm-up-lane": "ウォームアップレーン", padding: "防護マット", infield: "インフィールド", "coaches-area": "コーチエリア", blocks: "ブロック", "track-line": "トラックのライン", "start-lines": "スタートライン", ice: "氷面", "technical-panel": "テクニカルパネル", referee: "レフェリー", "kiss-and-cry": "キス・アンド・クライ", judges: "ジャッジ席", runway: "助走路", "take-off-board": "踏切板", "landing-area": "砂場", "throwing-circle": "投てきサークル", sector: "着地場所", "stop-board": "足留材", cage: "囲い", "throwing-arc": "スターティング・ライン", crossbar: "バー", "landing-mat": "着地マット", "run-up": "助走路", "zero-line": "ゼロライン", box: "ボックス",
|
|
933
959
|
"finish-line": "フィニッシュライン", kerb: "縁石", "lane-lines": "レーンライン", bend: "曲走路", straight: "直走路", "infield-pitch": "サッカーのピッチ", "start-line": "スタートライン", breakline: "ブレイクライン", "water-jump": "水濠", "exchange-zone": "テークオーバーゾーン",
|
|
934
960
|
"seven-metre-line": "7mスローライン", "four-metre-line": "4mライン", "throw-off-area": "スローオフエリア", "restraining-line": "リストレイニングライン", "wing-line": "ウイングライン", "marking-area": "マーキングエリア", "two-point-arc": "2ポイントアーク",
|
|
935
961
|
"lane-rope": "レーンロープ", "lane-line": "床面のレーンライン", "lane-end-cross": "クロスライン", "fifteen-metre-mark": "15mマーク", "touch-pad": "タッチ板", "starting-block": "スタート台", "backstroke-flags": "背泳ぎ用フラッグ", "false-start-rope": "フォルススタートロープ", gutter: "ガター",
|
|
@@ -950,7 +976,7 @@ export const KYOGIJO_STRINGS = {
|
|
|
950
976
|
"in-goal": "インゴール", "twenty-two": "トライラインから22メートルラインまでのエリア", twenty: "ゴールラインから20メートルラインまでのエリア", crease: "クリース", "forward-fifty": "50メートルアークの内側", "centre-square": "センタースクエア",
|
|
951
977
|
"large-rectangle": "大きい長方形", pitch: "ピッチ", circle: "サークル", "twenty-three": "23メートルエリア", "goal-area": "ゴールエリア",
|
|
952
978
|
"pool-end": "プールの端(15mの目印まで)", springboards: "飛板", platforms: "固定台", "centre-stage": "プールの中央(真ん中の3分の1)",
|
|
953
|
-
"contest-area": "試合場内", ring: "土俵の円", shajo: "射場", yamichi: "矢道", azuchi: "安土", kamiza: "上座", cage: "ケージ", gate: "出入口", "crossing-straight": "交差ストレート", "first-bend": "第1カーブ", "second-bend": "第2カーブ", judges: "ジャッジ席", "kiss-and-cry": "キス・アンド・クライ", bend: "曲走路", "home-straight": "メイン側直走路", "back-straight": "バック・ストレート", finish: "フィニッシュライン", start: "スタート", "high-jump": "走高跳", "pole-vault": "棒高跳", "long-jump": "走幅跳", "triple-jump": "三段跳", "shot-put": "砲丸投", "discus-throw": "円盤投", "hammer-throw": "ハンマー投", "javelin-throw": "やり投", "water-jump": "水濠",
|
|
979
|
+
"contest-area": "試合場内", ring: "土俵の円", shajo: "射場", yamichi: "矢道", azuchi: "安土", kamiza: "上座", cage: "ケージ", gate: "出入口", ropes: "ロープの内側", corner: "コーナー", passivity: "パッシビティゾーン", "crossing-straight": "交差ストレート", "first-bend": "第1カーブ", "second-bend": "第2カーブ", judges: "ジャッジ席", "kiss-and-cry": "キス・アンド・クライ", bend: "曲走路", "home-straight": "メイン側直走路", "back-straight": "バック・ストレート", finish: "フィニッシュライン", start: "スタート", "high-jump": "走高跳", "pole-vault": "棒高跳", "long-jump": "走幅跳", "triple-jump": "三段跳", "shot-put": "砲丸投", "discus-throw": "円盤投", "hammer-throw": "ハンマー投", "javelin-throw": "やり投", "water-jump": "水濠",
|
|
954
980
|
},
|
|
955
981
|
folded: {
|
|
956
982
|
top: "上のハウス", bottom: "下のハウス", left: "左のハウス", right: "右のハウス",
|
|
@@ -980,7 +1006,7 @@ export const KYOGIJO_STRINGS = {
|
|
|
980
1006
|
announce: "{name}の視点", announceAngle: "向きは{yaw}度、見下ろす角度は{pitch}度です。",
|
|
981
1007
|
flat: "このブラウザーでは3D表示ができないため、平面の図を表示しています。",
|
|
982
1008
|
standing: "3D表示で立って見えるもの:{list}。", item: "{name} {h}", itemSag: "{name} 支柱の位置で{h}(中央は{low})",
|
|
983
|
-
parts: { scoreboard: "スコアボードの下端", net: "ネット", antennae: "アンテナ", goalposts: "ゴールポスト", netposts: "支柱", hoop: "バスケットゴール", goal: "ゴール", boards: "ボードとガラス", stumps: "ウィケットのスタンプ", pylons: "パイロン", flags: "コーナーフラッグ", fence: "外野フェンス", backstop: "バックネット", "foul-poles": "ファウルポール", "table-legs": "天板", walls: "壁", "starting-blocks": "スタート台", "backstroke-flags": "背泳ぎ用フラッグ", "false-start-rope": "フォルススタートロープ", springboards: "飛板", platforms: "固定台", "judges-stand": "ジャッジ台", hurdles: "ハードル", steeplechase: "障害物", "high-jump": "走高跳の支柱とバー", "pole-vault": "棒高跳の支柱とバー", cage: "円盤投・ハンマー投の囲い", padding: "防護マット", "rink-boards": "フェンス", mound: "土の台", azuchi: "安土", targets: "的", stands: "スタンド", "wall-seats": "壁の上の観客席", roof: "屋根", gallery: "見学席", dais: "上座の台", banner: "垂れ幕", shrine: "神棚", "mat-edge": "畳の厚み", surrounds: "競技エリアのフェンス", officials: "審判席と記録台", judges: "審判員席の名札", deck: "台", "cage-fence": "金網", "cage-posts": "パッド付き支柱" },
|
|
1009
|
+
parts: { scoreboard: "スコアボードの下端", net: "ネット", antennae: "アンテナ", goalposts: "ゴールポスト", netposts: "支柱", hoop: "バスケットゴール", goal: "ゴール", boards: "ボードとガラス", stumps: "ウィケットのスタンプ", pylons: "パイロン", flags: "コーナーフラッグ", fence: "外野フェンス", backstop: "バックネット", "foul-poles": "ファウルポール", "table-legs": "天板", walls: "壁", "starting-blocks": "スタート台", "backstroke-flags": "背泳ぎ用フラッグ", "false-start-rope": "フォルススタートロープ", springboards: "飛板", platforms: "固定台", "judges-stand": "ジャッジ台", hurdles: "ハードル", steeplechase: "障害物", "high-jump": "走高跳の支柱とバー", "pole-vault": "棒高跳の支柱とバー", cage: "円盤投・ハンマー投の囲い", padding: "防護マット", "rink-boards": "フェンス", mound: "土の台", azuchi: "安土", targets: "的", stands: "スタンド", "wall-seats": "壁の上の観客席", roof: "屋根", gallery: "見学席", dais: "上座の台", banner: "垂れ幕", shrine: "神棚", "mat-edge": "畳の厚み", surrounds: "競技エリアのフェンス", officials: "審判席と記録台", judges: "審判員席の名札", deck: "台", "cage-fence": "金網", "cage-posts": "パッド付き支柱", "ring-ropes": "ロープ", "ring-posts": "コーナーポスト" },
|
|
984
1010
|
},
|
|
985
1011
|
rules: {
|
|
986
1012
|
"defensive-zone": "ディフェンディングゾーン",
|
package/dist/turn.kit.d.ts
CHANGED
|
@@ -37,7 +37,7 @@ export interface Plane {
|
|
|
37
37
|
fadeAt?: number;
|
|
38
38
|
}
|
|
39
39
|
/** What stands on the surface as a thing a reader would name: a net, a basket, a goal, a pair of posts. */
|
|
40
|
-
export type UprightKind = "scoreboard" | "net" | "antennae" | "goalposts" | "netposts" | "hoop" | "goal" | "boards" | "stumps" | "pylons" | "flags" | "fence" | "backstop" | "foul-poles" | "table-legs" | "walls" | "starting-blocks" | "backstroke-flags" | "false-start-rope" | "springboards" | "platforms" | "judges-stand" | "hurdles" | "steeplechase" | "high-jump" | "pole-vault" | "cage" | "padding" | "rink-boards" | "mound" | "azuchi" | "targets" | "stands" | "wall-seats" | "roof" | "gallery" | "dais" | "banner" | "shrine" | "mat-edge" | "surrounds" | "officials" | "judges" | "deck" | "cage-fence" | "cage-posts";
|
|
40
|
+
export type UprightKind = "scoreboard" | "net" | "antennae" | "goalposts" | "netposts" | "hoop" | "goal" | "boards" | "stumps" | "pylons" | "flags" | "fence" | "backstop" | "foul-poles" | "table-legs" | "walls" | "starting-blocks" | "backstroke-flags" | "false-start-rope" | "springboards" | "platforms" | "judges-stand" | "hurdles" | "steeplechase" | "high-jump" | "pole-vault" | "cage" | "padding" | "rink-boards" | "mound" | "azuchi" | "targets" | "stands" | "wall-seats" | "roof" | "gallery" | "dais" | "banner" | "shrine" | "mat-edge" | "surrounds" | "officials" | "judges" | "deck" | "cage-fence" | "cage-posts" | "ring-ropes" | "ring-posts";
|
|
41
41
|
/** A thing that stands on the surface: where, how high, and the planes it is made of. */
|
|
42
42
|
export interface Upright {
|
|
43
43
|
id: string;
|
package/dist/turn.style.js
CHANGED
|
@@ -36,6 +36,11 @@ export const KYOGIJO_TURN_STYLE = `
|
|
|
36
36
|
.ky-turn .u-clay{fill:var(--ky-up-clay)}
|
|
37
37
|
.ky-turn .u-cagepad{fill:var(--ky-up-cagepad)}
|
|
38
38
|
.ky-turn .u-gateframe{stroke:var(--ky-up-cagepad)}
|
|
39
|
+
.ky-turn .u-corner-red{fill:var(--ky-red,#b32a2f)}
|
|
40
|
+
.ky-turn .u-corner-blue{fill:var(--ky-blue,#2a5db0)}
|
|
41
|
+
.ky-turn .u-corner-white{fill:#f4f1e8}
|
|
42
|
+
.ky-turn .u-rope{fill:var(--ky-bud-rope,#f4f1e8)}
|
|
43
|
+
.ky-turn .u-rope-tie{fill:color-mix(in srgb,var(--ky-bud-rope,#f4f1e8) 60%,#808080)}
|
|
39
44
|
.ky-turn .u-deck-side{fill:color-mix(in srgb,var(--ky-bud-floor,#43484e) 70%,#000)}
|
|
40
45
|
.ky-turn .u-step{fill:color-mix(in srgb,var(--ky-bud-floor,#43484e) 76%,#fff)}
|
|
41
46
|
.ky-turn .u-step-side{fill:color-mix(in srgb,var(--ky-bud-floor,#43484e) 58%,#000)}
|
package/dist/types.d.ts
CHANGED
|
@@ -17,7 +17,7 @@ export type { PoolSport, PoolStyle };
|
|
|
17
17
|
/** The budō: the contest areas of judo and karate, the kendo shiai-jo, the sumo dohyō, the kyūdōjō, and a dojo of tatami. */
|
|
18
18
|
export type BudoSport = "judo" | "karate" | "kendo" | "sumo" | "kyudo" | "dojo";
|
|
19
19
|
/** The combat sports' rings, cages and mats, drawn by the same engine as the budō: the MMA cage (eight-sided, as a generic cage), and as they are added the boxing ring, the wrestling mats and the professional wrestling ring. */
|
|
20
|
-
export type CombatSport = "mma";
|
|
20
|
+
export type CombatSport = "mma" | "boxing" | "wrestling";
|
|
21
21
|
export type { BudoStyle, DojoSpec, BudoScore };
|
|
22
22
|
/** The surfaces: three football fields, a rink, a court, a ballpark, a soccer pitch, a curling sheet, twelve net, racket and court sports (tennis, volleyball, badminton, pickleball, table tennis, padel, squash, racquetball, sepak takraw, teqball, roundnet and netball), four pools (swimming, water polo, diving and artistic swimming), seven field sports (lacrosse, rugby, Australian football, Gaelic football and hurling, cricket, field hockey and handball) and the athletics stadium (the 400 m track with its infield, and the covered 200 m track). */
|
|
23
23
|
export type Sport = "nfl" | "cfl" | "ifaf" | "nhl" | "nba" | "mlb" | "soccer" | "curling" | "tennis" | "volleyball" | "badminton" | "pickleball" | "tabletennis" | "padel" | "squash" | "racquetball" | "sepaktakraw" | "teqball" | "roundnet" | "netball" | PoolSport | FieldSport | "athletics" | "skating" | BudoSport | CombatSport;
|
|
@@ -321,7 +321,7 @@ export interface CrowdOptions {
|
|
|
321
321
|
* `penalty-area`. Baseball: `infield`, `outfield`. The net sports: `half-court`. Curling: `sheet`, `half`, `house`, `folded`. Rugby: `half`, `twenty-two` (union) or `twenty` (league), `in-goal`. Lacrosse: `half`, `crease`. Australian football: `half`, `forward-fifty`, `centre-square`.
|
|
322
322
|
* Gaelic games: `half`, `large-rectangle`. Cricket: `pitch`, `circle`. Field hockey: `half`, `circle`, `twenty-three`. Handball: `half`, `goal-area`. Swimming: `half`, `pool-end`. Water polo: `half`, `goal-area`. Diving: `springboards`, `platforms`. Artistic swimming: `half`, `centre-stage`. Judo and karate: `contest-area`, `start`. Sumo: `ring`. Kyudo: `shajo`, `yamichi`, `azuchi`. Dojo: `kamiza`, `half`. Athletics: `bend`, `home-straight`, `back-straight`, `finish`, `start`, `infield`, a field event (`high-jump`, `pole-vault`, `long-jump`, `triple-jump`, `shot-put`, `discus-throw`, `hammer-throw`, `javelin-throw`) and `water-jump`. `RANGES` lists them for each sport.
|
|
323
323
|
*/
|
|
324
|
-
export type RangeName = "red-zone" | "between-the-20s" | "end-zone" | "field-of-play" | "own-half" | "opponent-half" | "offensive-zone" | "defensive-zone" | "neutral-zone" | "half" | "half-court" | "paint" | "final-third" | "defensive-third" | "middle-third" | "penalty-area" | "infield" | "outfield" | "sheet" | "house" | "folded" | "in-goal" | "twenty-two" | "twenty" | "crease" | "forward-fifty" | "centre-square" | "large-rectangle" | "pitch" | "circle" | "twenty-three" | "goal-area" | "pool-end" | "springboards" | "platforms" | "centre-stage" | "bend" | "home-straight" | "back-straight" | "finish" | "start" | "infield" | "high-jump" | "pole-vault" | "long-jump" | "triple-jump" | "shot-put" | "discus-throw" | "hammer-throw" | "javelin-throw" | "water-jump" | "crossing-straight" | "first-bend" | "second-bend" | "judges" | "kiss-and-cry" | "contest-area" | "ring" | "shajo" | "yamichi" | "azuchi" | "kamiza" | "cage" | "gate";
|
|
324
|
+
export type RangeName = "red-zone" | "between-the-20s" | "end-zone" | "field-of-play" | "own-half" | "opponent-half" | "offensive-zone" | "defensive-zone" | "neutral-zone" | "half" | "half-court" | "paint" | "final-third" | "defensive-third" | "middle-third" | "penalty-area" | "infield" | "outfield" | "sheet" | "house" | "folded" | "in-goal" | "twenty-two" | "twenty" | "crease" | "forward-fifty" | "centre-square" | "large-rectangle" | "pitch" | "circle" | "twenty-three" | "goal-area" | "pool-end" | "springboards" | "platforms" | "centre-stage" | "bend" | "home-straight" | "back-straight" | "finish" | "start" | "infield" | "high-jump" | "pole-vault" | "long-jump" | "triple-jump" | "shot-put" | "discus-throw" | "hammer-throw" | "javelin-throw" | "water-jump" | "crossing-straight" | "first-bend" | "second-bend" | "judges" | "kiss-and-cry" | "contest-area" | "ring" | "shajo" | "yamichi" | "azuchi" | "kamiza" | "cage" | "gate" | "ropes" | "corner" | "passivity";
|
|
325
325
|
/** A named range at the end of your choice: `{ name: "offensive-zone", end: "left" }` is the offensive zone of a team that attacks the left. */
|
|
326
326
|
export interface RangeNamed {
|
|
327
327
|
name: RangeName;
|
package/dist/units.js
CHANGED
|
@@ -58,6 +58,10 @@ export const SURFACE_UNITS = Object.freeze({
|
|
|
58
58
|
dojo: "m",
|
|
59
59
|
// The cage: the commissions' rules are written in feet and inches.
|
|
60
60
|
mma: "ft",
|
|
61
|
+
// The ring: the commissions' rules are written in feet and inches (the amateurs' in metres, in their own league).
|
|
62
|
+
boxing: "ft",
|
|
63
|
+
// The mat: the UWW's rules are in metres (the folkstyle leagues' in feet, in their own league).
|
|
64
|
+
wrestling: "m",
|
|
61
65
|
});
|
|
62
66
|
/** True when `unit` is one of the six. */
|
|
63
67
|
export const isUnit = (unit) => typeof unit === "string" && Object.prototype.hasOwnProperty.call(FEET_PER, unit);
|
package/dist/uprights.budo.js
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
import { budoPlan } from "./budo/plan.js";
|
|
6
6
|
import { flat, n, plane, shy, wall } from "./turn.kit.js";
|
|
7
7
|
import { cageUprights } from "./uprights.cage.js";
|
|
8
|
+
import { platformPlanes, ringUprights } from "./uprights.ring.js";
|
|
8
9
|
const K = 1 / 0.3048;
|
|
9
10
|
/** The walls of a dojo, 3 m high (ours). */
|
|
10
11
|
export const DOJO_WALL = 3;
|
|
@@ -69,6 +70,13 @@ export function budoUprights(o, thin) {
|
|
|
69
70
|
}
|
|
70
71
|
if (plan.mma !== undefined)
|
|
71
72
|
items.push(...cageUprights(plan, at, thin));
|
|
73
|
+
if (plan.boxing !== undefined)
|
|
74
|
+
items.push(...ringUprights(plan, plan.boxing, at));
|
|
75
|
+
// A wrestling mat that stands on a platform (the UWW's at the great events) is a solid block with the mat as its top; on the floor nothing stands.
|
|
76
|
+
if (plan.wrestling?.platform !== undefined) {
|
|
77
|
+
const h = plan.wrestling.height * K;
|
|
78
|
+
items.push({ id: "deck", kind: "deck", at: at(plan.wrestling.centre[0], plan.wrestling.centre[1]), height: h, planes: platformPlanes(plan.wrestling.platform, at, h) });
|
|
79
|
+
}
|
|
72
80
|
if (plan.kyudo !== undefined) {
|
|
73
81
|
const built = azuchiPlanes(plan, at);
|
|
74
82
|
items.push({ id: "azuchi", kind: "azuchi", at: at(plan.kyudo.target, plan.kyudo.lanes[0]), height: built.height, planes: built.mound });
|
|
@@ -92,5 +100,5 @@ export function budoUprights(o, thin) {
|
|
|
92
100
|
});
|
|
93
101
|
items.push({ id: "walls", kind: "walls", at: centre, height: h, planes });
|
|
94
102
|
}
|
|
95
|
-
return { items, lift, area, whole: plan.sumo !== undefined || plan.mma !== undefined };
|
|
103
|
+
return { items, lift, area, whole: plan.sumo !== undefined || plan.mma !== undefined || plan.boxing !== undefined || plan.wrestling?.platform !== undefined };
|
|
96
104
|
}
|
package/dist/uprights.js
CHANGED
|
@@ -32,7 +32,7 @@ import { NO_VENUE, standsVenue } from "./venue.js";
|
|
|
32
32
|
/** All the planes of all the things. */
|
|
33
33
|
export const planesOf = (u) => u.items.flatMap((item) => item.planes);
|
|
34
34
|
/** The unit each sport's rulebook gives its heights in, when the options name none. */
|
|
35
|
-
const RULEBOOK_UNIT = { volleyball: "m", badminton: "m", tabletennis: "m", padel: "m", squash: "m", athletics: "m", skating: "m", judo: "m", karate: "m", kendo: "m", sumo: "m", kyudo: "m", dojo: "m", mma: "ft", swimming: "m", waterpolo: "m", diving: "m", artisticswimming: "m", sepaktakraw: "m", teqball: "m", roundnet: "m", netball: "m", soccer: "m", handball: "m", fieldhockey: "m", rugby: "m", afl: "m", gaelic: "m" };
|
|
35
|
+
const RULEBOOK_UNIT = { volleyball: "m", badminton: "m", tabletennis: "m", padel: "m", squash: "m", athletics: "m", skating: "m", judo: "m", karate: "m", kendo: "m", sumo: "m", kyudo: "m", dojo: "m", mma: "ft", boxing: "ft", wrestling: "m", swimming: "m", waterpolo: "m", diving: "m", artisticswimming: "m", sepaktakraw: "m", teqball: "m", roundnet: "m", netball: "m", soccer: "m", handball: "m", fieldhockey: "m", rugby: "m", afl: "m", gaelic: "m" };
|
|
36
36
|
/** What stands on the surface the options draw: nothing on a curling sheet, which is flat. */
|
|
37
37
|
export function uprightsFor(o, settings = {}) {
|
|
38
38
|
const { sport, league } = chooseLeague(o);
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { BudoPlan } from "./budo/plan.ts";
|
|
2
|
+
import type { RingLayout } from "./budo/ring.ts";
|
|
3
|
+
import { type Plane, type Upright } from "./turn.kit.ts";
|
|
4
|
+
/** The platform of a ring as a solid block: its four sides and its top, which is the drawing's own canvas in the platform's rectangle. */
|
|
5
|
+
export declare function platformPlanes(b: {
|
|
6
|
+
x0: number;
|
|
7
|
+
y0: number;
|
|
8
|
+
x1: number;
|
|
9
|
+
y1: number;
|
|
10
|
+
}, at: (x: number, y: number) => readonly [number, number], h: number): Plane[];
|
|
11
|
+
/** What stands on a ring: the platform, its steps, the posts, the ropes and their ties. */
|
|
12
|
+
export declare function ringUprights(plan: BudoPlan, L: RingLayout, at: (x: number, y: number) => readonly [number, number]): Upright[];
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { box, flat, n, pole, bar, wall } from "./turn.kit.js";
|
|
2
|
+
const K = 1 / 0.3048;
|
|
3
|
+
/** The platform of a ring as a solid block: its four sides and its top, which is the drawing's own canvas in the platform's rectangle. */
|
|
4
|
+
export function platformPlanes(b, at, h) {
|
|
5
|
+
const corners = [at(b.x0, b.y0), at(b.x1, b.y0), at(b.x1, b.y1), at(b.x0, b.y1)];
|
|
6
|
+
const planes = [];
|
|
7
|
+
corners.forEach((a, i) => {
|
|
8
|
+
const c = corners[(i + 1) % 4];
|
|
9
|
+
planes.push(wall(`deck-${i + 1}`, "wall", a[0], a[1], c[0], c[1], 0, h, `<rect width="${n(Math.hypot(c[0] - a[0], c[1] - a[1]))}" height="${n(h)}" class="u-deck-side"/>`));
|
|
10
|
+
});
|
|
11
|
+
planes.push({ ...flat("deck-top", "platform", corners[0][0], corners[0][1], corners[2][0], corners[2][1], h, ""), crop: true });
|
|
12
|
+
return planes;
|
|
13
|
+
}
|
|
14
|
+
/** What stands on a ring: the platform, its steps, the posts, the ropes and their ties. */
|
|
15
|
+
export function ringUprights(plan, L, at) {
|
|
16
|
+
const fig = plan.figures;
|
|
17
|
+
const h0 = L.height * K;
|
|
18
|
+
const centre = at(L.centre[0], L.centre[1]);
|
|
19
|
+
const items = [{ id: "deck", kind: "deck", at: centre, height: h0, planes: platformPlanes(L.platform, at, h0) }];
|
|
20
|
+
if (L.steps.length > 0) {
|
|
21
|
+
const s = fig.platform.steps;
|
|
22
|
+
const planes = [];
|
|
23
|
+
for (const st of L.steps) {
|
|
24
|
+
const north = st.edge === "north";
|
|
25
|
+
for (let t = 0; t < s.treads; t += 1) {
|
|
26
|
+
const y0 = north ? st.box.y0 + t * s.tread : st.box.y0;
|
|
27
|
+
const y1 = north ? st.box.y1 : st.box.y1 - t * s.tread;
|
|
28
|
+
const [x0, ya] = at(st.box.x0, y0);
|
|
29
|
+
const [x1, yb] = at(st.box.x1, y1);
|
|
30
|
+
planes.push(...box(`step-${st.corner}-${t + 1}`, "platform", { x0, y0: ya, x1, y1: yb }, (h0 * (t + 1)) / s.treads, "u-step"));
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
items.push({ id: "steps", kind: "deck", at: centre, height: h0, planes });
|
|
34
|
+
}
|
|
35
|
+
// The posts: solid, two crossed strips as wide as the pad, in the corner's colour, from the platform to the height the rules give over the ring floor.
|
|
36
|
+
const top = h0 + fig.post.height * K;
|
|
37
|
+
const padW = fig.post.pad * K;
|
|
38
|
+
const posts = L.corners.flatMap((c) => {
|
|
39
|
+
const [px, py] = at(c.post[0], c.post[1]);
|
|
40
|
+
return pole(`post-${c.index + 1}`, "post", px, py, h0, top, padW, `u-corner-${c.colour}`);
|
|
41
|
+
});
|
|
42
|
+
// The ropes: along each side between the corners of the rope square, and at each corner out to the post by the extension.
|
|
43
|
+
const ropeW = Math.max(fig.ropes.diameter.drawn, 0.03) * K;
|
|
44
|
+
const ropes = [];
|
|
45
|
+
fig.ropes.heights.forEach((rh, level) => {
|
|
46
|
+
const z = h0 + rh * K;
|
|
47
|
+
const sq = L.corners.map((c) => at(c.rope[0], c.rope[1]));
|
|
48
|
+
for (let i = 0; i < 4; i += 1) {
|
|
49
|
+
const a = sq[i];
|
|
50
|
+
const b = sq[(i + 1) % 4];
|
|
51
|
+
ropes.push(...bar(`rope-${level + 1}-${i + 1}`, "rail", [a[0], a[1], z], [b[0], b[1], z], ropeW, "u-rope"));
|
|
52
|
+
}
|
|
53
|
+
L.corners.forEach((c, i) => {
|
|
54
|
+
const a = at(c.rope[0], c.rope[1]);
|
|
55
|
+
const p = at(c.post[0], c.post[1]);
|
|
56
|
+
ropes.push(...bar(`rope-${level + 1}-ext-${i + 1}`, "rail", [a[0], a[1], z], [p[0], p[1], z], ropeW, "u-rope"));
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
// Two ties on each side, a strip joining the ropes where they are a third and two thirds along, as the rules ask (spacers).
|
|
60
|
+
const lo = h0 + fig.ropes.heights[0] * K;
|
|
61
|
+
const hi = h0 + fig.ropes.heights[fig.ropes.heights.length - 1] * K;
|
|
62
|
+
const ties = [];
|
|
63
|
+
const sq = L.corners.map((c) => at(c.rope[0], c.rope[1]));
|
|
64
|
+
for (let i = 0; i < 4; i += 1) {
|
|
65
|
+
const a = sq[i];
|
|
66
|
+
const b = sq[(i + 1) % 4];
|
|
67
|
+
for (const t of [1 / 3, 2 / 3]) {
|
|
68
|
+
const x = a[0] + (b[0] - a[0]) * t;
|
|
69
|
+
const y = a[1] + (b[1] - a[1]) * t;
|
|
70
|
+
ties.push(...pole(`tie-${i + 1}-${t < 0.5 ? 1 : 2}`, "rail", x, y, lo, hi, 0.1 * K, "u-rope-tie"));
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
items.push({ id: "posts", kind: "ring-posts", at: centre, height: top - h0, planes: posts });
|
|
74
|
+
items.push({ id: "ropes", kind: "ring-ropes", at: centre, height: hi - h0, planes: [...ropes, ...ties] });
|
|
75
|
+
return items;
|
|
76
|
+
}
|
package/dist/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/** The package's version: the same as package.json's, and a test holds them to each other. */
|
|
2
|
-
export declare const VERSION = "0.
|
|
2
|
+
export declare const VERSION = "0.22.0";
|
package/dist/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/** The package's version: the same as package.json's, and a test holds them to each other. */
|
|
2
|
-
export const VERSION = "0.
|
|
2
|
+
export const VERSION = "0.22.0";
|