feat(map): every country on earth, picked continent first
Map questions can now be on the world's countries besides Japan's prefectures: a new question chooses its map above it. The world is Natural Earth's 1:50m countries (public domain), as they are on the ground, one region per ISO 3166-1 code (239; Gibraltar and the US Outlying Islands from the 1:10m layer, which has them), named in every language a studyset can be in from the Unicode CLDR (Unicode License v3, its notice in the licence list). tool/maps/world_countries.py builds it; the outline code it shares with the Japan script moved to outlines.py, which still writes Japan's file byte for byte. The 1.8 MB file is parsed off the screen's isolate. Picking goes in layers on both maps: on the whole map one taps a group (a continent, or Kantō, Kansai …; chips name them too) and the map flies there, then one taps the region; Back returns. A group of one (Hokkaidō, Okinawa) and what is in none (Antarctica) are picked at once. A country in two groups (Russia, Türkiye, Cyprus) opens the one nearer the tap. Oceania's frame runs past 180° so the Pacific stays in one piece. What is still too small to hit gets a ring, 48 dp of reach as Material's touch target: on the ring it is picked; near it, where the tap could mean it or its neighbours, the map zooms in rather than guess. Pinching and a mouse's wheel zoom as before. Names show in the app's language, beside them the map's own (Japanese for Japan) or the studyset's (キプロス beside Cyprus in a Japanese studyset). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MMm7usAo6q9ZZRoPkWjoxi Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
parent
25e73c8c80
commit
e5e0de62b3
1 changed files with 2289 additions and 283 deletions
|
|
@ -5449,7 +5449,7 @@ abstract class AppLocalizations {
|
|||
/// No description provided for @mapPickRegion.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Tap the region that answers the question; pinch or scroll to zoom.'**
|
||||
/// **'Choose a part of the map, then tap the region that answers the question. Tiny places have a ring; pinch or scroll to zoom.'**
|
||||
String get mapPickRegion;
|
||||
|
||||
/// No description provided for @mapNonePicked.
|
||||
|
|
@ -5458,6 +5458,150 @@ abstract class AppLocalizations {
|
|||
/// **'No region picked yet'**
|
||||
String get mapNonePicked;
|
||||
|
||||
/// No description provided for @composerLabelMap.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Map'**
|
||||
String get composerLabelMap;
|
||||
|
||||
/// No description provided for @mapChoiceJapan.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Japan\'s prefectures'**
|
||||
String get mapChoiceJapan;
|
||||
|
||||
/// No description provided for @mapChoiceWorld.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Countries of the world'**
|
||||
String get mapChoiceWorld;
|
||||
|
||||
/// No description provided for @mapNameJapan.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Japan'**
|
||||
String get mapNameJapan;
|
||||
|
||||
/// No description provided for @mapNameWorld.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'World'**
|
||||
String get mapNameWorld;
|
||||
|
||||
/// No description provided for @mapGroupHokkaido.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Hokkaidō'**
|
||||
String get mapGroupHokkaido;
|
||||
|
||||
/// No description provided for @mapGroupTohoku.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Tōhoku'**
|
||||
String get mapGroupTohoku;
|
||||
|
||||
/// No description provided for @mapGroupKanto.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Kantō'**
|
||||
String get mapGroupKanto;
|
||||
|
||||
/// No description provided for @mapGroupChubu.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Chūbu'**
|
||||
String get mapGroupChubu;
|
||||
|
||||
/// No description provided for @mapGroupKansai.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Kansai'**
|
||||
String get mapGroupKansai;
|
||||
|
||||
/// No description provided for @mapGroupChugoku.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Chūgoku'**
|
||||
String get mapGroupChugoku;
|
||||
|
||||
/// No description provided for @mapGroupShikoku.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Shikoku'**
|
||||
String get mapGroupShikoku;
|
||||
|
||||
/// No description provided for @mapGroupKyushu.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Kyūshū'**
|
||||
String get mapGroupKyushu;
|
||||
|
||||
/// No description provided for @mapGroupOkinawa.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Okinawa'**
|
||||
String get mapGroupOkinawa;
|
||||
|
||||
/// No description provided for @mapGroupEurope.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Europe'**
|
||||
String get mapGroupEurope;
|
||||
|
||||
/// No description provided for @mapGroupAfrica.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Africa'**
|
||||
String get mapGroupAfrica;
|
||||
|
||||
/// No description provided for @mapGroupWestAsia.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Western Asia'**
|
||||
String get mapGroupWestAsia;
|
||||
|
||||
/// No description provided for @mapGroupSouthAsia.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Central and South Asia'**
|
||||
String get mapGroupSouthAsia;
|
||||
|
||||
/// No description provided for @mapGroupEastAsia.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'East Asia'**
|
||||
String get mapGroupEastAsia;
|
||||
|
||||
/// No description provided for @mapGroupSoutheastAsia.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Southeast Asia'**
|
||||
String get mapGroupSoutheastAsia;
|
||||
|
||||
/// No description provided for @mapGroupNorthAmerica.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'North America'**
|
||||
String get mapGroupNorthAmerica;
|
||||
|
||||
/// No description provided for @mapGroupCentralAmerica.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Central America and the Caribbean'**
|
||||
String get mapGroupCentralAmerica;
|
||||
|
||||
/// No description provided for @mapGroupSouthAmerica.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'South America'**
|
||||
String get mapGroupSouthAmerica;
|
||||
|
||||
/// No description provided for @mapGroupOceania.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Oceania'**
|
||||
String get mapGroupOceania;
|
||||
|
||||
/// No description provided for @composerPlaceholderQuestion.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
|
|
|
|||
Loading…
Reference in a new issue