syncing ba,bastd from master

This commit is contained in:
Ayush Saini 2022-07-02 01:43:52 +05:30
parent d9634f722e
commit e44fe44e5b
108 changed files with 793 additions and 683 deletions

View file

@ -75,7 +75,7 @@
"adan",
"Adeel (AdeZ {@adez_})",
"Adel",
"Rio Adi",
"Rio adi",
"Rayhan Adiansyah",
"Yonas Adiel",
"admin",
@ -96,6 +96,7 @@
"ahmed",
"ahmedzabara",
"Collin Ainge",
"Akash",
"Akbar",
"Bekir Akdemir",
"Akhanyile",
@ -306,6 +307,7 @@
"Brojas",
"Brojasko",
"BrotheRuzz11",
"Brunoazocar",
"bsam",
"Bsamhero",
"BSODPK",
@ -374,6 +376,7 @@
"Cpt crook",
"Prashanth CrossFire",
"Cryfter",
"cuddles98",
"cukomus",
"CYCL0YT",
"D",
@ -408,6 +411,7 @@
"Dennys",
"Alex Derbenew",
"df",
"Santanu Dhar",
"Guilherme Dias",
"Diase7en",
"ferbie Dicen",
@ -416,6 +420,7 @@
"dikivan2000",
"Dimitriy",
"Martin Dimitrov",
"DinoWattz",
"Diprone",
"djaber djafer",
"Fadhil djibran",
@ -439,6 +444,7 @@
"Dudow",
"Dustin",
"Paul Duvernay",
"Emir İslam Dündar",
"Ebutahapro07tr",
"Edson",
"Glen Edwards",
@ -487,6 +493,7 @@
"Jakub Fafek",
"Syed Fahrin (Mr.Lemoyne)",
"faizal.faiz.ms@gmail.com",
"Fakih",
"FanDolz.",
"Faqih",
"Muhammad Faqih ''None''",
@ -679,7 +686,7 @@
"Tobias Dencker Israelsen",
"Kegyes István",
"Itamar",
"Ivan",
"ivan",
"iViietZ",
"Al jabbar",
"Jacek",
@ -699,6 +706,7 @@
"Jembhut",
"CrackerKSR (Kishor Jena)",
"CrackerKSR (Kishor Jena))",
"Jenqa",
"Jeroen",
"jesus",
"Jetty",
@ -759,6 +767,7 @@
"Kaushik",
"KawaiiON",
"KD",
"Kejuxs",
"Mani kelidari",
"Kelmine",
"Kenjie",
@ -790,6 +799,7 @@
"Nikolay Korolyov",
"Kostas",
"Viktor Kostohryz",
"Kozmo909",
"Mikhail Krasovsky",
"kripanshu",
"kris",
@ -842,6 +852,7 @@
"Linux44313",
"LiteBalt",
"LittleNyanCat",
"Lizzetc",
"Lkham",
"Loex",
"Loko",
@ -933,6 +944,7 @@
"Meryu07",
"Meysam",
"MGH",
"Davis Michelle",
"Mick",
"Miguel",
"Miguelterrazas123",
@ -1254,6 +1266,7 @@
"ShadowQ",
"shafay",
"Manan Shah",
"shakesm",
"Sharvesh",
"Nalam Shashwath",
"Haige Shi",
@ -1271,6 +1284,7 @@
"Igor Slobodchuk",
"Rasim Smaili",
"Nicola Smaniotto",
"smertfhg",
"Nico Smit",
"Snack",
"Mahteus Soares",
@ -1549,6 +1563,7 @@
"مُحمَّد الأول",
"البطل",
"بسام البطل",
"رفيق العشي",
"ابو العواصف2020",
"عبدالرحمن النجم",
"امیرعلی",
@ -1585,6 +1600,7 @@
"حسین وفایی‌فرد",
"انا يا عمر انا بران يا عمر انا بران يا عمر انا بران يا عمر انا بران يا عمر انا بران يا عمر انا بران يا عمر انا بران يا عمر انا بران يا عمر انا بران يا عمر انا بران يا عمر انا بران يا",
"١٢٣٤٥",
"٦٤٦٦٤٦٤٦",
"علیرضا پودینه",
"वेदाँश त्यागी",
"അർഷഖ് ഹസ്സൻ",
@ -1618,6 +1634,7 @@
"神仙",
"药药Medic",
"蔚蓝枫叶",
"鲨鱼服·Medic",
"鲲鹏元帅",
"꧁ephyro꧂",
"공팔이",

View file

@ -56,8 +56,8 @@
"Boxer": {
"description": "فز بدون استخدامك للقنابل",
"descriptionComplete": "لقد فزت بدون استخدام القنابل",
"descriptionFull": "قم بإكمال ${LEVEL} بدون استخدام أية قنابل",
"descriptionFullComplete": "اكمل ${LEVEL} بدون استخدام أية قنابل",
"descriptionFull": "بدون استخدام اي قنابل${LEVEL} قم بإكمال",
"descriptionFullComplete": "دون استخدام اي قنابل${LEVEL} اكمل",
"name": "مُلاكِمْ"
},
"Dual Wielding": {
@ -66,10 +66,10 @@
"name": "اللكمة المزدوجة"
},
"Flawless Victory": {
"description": "انتصر بدون تعرض للأذى",
"description": "انتصر بدون التعرض للأذى",
"descriptionComplete": "لقد فزت بدون تعرضك للأذى",
"descriptionFull": "انتصر في ${LEVEL} بدون تعرضك للأذى",
"descriptionFullComplete": "لقد فزت في ${LEVEL} بدون تعرضك للأذى",
"descriptionFull": "دون تعرضك للأذى${LEVEL} فُزْ",
"descriptionFullComplete": "دون تعرضك للأذى ${LEVEL} لقد فُزتَ",
"name": "الفوز المستحق"
},
"Free Loader": {
@ -89,7 +89,7 @@
"descriptionComplete": "لقد انتصرت بدون استخدامك للكمات او القنابل",
"descriptionFull": "بدون استخدام اللكمات أو القنابل ${LEVEL} فز في",
"descriptionFullComplete": "بدون استخدام اللكمات أو القنابل ${LEVEL} لقد ربحت في",
"name": "الأسلحة المخفية"
"name": "حصلت على الحركات"
},
"In Control": {
"descriptionFull": "(قم بتوصيل جهاز تحكم (جهاز أو تطبيق",
@ -136,7 +136,7 @@
"descriptionComplete": "!لقد سجلت 5000 نقطة",
"descriptionFull": "${LEVEL} سجِّل 5000 نقطة في",
"descriptionFullComplete": "${LEVEL} لقد سجَّلتَ 5000 نقطة في",
"name": "إله ${LEVEL}"
"name": "زعيم ${LEVEL}"
},
"Onslaught Master": {
"description": "سجل 500 نقطة",
@ -160,10 +160,10 @@
"name": "${LEVEL} ساحر"
},
"Precision Bombing": {
"description": "powerups فز بدون اي",
"descriptionComplete": "powerups لقد فزتَ بدون أي",
"descriptionFull": "power-ups بدون اي ${LEVEL} فز في",
"descriptionFullComplete": "power-ups بدون اي ${LEVEL} لقد فزتَ في",
"description": "فُزْ بدون اي قوى خارقة",
"descriptionComplete": "لقد فزتَ بدون أي قوى خارقة",
"descriptionFull": "بدون اي قوى خارقة${LEVEL} فز في",
"descriptionFullComplete": "بدون اي قوى خارقة${LEVEL} لقد فزتَ في",
"name": "دقة القصف"
},
"Pro Boxer": {
@ -218,7 +218,7 @@
"Rookie Onslaught Victory": {
"description": "هزيمة كل الجولات",
"descriptionComplete": "هزم كل الجولات",
"descriptionFull": "${LEVEL} اكسب كل الجولات في",
"descriptionFull": "${LEVEL} اهزم كل الجولات في",
"descriptionFullComplete": "${LEVEL} هزم كل الجولات في",
"name": "${LEVEL} لقد انتصرت"
},
@ -250,9 +250,9 @@
},
"Stayin' Alive": {
"description": "فز بدون أن تموت",
"descriptionComplete": "فاز بدون أن يموت",
"descriptionComplete": "لقد فُزت بدون ان تموت",
"descriptionFull": "بدون أن تموت ${LEVEL} فز",
"descriptionFullComplete": "بدون أن يموت ${LEVEL} فاز",
"descriptionFullComplete": "بدون أن يموت ${LEVEL} لقد فزت",
"name": "البقاء حيا"
},
"Super Mega Punch": {
@ -265,8 +265,8 @@
"Super Punch": {
"description": "إلحاق الضرر 50٪ بلكمة واحدة",
"descriptionComplete": "ألحق الضرر 50٪ بلكمة واحدة",
"descriptionFull": "${LEVEL} إلحاق الضرر 50٪ بلكمة واحدة",
"descriptionFullComplete": "${LEVEL} ألحق الضرر 50٪ بلكمة واحدة",
"descriptionFull": "${LEVEL} إلحاق الضرر 50٪ بلكمة واحدة في",
"descriptionFullComplete": "${LEVEL} ألحق الضرر 50٪ بلكمة واحدة في",
"name": "لكمة خارقة"
},
"TNT Terror": {

View file

@ -1122,7 +1122,7 @@
"playlistsText": "列表",
"pleaseRateText": "如果你喜欢 ${APP_NAME},请考虑花一点时间\n来评价一下它或为它写一篇评论。这将为我们提供\n有用的反馈建议为游戏的未来开发给予支持。\n\n感谢您\n-eric",
"pleaseWaitText": "请稍等...",
"pluginsDetectedText": "新的插件已经加载.请在设置中启用它们.",
"pluginsDetectedText": "新插件安装成功,请重启游戏或在设置中设置它们~",
"pluginsText": "插件",
"practiceText": "练习",
"pressAnyButtonPlayAgainText": "按任意按钮再玩一次...",

View file

@ -720,14 +720,15 @@
"internetText": "Internet",
"inviteAFriendText": "Prijatelji nemaju igru? Pozovi ih da je\nprobaju i oni će dobiti ${COUNT} besplatnih ulaznica.",
"inviteFriendsText": "Pozovi Prijatelje",
"joinPublicPartyDescriptionText": "Pridruži se javnoj partiji:",
"localNetworkDescriptionText": "Uključi se u partiju na tvojoj mreži:",
"joinPublicPartyDescriptionText": "Pridruži se javnoj partiji",
"localNetworkDescriptionText": "Uđi u blisku partiju (Lan, Bluetooth, itd.)",
"localNetworkText": "Lokalna mreža",
"makePartyPrivateText": "Postavi moju partiju privatnom",
"makePartyPublicText": "Postavi moju partiju javnom",
"manualAddressText": "Adresa",
"manualConnectText": "Spoji se",
"manualDescriptionText": "Uljuči se u partiju po adresi:",
"manualJoinSectionText": "Uđi s Adresom",
"manualJoinableFromInternetText": "Mogu li se drugi priključiti tebi s Interneta?:",
"manualJoinableNoWithAsteriskText": "NE*",
"manualJoinableYesText": "DA",
@ -735,14 +736,17 @@
"manualText": "Ručno",
"manualYourAddressFromInternetText": "Tvoja adresa s Interneta:",
"manualYourLocalAddressText": "Tvoja lokalna adresa:",
"nearbyText": "Blizu",
"noConnectionText": "<nema veze>",
"otherVersionsText": "(druge verzije)",
"partyCodeText": "Grupna šifra",
"partyInviteAcceptText": "Prihvati",
"partyInviteDeclineText": "Odbij",
"partyInviteGooglePlayExtraText": "(pogledaj 'Google Play' karticu u prozoru 'Sakupi')",
"partyInviteIgnoreText": "Odbaci",
"partyInviteText": "${NAME} te pozvao\nda se priključiš njegovoj partiji!",
"partyNameText": "Naziv igre",
"partyServerRunningText": "Tvoj grupni server radi.",
"partySizeText": "Veličina žurke",
"partyStatusCheckingText": "provjeravam status...",
"partyStatusJoinableText": "tvoja igra je spremna za povezivanje s interneta",
@ -751,11 +755,21 @@
"partyStatusNotPublicText": "tvoja igra nije javna",
"pingText": "ping",
"portText": "Port",
"privatePartyCloudDescriptionText": "Privatne grupe radu na posvećenim cloud serverima; Nikakvih ruter konfiguracija potrebno",
"privatePartyHostText": "Napravi privatnu grupu",
"privatePartyJoinText": "Uđi u privatnu grupu",
"privateText": "Privatno",
"publicHostRouterConfigText": "Za ovo možda bude trebalo konfiguriranje \"port-forwarding\"-a na vašem ruteru. Za lakšu opciju napravite privatnu grupu",
"publicText": "Javno",
"requestingAPromoCodeText": "Dohvaćam kod...",
"sendDirectInvitesText": "Pošalji izravni poziv",
"sendThisToAFriendText": "Posalji ovaj kod prijatelju:",
"shareThisCodeWithFriendsText": "Podijeli ovaj kod s prijateljima:",
"showMyAddressText": "Prikaži moju IP adresu",
"startHostingPaidText": "Napravi sada za ${COST}",
"startHostingText": "Napravi",
"startStopHostingMinutesText": "Možeš početi i zaustaviti server besplatno za slijedećih ${MINUTES} minuta.",
"stopHostingText": "Prestani server",
"titleText": "Okupljanje",
"wifiDirectDescriptionBottomText": "Ako svi uređaji imaju 'Wi-Fi Direct' opciju, trebali bi ga moći iskoristiti da pronađu jedan\ndrugoga i povežu se. Kad su svi uređaji povezani, možeš kreiratu igru\nkoristeći karticu 'Lokalna mreža', isto kao i kod obične Wi-Fi mreže. \n\nZa najbolje rezultate, domaćin Wi-Fi Directa također bi trebao biti domaćin ${APP_NAME} igre.",
"wifiDirectDescriptionTopText": "Wi-Fi Direct možete koristiti da povežete Android uređaje direktno bez \npotrebe za Wi-Fi mrežom. Ovo najbolje radi na Android verziji 4.2 ili novijoj. \n\nZa korištenje, otvori Wi-Fi postavke i potraži 'Wi-Fi Direct' u izborniku.",
@ -813,6 +827,7 @@
"bombInfoText": "- Bomba -\nJača od udaraca, ali može rezultirati \nsamoubojstvom. Za najbolje \nrezultate, baci je prema neprijatelju \nprije nego što fitilj potpuno izgori.",
"canHelpText": "${APP_NAME} može pomoći.",
"controllersInfoText": "Možeš igrati ${APP_NAME} s prijeteljima preko mreže, ili svi\nmožete igrati na istom uređaju ako imate dovoljno kontrolera. \n${APP_NAME} podržava razne kontrolere; čak možete koristiti telefone\nkao kontrolere pomoću besplatne '${REMOTE_APP_NAME}' aplikacije. \nZa više informacija pogledaj pod Postavke->Kontroleri.",
"controllersInfoTextRemoteOnly": "Možete igrati ${APP_NAME} sa prijateljima \nPreko wifi-a ili\npreko istog uređaju koristeći mobitele kao kontrolere pomoću besplatnom aplikacijom '${REMOTE_APP_NAME}'",
"controllersText": "Kontroleri",
"controlsSubtitleText": "Tvoj prijateljski ${APP_NAME} lik ima par osnovnih kretnji:",
"controlsText": "Kontrole",
@ -1051,6 +1066,7 @@
"offText": "Isključeno",
"okText": "U redu",
"onText": "Uključeno",
"oneMomentText": "Jedan trenutak...",
"onslaughtRespawnText": "${PLAYER} će se ponovno pojaviti u naletu ${WAVE}",
"orText": "${A} ili ${B}",
"otherText": "Drugo...",
@ -1097,10 +1113,11 @@
"playerText": "Igrač",
"playlistNoValidGamesErrorText": "Ova lista igara ne sadrži nijednu valjanu otključanu igru.",
"playlistNotFoundText": "lista igara nije pronađena",
"playlistText": "Playlista",
"playlistsText": "Liste igara",
"pleaseRateText": "Ako ti se sviđa ${APP_NAME}, molim te razmisli o tome\nda ga ocijeniš ili napišeš recenziju.\nOvako šalješ korisnu povratnu informaciju koja pomaže u daljnjem razvoju.\n\nHvala!\n-eric",
"pleaseWaitText": "Molimo sačekajte...",
"pluginsDetectedText": "Novi dodatak(ci) detektiraju. Osposobi/konfiguriraj ih u postavkama.",
"pluginsDetectedText": "Novi dodatak(ci) detektiran(i) Resetiraj da ih ukljućiš ili ih konfiguriraj u postavkima",
"pluginsText": "Dodatci",
"practiceText": "Vježba",
"pressAnyButtonPlayAgainText": "Pritisni bilo koju tipku za ponovnu igru...",
@ -1496,6 +1513,7 @@
"Dutch": "Nizozemski",
"English": "Engleski",
"Esperanto": "Esperanto",
"Filipino": "Filipinski",
"Finnish": "Finski",
"French": "Francuski",
"German": "Njemački",
@ -1516,6 +1534,8 @@
"Slovak": "Slovački",
"Spanish": "Španjolski",
"Swedish": "Švedski",
"Tamil": "Tamil",
"Thai": "tajlandski",
"Turkish": "Turski",
"Ukrainian": "Ukrajinski",
"Venetian": "Venecijanski",
@ -1564,6 +1584,7 @@
"Account linking successful!": "Povezivanje računa uspješno!",
"Account unlinking successful!": "Odspajanje računa uspješno!",
"Accounts are already linked.": "Računi su već povezani.",
"Ad view could not be verified.\nPlease be sure you are running an official and up-to-date version of the game.": "Prikaz oglasa se nije mogao provjeriti.\nMolim vas budite sigurni da koristite službenu i suvremenu verziju ove igre",
"An error has occurred; (${ERROR})": "Greška se pojavila; (${ERROR})",
"An error has occurred; please contact support. (${ERROR})": "Greška se pojavila; molimo vas pozovite pomoć. (${ERROR})",
"An error has occurred; please contact support@froemling.net.": "Greška se pojavila; molim vas pozovite support@froemling.net.",
@ -1589,6 +1610,7 @@
"Max number of profiles reached.": "Max broj dosegao profila.",
"Maximum friend code rewards reached.": "Maksimalne nagrade od prijateljskih kodova dostignute.",
"Message is too long.": "Poruka je prevelika.",
"No servers are available. Please try again soon.": "Nema dostupnih servera. Pokušajte opet kasnije.",
"Profile \"${NAME}\" upgraded successfully.": "Profil \"${NAME}\" uspjesno upgrajdovan",
"Profile could not be upgraded.": "Profil se ne može ažurirati.",
"Purchase successful!": "Kupovina uspješna!",
@ -1598,10 +1620,12 @@
"Sorry, this code has already been used.": "Izvini, ovaj kod je već iskorišćen.",
"Sorry, this code has expired.": "Izvini, ovaj kod je istekao.",
"Sorry, this code only works for new accounts.": "Izvini, ovaj kod radi samo za nove igrače.",
"Still searching for nearby servers; please try again soon.": "Još pretražuješ za bliske servere; pokušajte opet kasnije",
"Temporarily unavailable; please try again later.": "Privremeno nedostupno; molimo vas pokušajte kasnije.",
"The tournament ended before you finished.": "Turnir je šio prije nego što si ti završio.",
"This account cannot be unlinked for ${NUM} days.": "Ovaj se račun ne može odvezati ${NUM} dana.",
"This code cannot be used on the account that created it.": "Ovaj kod se nemoze koristiti na akauntu koji je stvorio.",
"This is currently unavailable; please try again later.": "Ovo je trenutačno nedostupno; pokušajte opet kasnije.",
"This requires version ${VERSION} or newer.": "Ovo zahtijeva verziju ${VERSION} ili noviju.",
"Tournaments disabled due to rooted device.": "Turniri nedostupni zbog rootanog uređaja.",
"Tournaments require ${VERSION} or newer": "Turniri koriste ${VERSION} ili noviju",

View file

@ -324,6 +324,7 @@
"achievementsRemainingText": "Achievements Remaining:",
"achievementsText": "Achievements",
"achievementsUnavailableForOldSeasonsText": "Sorry, achievement specifics are not available for old seasons.",
"activatedText": "${THING} activated.",
"addGameWindow": {
"getMoreGamesText": "Get More Games...",
"titleText": "Add Game"
@ -1115,7 +1116,10 @@
"playlistsText": "Playlists",
"pleaseRateText": "If you're enjoying ${APP_NAME}, please consider taking a\nmoment and rating it or writing a review. This provides\nuseful feedback and helps support future development.\n\nthanks!\n-eric",
"pleaseWaitText": "Please wait...",
"pluginsDetectedText": "New plugin(s) detected. Enable/configure them in settings.",
"pluginClassLoadErrorText": "Error loading plugin class '${PLUGIN}': ${ERROR}",
"pluginInitErrorText": "Error initing plugin '${PLUGIN}': ${ERROR}",
"pluginsDetectedText": "New plugin(s) detected. Restart to activate them, or configure them in settings.",
"pluginsRemovedText": "${NUM} plugin(s) no longer found.",
"pluginsText": "Plugins",
"practiceText": "Practice",
"pressAnyButtonPlayAgainText": "Press any button to play again...",
@ -1851,6 +1855,8 @@
"winsPlayerText": "${NAME} Wins!",
"winsTeamText": "${NAME} Wins!",
"winsText": "${NAME} Wins!",
"workspaceSyncErrorText": "Error syncing ${WORKSPACE}. See log for details.",
"workspaceSyncReuseText": "Can't sync ${WORKSPACE}. Reusing previous synced version.",
"worldScoresUnavailableText": "World scores unavailable.",
"worldsBestScoresText": "World's Best Scores",
"worldsBestTimesText": "World's Best Times",

View file

@ -211,14 +211,14 @@
"descriptionComplete": "Naipanalo ang laro",
"descriptionFull": "Panalunin ang laro sa ${LEVEL}",
"descriptionFullComplete": "Pinanalo ang laro sa ${LEVEL}",
"name": "${LEVEL} Panalo"
"name": "Nanalo sa ${LEVEL}"
},
"Rookie Onslaught Victory": {
"description": "Italo lahat ang mga kaway",
"descriptionComplete": "Natalo lahat ang mga kaway",
"descriptionFull": "Italo lahat ang mga kaway sa ${LEVEL}",
"descriptionFullComplete": "Natalo lahat ng mga kaway sa ${LEVEL}",
"name": "${LEVEL} Panalo"
"name": "Nanalo sa ${LEVEL}"
},
"Runaround God": {
"description": "Maka-iskor ng 2000 na Puntos",
@ -312,7 +312,7 @@
"descriptionComplete": "Natalo ang lahat na mga kaway",
"descriptionFull": "Talunin ang lahat na mga kaway sa ${LEVEL}",
"descriptionFullComplete": "Natalo ang lahat na mga kaway sa ${LEVEL}",
"name": "${LEVEL} Panalo"
"name": "Nanalo sa ${LEVEL}"
},
"Uber Runaround Victory": {
"description": "Tapusin ang lahat na kaway",
@ -1110,7 +1110,7 @@
"playlistsText": "Mga Playlist",
"pleaseRateText": "Kung nae-enjoy mo ang ${APP_NAME}, mangyaring isaalang-alang ang \npagkuha na sandali lang at i-rate ito o pagsulat ng isang pagsusuri. Nagbibigay ito ngkapaki-pakinabang na feedback at \ntumutulong sa pagsuporta sa pag-unlad sa hinaharap.\n\nsalamat!\n-eric",
"pleaseWaitText": "Hintay lang…",
"pluginsDetectedText": "May nakitang bagong (mga) plugin. Paganahin/i-configure ang mga ito sa mga setting.",
"pluginsDetectedText": "May nakitang bagong (mga) plugin. I-restart para i-activate ang mga ito, o i-configure ang mga ito sa mga setting.",
"pluginsText": "Mga Plugin",
"practiceText": "Pagsasagawa",
"pressAnyButtonPlayAgainText": "Pindutin ang anumang button para maglaro muli...",
@ -1801,13 +1801,13 @@
"votedAlreadyText": "Nakaboto ka na",
"votesNeededText": "Kailangan ng ${NUMBER} (na) boto",
"vsText": "vs.",
"waitingForHostText": "(naghihintay para sa ${HOST} na magpatuloy)",
"waitingForHostText": "(naghihintay para kay ${HOST} na magpatuloy)",
"waitingForPlayersText": "naghihintay ng mga manlalaro na sumali...",
"waitingInLineText": "Naghihintay sa pila (puno ang party)...",
"watchAVideoText": "Manood ng Isang video",
"watchAnAdText": "Manood ng Ad",
"watchWindow": {
"deleteConfirmText": "Tangalin \"${REPLAY}\"?",
"deleteConfirmText": "Tangalin ang \"${REPLAY}\"?",
"deleteReplayButtonText": "Itanggal ang \nReplay",
"myReplaysText": "Ang Mga Replay Ko",
"noReplaySelectedErrorText": "Walang Napiling Replay",
@ -1825,7 +1825,7 @@
"watchReplayButtonText": "Ipanood ang\nReplay"
},
"waveText": "Kaway",
"wellSureText": "Oo syempre",
"wellSureText": "Oo Syempre!",
"wiimoteLicenseWindow": {
"titleText": "Copyright ni DarwiinRemote"
},
@ -1839,10 +1839,10 @@
"listenText": "Makinig",
"macInstructionsText": "Tiyaking naka-off ang iyong Wii at naka-enable ang Bluetooth\nsa iyong Mac, pagkatapos ay pindutin ang 'Makinig'. Maaari ang suporta ng Wiimote\nmaging medyo patumpik-tumpik, kaya maaaring kailanganin mong subukan ng ilang beses\nbago ka magkaroon ng koneksyon.\n\nDapat hawakan ng Bluetooth ang hanggang 7 konektadong device,\nkahit na ang iyong mileage ay maaaring mag-iba.\n\nSinusuportahan ng BombSquad ang orihinal na Wiimotes, Nunchuks,\nat ang Klasikong Controller.\nGumagana na rin ang mas bagong Wii Remote Plus\nngunit hindi sa mga kalakip.",
"thanksText": "Salamat sa DarwiinRemote team\nPara maging posible ito.",
"titleText": "Wiimote Setup"
"titleText": "Pag-setup ng Wiimote"
},
"winsPlayerText": "${NAME} Nanalo!",
"winsTeamText": "${NAME} Nanalo!",
"winsPlayerText": "Nanalo si ${NAME}!",
"winsTeamText": "Nanalo ang ${NAME}!",
"winsText": "${NAME} Nanalo!",
"worldScoresUnavailableText": "Ang scores sa buong mundo ay hindi pa handa",
"worldsBestScoresText": "Pinakamahusay na Iskor ng Mundo",

View file

@ -1191,7 +1191,7 @@
"playlistsText": "Playlists",
"pleaseRateText": "Wenn dir ${APP_NAME} Spaß macht, nimm dir kurz die Zeit\nund bewerte es oder schreib ein Review. Durch das Feedback\nwird zukünftige Arbeit an dem Spiel unterstützt.\n\nVielen Dank!\n-eric",
"pleaseWaitText": "Bitte warte...",
"pluginsDetectedText": "Neue Plugins erkannt. Aktivieren / konfigurieren Sie sie in den Einstellungen.",
"pluginsDetectedText": "Neue Plugins erkannt. Neustarten, um sie zu aktivieren oder in den Einstellungen konfigurieren.",
"pluginsText": "Plugins",
"practiceText": "Übung",
"pressAnyButtonPlayAgainText": "Drücke einen Knopf um nochmal zu spielen...",

View file

@ -333,6 +333,7 @@
"achievementsRemainingText": "Azhiévemúnts Rzmáinzng:",
"achievementsText": "Achéevúmentz",
"achievementsUnavailableForOldSeasonsText": "Srrrz, chi faow co wjefo iwefo wef;oiajwf asodvjoa sdfj odfjsodf.",
"activatedText": "${THING} cjwoeifjwer.",
"addGameWindow": {
"getMoreGamesText": "Gztz Mrrz Gmzz...",
"titleText": "Ádzd Gámzé",
@ -1196,7 +1197,10 @@
"playlistsText": "Plzlntsfs",
"pleaseRateText": "If yóu're énjoyíng ${APP_NAME}, pléase cónsider táking z\nmúment ánd rúting zt ór wrúting í reváew. Thzs próvidzs\níseful fzédbíck ánd hélps súpport fútúre dévelópmént.\n\nthénkz!\n-eric",
"pleaseWaitText": "Poke focwoe fjowef.",
"pluginsDetectedText": "Nz pweo woe dfowocewr. Enfwoc/cowefe thzm incowrdss.",
"pluginClassLoadErrorText": "Erori cojflw cwoej woer erwe '${PLUGIN}': ${ERROR}",
"pluginInitErrorText": "Error cowejwoer plugins ${PLUGIN}: ${ERROR}",
"pluginsDetectedText": "Now cow rwoejcw. Wnewoiow rwepwot ghowcoweior weorjdfdfs.",
"pluginsRemovedText": "${NUM} powefjwj no legate fcwdf.",
"pluginsText": "Plfzlfez",
"practiceText": "Pcoifjzzz",
"pressAnyButtonPlayAgainText": "Prézs ánz búttún tóz pláy agánz...",
@ -1990,6 +1994,8 @@
"winsSingularText": "${NAME} WinzfjlzSS!",
"winsTeamText": "${NAME} Wnttm!",
"winsText": "${NAME} Wínsz!",
"workspaceSyncErrorText": "Eeror ocijo itself ${WORKSPACE}. See zoo crew tcowdf.",
"workspaceSyncReuseText": "Cnoiwj zoo ${WORKSPACE}. ROI cw cwoerpwer housers.",
"worldScoresUnavailableText": "Wrlzld scrzzl unvlfldsjbzl.",
"worldsBestScoresText": "Wúrld's Bést Scórzs",
"worldsBestTimesText": "Wúrld's Bzst Tímés",

View file

@ -1162,7 +1162,7 @@
"playlistsText": "Scalette",
"pleaseRateText": "Se ti sta piacendo ${APP_NAME}, prenditi\nun momento per valutarlo o scriverci su una recensione.\nQuesto aiuterà a supportare futuri sviluppi.\n\nGrazie!\n-eric",
"pleaseWaitText": "Attendi...",
"pluginsDetectedText": "Nuovo/i Plugin rilevato/i. Abilitali/configurali nelle impostazioni.",
"pluginsDetectedText": "nuovo/i plugin rilevato. Riavvia per attivarli, o configurali nelle impostazioni.",
"pluginsText": "Plugin",
"practiceText": "Allenamento",
"pressAnyButtonPlayAgainText": "Premi un pulsante qualunque per rigiocare...",

View file

@ -1161,7 +1161,7 @@
"playlistsText": "Listy gier",
"pleaseRateText": "Jeśli polubiłeś ${APP_NAME}, proszę o poddanie go ocenie\nlub napisanie krótkiej recenzji. Pozwoli to zebrać przydatne\ninformacje, które pomogą wesprzeć rozwój gry w przyszłości.\n\nDziękuję!\n-Eric",
"pleaseWaitText": "Czekaj chwilkę...",
"pluginsDetectedText": "Nowe pluginy wykryte. Włącz/skonfiguruj je w ustawieniach.",
"pluginsDetectedText": "Wykryto nowe pluginy. Uruchom ponownie grę, aby je aktywować, lub skonfiguruje je w ustawieniach.",
"pluginsText": "Pluginy",
"practiceText": "Praktyka",
"pressAnyButtonPlayAgainText": "Naciśnij dowolny przycisk aby zagrać ponownie...",

View file

@ -1183,7 +1183,7 @@
"playlistsText": "Playlists",
"pleaseRateText": "Se você está curtindo ${APP_NAME}, por favor, dê um tempinho\npara avaliar e comentar. Isso nos dá uma opinião útil\ne ajuda no desenvolvimento do jogo.\n\nobrigado!\n-eric",
"pleaseWaitText": "Por favor, aguarde...",
"pluginsDetectedText": "Novo(s) plugin(s) detected. Ative-os/configure-os em configurações.",
"pluginsDetectedText": "Novo(s) plugin(s) detetados. Reinicie o jogo para ativá-los ou configure-os nas configurações.",
"pluginsText": "Plugins",
"practiceText": "Praticar",
"pressAnyButtonPlayAgainText": "Aperte qualquer botão para jogar novamente...",

File diff suppressed because it is too large Load diff

View file

@ -1166,7 +1166,7 @@
"playlistsText": "Плей-листы",
"pleaseRateText": "Если вам нравится игра ${APP_NAME}, пожалуйста, подумайте о том,\nчтобы оценить ее или написать рецензию. Это обеспечивает полезную\nобратную связь и помогает поддержать дальнейшую разработку.\n\nСпасибо!\n- Эрик",
"pleaseWaitText": "Пожалуйста, подождите...",
"pluginsDetectedText": "Обнаружены новые плагины. Включите/настройте их в настройках.",
"pluginsDetectedText": "Обнаружены новые плагины! Перезапустите игру, чтобы активировать их, или настройте их в настройках.",
"pluginsText": "Плагины",
"practiceText": "Тренировка",
"pressAnyButtonPlayAgainText": "Нажмите любую кнопку чтобы играть снова...",

View file

@ -1178,7 +1178,7 @@
"playlistsText": "Listas de Juego",
"pleaseRateText": "Si te gusta ${APP_NAME}, por favor tomate un momento\npara calificar o escribir una reseña. Esto proporcionará\ninformación útil y ayuda al soporte del futuro desarrollo del juego.\n\n¡gracias!\n-eric",
"pleaseWaitText": "Por favor, espera...",
"pluginsDetectedText": "Nuevos plugin(s) detectados. Activar/configurarlos en los ajustes.",
"pluginsDetectedText": "Nuevos complemento(s) detectados. Reinicie para activarlos, o configúrelos en la configuración",
"pluginsText": "Plugins",
"practiceText": "Práctica",
"pressAnyButtonPlayAgainText": "Oprime cualquier botón jugar de nuevo...",

View file

@ -1043,7 +1043,7 @@
"noExternalStorageErrorText": "இந்தச் சாதனத்தில் வெளிப்புறச் சேமிப்பு இல்லை",
"noGameCircleText": "பிழை: GameCircle இல் உள்நுழையவில்லை",
"noScoresYetText": "இன்னும் மதிப்பெண்கள் இல்லை.",
"noThanksText": "இல்லை நன்றி",
"noThanksText": "இல்லை, நன்றி!",
"noTournamentsInTestBuildText": "எச்சரிக்கை: இந்த சோதனை உருவாக்கத்தில் இருந்து போட்டியின் மதிப்பெண்கள் புறக்கணிக்கப்படும்.",
"noValidMapsErrorText": "இந்த விளையாட்டு வகைக்கு சரியான வரைபடங்கள் இல்லை.",
"notEnoughPlayersRemainingText": "போதுமான வீரர்கள் மீதமில்லை; வெளியேறி ஒரு புதிய விளையாட்டைத் தொடங்கவும்.",
@ -1108,7 +1108,7 @@
"playlistsText": "பிளேலிஸ்ட்கள்",
"pleaseRateText": "நீங்கள் ${APP_NAME} ஐ அனுபவிக்கிறீர்கள் என்றால், தயவுசெய்து எடுப்பதைக் கவனியுங்கள்\nதருணம் மற்றும் மதிப்பிடுதல் அல்லது விமர்சனம் எழுதுதல். இது வழங்குகிறது\nபயனுள்ள கருத்து மற்றும் எதிர்கால வளர்ச்சிக்கு உதவுகிறது.\n\nநன்றி!\n-எரிக்",
"pleaseWaitText": "தயவுசெய்து காத்திருங்கள்...",
"pluginsDetectedText": "புதிய செருகுநிரல் (கள்) கண்டறியப்பட்டது. அமைப்புகளில் அவற்றை இயக்கவும்/கட்டமைக்கவும்.",
"pluginsDetectedText": "புதிய செருகுநிரல்(கள்) கண்டறியப்பட்டது. அவற்றைச் செயல்படுத்த மீண்டும் தொடங்கவும் அல்லது அமைப்புகளில் உள்ளமைக்கவும்.",
"pluginsText": "செருகுநிரல்கள்",
"practiceText": "பயிற்சி",
"pressAnyButtonPlayAgainText": "மீண்டும் விளையாட எந்த பட்டனையும் அழுத்தவும்...",
@ -1304,7 +1304,7 @@
"iconsText": "சின்னங்கள்",
"loadErrorText": "பக்கத்தை ஏற்ற முடியவில்லை.\nஉங்கள் இணைய இணைப்பைச் சரிபார்க்கவும்.",
"loadingText": "ஏற்றுகிறது",
"mapsText": "Maps",
"mapsText": "வரைபடங்கள்",
"miniGamesText": "மினிகேம்ஸ்",
"oneTimeOnlyText": "(ஒரு முறை மட்டும்)",
"purchaseAlreadyInProgressText": "இந்த பொருளை வாங்குவது ஏற்கனவே நடந்து கொண்டிருக்கிறது.",
@ -1361,11 +1361,11 @@
"tournamentStandingsText": "போட்டி நிலைகள்",
"tournamentText": "போட்டி",
"tournamentTimeExpiredText": "போட்டி நேரம் காலாவதியானது",
"tournamentsText": "Tournaments",
"tournamentsText": "போட்டிகள்",
"translations": {
"characterNames": {
"Agent Johnson": "ஏஜெண்ட் ஜான்சன்",
"B-9000": "B-9000",
"B-9000": "பி-9000",
"Bernard": "பர்னார்ட்",
"Bones": "போன்ஸ்",
"Butch": "பட்ச்",
@ -1526,7 +1526,7 @@
"Thai": "தாய்",
"Turkish": "டர்கிஷ்",
"Ukrainian": "உக்ரைனியன்",
"Venetian": "வெநெடியன்",
"Venetian": "வெனிசியன்",
"Vietnamese": "வியெட்னமீஸ்"
},
"leagueNames": {
@ -1536,7 +1536,7 @@
"Silver": "வெள்ளி"
},
"mapsNames": {
"Big G": "Big G",
"Big G": "பிக் சி",
"Bridgit": "பிரிட்சிட்",
"Courtyard": "கோர்ட்யார்ட்",
"Crag Castle": "கிரக் கோட்டை",
@ -1689,7 +1689,7 @@
},
"tips": {
"A perfectly timed running-jumping-spin-punch can kill in a single hit\nand earn you lifelong respect from your friends.": "ஒரு சரியான நேர ஓட்டம்-ஜம்பிங்-ஸ்பின்-பஞ்ச் ஒரே வெற்றியில் கொல்லலாம்\nமற்றும் உங்கள் நண்பர்களிடமிருந்து உங்களுக்கு வாழ்நாள் முழுவதும் மரியாதை கிடைக்கும்.",
"Always remember to floss.": "எப்போதும் floss செய்ய நினைவில் கொள்ளுங்கள்.",
"Always remember to floss.": "எப்போதும் ஃப்ளோஸ் செய்ய நினைவில் கொள்ளுங்கள்.",
"Create player profiles for yourself and your friends with\nyour preferred names and appearances instead of using random ones.": "உங்களுக்கும் உங்கள் நண்பர்களுக்கும் பிளேயர் சுயவிவரங்களை உருவாக்கவும்\nசீரற்றவற்றைப் பயன்படுத்துவதற்குப் பதிலாக உங்கள் விருப்பமான பெயர்கள் மற்றும் தோற்றங்கள்.",
"Curse boxes turn you into a ticking time bomb.\nThe only cure is to quickly grab a health-pack.": "சாபப் பெட்டிகள் உங்களை ஒரு டிக்கிங் டைம் பாம்டாக மாற்றும்.\nஒரே ஒரு ஹெல்த் பேக் சீக்கிரம் பிடிப்பதுதான்.",
"Despite their looks, all characters' abilities are identical,\nso just pick whichever one you most closely resemble.": "அவற்றின் தோற்றம் இருந்தபோதிலும், அனைத்து கதாபாத்திரங்களின் திறன்களும் ஒரே மாதிரியானவை,\nஎனவே நீங்கள் மிகவும் நெருக்கமாக ஒத்திருப்பதைத் தேர்ந்தெடுக்கவும்.",
@ -1750,7 +1750,7 @@
"phrase08Text": "இப்போது அதிக வேகத்தைப் பெற குதித்து சுழலலாம்.",
"phrase09Text": "ஆ, அது சிறந்தது.",
"phrase10Text": "ஓடுவதும் உதவுகிறது.",
"phrase11Text": "இயக்க எந்த பொத்தானையும் அழுத்திப் பிடிக்கவும்.",
"phrase11Text": "இயக்க எந்த பட்டனையும் அழுத்திப் பிடிக்கவும்.",
"phrase12Text": "கூடுதல் அற்புதமான குத்துகளுக்கு, ஓடவும் சுழலவும் முயற்சிக்கவும்.",
"phrase13Text": "அச்சச்சோ; ${NAME} பற்றி மன்னிக்கவும்.",
"phrase14Text": "கொடிகள் .. அல்லது ${NAME} போன்றவற்றை எடுத்து எறியலாம்.",
@ -1761,11 +1761,11 @@
"phrase19Text": "குதிப்பது உயரத்தை எறிய உதவுகிறது.",
"phrase20Text": "உங்கள் குண்டுகளை இன்னும் நீண்ட தூரத்திற்கு \"சவுக்கடி\".",
"phrase21Text": "உங்கள் குண்டுகளை டைமிங் செய்வது தந்திரமானதாக இருக்கலாம்.",
"phrase22Text": "Dang.",
"phrase22Text": "அச்சச்சோ.",
"phrase23Text": "ஒன்றிரண்டு அல்லது இரண்டு நிமிடங்களுக்கு உருகி \"Cooking off\" முயற்சிக்கவும்.",
"phrase24Text": "ஹூரே! நன்றாக போடப்பட்டது",
"phrase25Text": "சரி, அது பற்றி தான்.",
"phrase26Text": "இப்போது அவர்களைப் போய் புலி!",
"phrase26Text": "இப்போது அவர்களைப் போய் புடி புலியே!",
"phrase27Text": "உங்கள் பயிற்சியை நினைவில் கொள்ளுங்கள், நீங்கள் உயிருடன் திரும்பி வருவீர்கள்!",
"phrase28Text": "...நன்று,இருக்கலாம்...",
"phrase29Text": "நல்ல அதிர்ஷ்டம்!",

View file

@ -216,7 +216,7 @@
},
"Rookie Onslaught Victory": {
"description": "Tüm dalgaları kazan",
"descriptionComplete": "Tüm dalgalar kazanıldı",
"descriptionComplete": "Tüm dalgaları kazan",
"descriptionFull": "${LEVEL} da tüm dalgaları kazan",
"descriptionFullComplete": "${LEVEL} da tüm dalgalar kazanıldı",
"name": "${LEVEL} Galibiyeti"
@ -226,7 +226,7 @@
"descriptionComplete": "2000 puan kazanıldı",
"descriptionFull": "${LEVEL} da 2000 puan kazan",
"descriptionFullComplete": "${LEVEL} da 2000 puan kazanıldı",
"name": "${LEVEL} Tanrısı"
"name": "${LEVEL} Tanrı"
},
"Runaround Master": {
"description": "500 puan kazan",
@ -237,7 +237,7 @@
},
"Runaround Wizard": {
"description": "1000 puan kazan",
"descriptionComplete": "1000 puan kazanıldı",
"descriptionComplete": "1000 puan kazan",
"descriptionFull": "${LEVEL} da 1000 puan kazan",
"descriptionFullComplete": "${LEVEL} da 1000 puan kazanıldı",
"name": "${LEVEL} Büyücüsü"
@ -249,7 +249,7 @@
},
"Stayin' Alive": {
"description": "Hiç ölmeden Kazan",
"descriptionComplete": "Hiç ölmeden kazanıldı",
"descriptionComplete": "Hiç ölmeden kazan",
"descriptionFull": "Hiç ölmeden ${LEVEL} da kazan",
"descriptionFullComplete": "Hiç ölmeden ${LEVEL} da kazanıldı",
"name": "Hayatta Kal"
@ -259,7 +259,7 @@
"descriptionComplete": "Tek yumruk ile %100 hasar verildi",
"descriptionFull": "${LEVEL} da tek yumruk ile %100 hasar ver",
"descriptionFullComplete": "${LEVEL} da tek yumruk ile %100 hasar verildi",
"name": "Super Mega Yumruk"
"name": "Süper Mega Yumruk"
},
"Super Punch": {
"description": "Tek yumruk ile %50 hasar ver",
@ -277,19 +277,19 @@
},
"Team Player": {
"descriptionFull": "4+ oyuncu ile bir Takımlar oyunu başlat",
"descriptionFullComplete": "4+ oyuncu ile bir Takımlar oyunu başlatıldı",
"descriptionFullComplete": "4+ oyuncu ile bir Takım oyunu başlat",
"name": "Takım Oyuncusu"
},
"The Great Wall": {
"description": "Bütün haylazları durdur",
"descriptionComplete": "Bütün haylazlar durduruldu",
"descriptionComplete": "Bütün haylazları durdur",
"descriptionFull": "${LEVEL} da bütün haylazları durdur",
"descriptionFullComplete": "${LEVEL} da bütün haylazlar durduruldu",
"name": "Muhteşem Bariyer"
},
"The Wall": {
"description": "Bütün haylazları durdur",
"descriptionComplete": "Bütün haylazlar durduruldu",
"descriptionComplete": "Bütün haylazları durdur",
"descriptionFull": "${LEVEL} da bütün haylazları durdur",
"descriptionFullComplete": "${LEVEL} da bütün haylazlar durduruldu",
"name": "Bariyer"
@ -320,7 +320,7 @@
"descriptionComplete": "Tüm dalgalar tamamlandı",
"descriptionFull": "${LEVEL} da tüm dalgaları tamamla",
"descriptionFullComplete": "${LEVEL} da tüm dalgalar tamamlandı",
"name": "${LEVEL} Galibiyeti"
"name": "${LEVEL} Galibiyet"
}
},
"achievementsRemainingText": "Kalan Başarılar;",
@ -353,14 +353,14 @@
"bombBoldText": "BOMBA",
"bombText": "Bomba",
"boostText": "Öne Geç",
"bsRemoteConfigureInAppText": "${REMOTE_APP_NAME} Uygulaması kendisini yapılandırdı",
"bsRemoteConfigureInAppText": "${REMOTE_APP_NAME} Uygulamayı kendisine yapılandır",
"buttonText": "buton",
"canWeDebugText": "Oyun otomatik olarak hataları, çökmeleri ve basit \nkullanım istatistiklerini geliştiriciye gondersin mi?\n\nBu veri içeriği kişisel bilgilerinizi kullanmaz\noyunun daha iyi çalışmasına yardımcı olur.",
"cancelText": "İptal",
"cantConfigureDeviceText": "Üzgünüz, ${DEVICE} ayarlanabilir değil.",
"challengeEndedText": "Bu mücadele sona erdi.",
"chatMuteText": "Konuşmayı sustur",
"chatMutedText": "Konuşma Susturuldu",
"chatMutedText": "Sohbet Susturuldu",
"chatUnMuteText": "Konuşmayı aç",
"choosingPlayerText": "<oyuncu seçme>",
"completeThisLevelToProceedText": "İlerlemek için bu \nseviyeyi tamamlamalısınız!",
@ -438,7 +438,7 @@
"movementControlScaleText": "Hareket Kontrolü Ölçeği",
"movementText": "Hareket",
"resetText": "Sıfırla",
"swipeControlsHiddenText": "Sürme Simgelerini Gizle",
"swipeControlsHiddenText": "Joystick'i gizle",
"swipeInfoText": "\"Sürme\" kontrol stilleri kullanışlıdır fakat\nkontrollere bakmadan oynamak daha kolaydır.",
"swipeText": "sürme",
"titleText": "Dokunmatikleri Yapılandır"
@ -1108,7 +1108,7 @@
"playlistsText": "ÇalmaListesi",
"pleaseRateText": "Eğer ${APP_NAME}'dan zevk aldıysan, lütfen oyunu değerlerdir\nve yorumunu yaz. Bu oyunun daha fazla geliştirilmesine\nyardımcı olur.\n\nteşekkürler!\n-eric",
"pleaseWaitText": "Lütfen bekle...",
"pluginsDetectedText": "Yeni eklenti(ler) tespit edildi. Bunları ayarlardan etkinleştirin / yapılandırın.",
"pluginsDetectedText": "Yeni eklentiler tespit edildi. Onları etkinleştirmek veya ayarlarda yapılandırmak için oyunu yeniden başlatın.",
"pluginsText": "Eklentiler",
"practiceText": "Alıştırma",
"pressAnyButtonPlayAgainText": "Tekrar oynamak için bir tuşa basın...",

View file

@ -1105,7 +1105,7 @@
"playlistsText": "Łiste de zugo",
"pleaseRateText": "Se ${APP_NAME} el ze drio piazerte, tote un àtemo par\nłasarghe zó na vałudasion o scrìvarghe zó un comento. 'Ste\nopinion łe tornarà còmode par dezviłupi fuduri de'l zugo.\n\ngrasie!\n-eric",
"pleaseWaitText": "Speta n'àtemo...",
"pluginsDetectedText": "Estension nove rełevàe. Atìvełe/configùrełe inte łe inpostasion.",
"pluginsDetectedText": "Estension nove rełevàe. Retaca el zugo par ativarle, o configùrełe so łe inpostasion.",
"pluginsText": "Estension",
"practiceText": "Pràtega",
"pressAnyButtonPlayAgainText": "Struca un boton calsìase par zugar danovo...",

View file

@ -74,7 +74,7 @@ class AccountV1Subsystem:
def get_league_rank_points(self,
data: dict[str, Any] | None,
subset: str = None) -> int:
subset: str | None = None) -> int:
"""(internal)"""
if data is None:
return 0

View file

@ -610,8 +610,8 @@ class Achievement:
x: float,
y: float,
delay: float,
outdelay: float = None,
color: Sequence[float] = None,
outdelay: float | None = None,
color: Sequence[float] | None = None,
style: str = 'post_game') -> list[ba.Actor]:
"""Create a display for the Achievement.

View file

@ -53,14 +53,15 @@ class AdsSubsystem:
def show_ad(self,
purpose: str,
on_completion_call: Callable[[], Any] = None) -> None:
on_completion_call: Callable[[], Any] | None = None) -> None:
"""(internal)"""
self.last_ad_purpose = purpose
_ba.show_ad(purpose, on_completion_call)
def show_ad_2(self,
purpose: str,
on_completion_call: Callable[[bool], Any] = None) -> None:
def show_ad_2(
self,
purpose: str,
on_completion_call: Callable[[bool], Any] | None = None) -> None:
"""(internal)"""
self.last_ad_purpose = purpose
_ba.show_ad_2(purpose, on_completion_call)

View file

@ -341,7 +341,6 @@ class App:
from bastd import maps as stdmaps
from bastd.actor import spazappearance
from ba._generated.enums import TimeType
self._aioloop = _asyncio.setup_asyncio()
@ -430,8 +429,6 @@ class App:
self.meta.on_app_running()
self.plugins.on_app_running()
import custom_hooks
custom_hooks.on_app_running()
# from ba._dependency import test_depset
# test_depset()
@ -580,7 +577,7 @@ class App:
def launch_coop_game(self,
game: str,
force: bool = False,
args: dict = None) -> bool:
args: dict | None = None) -> bool:
"""High level way to launch a local co-op session."""
# pylint: disable=cyclic-import
from ba._campaign import getcampaign

View file

@ -177,9 +177,10 @@ def garbage_collect() -> None:
gc.collect()
def print_live_object_warnings(when: Any,
ignore_session: ba.Session = None,
ignore_activity: ba.Activity = None) -> None:
def print_live_object_warnings(
when: Any,
ignore_session: ba.Session | None = None,
ignore_activity: ba.Activity | None = None) -> None:
"""Print warnings for remaining objects in the current context."""
# pylint: disable=cyclic-import
from ba._session import Session

View file

@ -177,7 +177,7 @@ class CoopGameActivity(GameActivity[PlayerType, TeamType]):
def spawn_player_spaz(self,
player: PlayerType,
position: Sequence[float] = (0.0, 0.0, 0.0),
angle: float = None) -> PlayerSpaz:
angle: float | None = None) -> PlayerSpaz:
"""Spawn and wire up a standard player spaz."""
spaz = super().spawn_player_spaz(player, position, angle)

View file

@ -841,7 +841,7 @@ class GameActivity(Activity[PlayerType, TeamType]):
def spawn_player_spaz(self,
player: PlayerType,
position: Sequence[float] = (0, 0, 0),
angle: float = None) -> PlayerSpaz:
angle: float | None = None) -> PlayerSpaz:
"""Create and wire up a ba.PlayerSpaz for the provided ba.Player."""
# pylint: disable=too-many-locals
# pylint: disable=cyclic-import

View file

@ -360,7 +360,7 @@ def _verify_object_death(wref: weakref.ref) -> None:
print_active_refs(obj)
def storagename(suffix: str = None) -> str:
def storagename(suffix: str | None = None) -> str:
"""Generate a unique name for storing class data in shared places.
Category: **General Utility Functions**

View file

@ -240,7 +240,7 @@ class LanguageSubsystem:
def get_resource(self,
resource: str,
fallback_resource: str = None,
fallback_resource: str | None = None,
fallback_value: Any = None) -> Any:
"""Return a translation resource by name.

View file

@ -25,7 +25,7 @@ class Level:
gametype: type[ba.GameActivity],
settings: dict,
preview_texture_name: str,
displayname: str = None):
displayname: str | None = None):
self._name = name
self._gametype = gametype
self._settings = settings

View file

@ -388,7 +388,8 @@ class Map(Actor):
assert farthestpt is not None
return tuple(farthestpt)
def get_flag_position(self, team_index: int = None) -> Sequence[float]:
def get_flag_position(self,
team_index: int | None = None) -> Sequence[float]:
"""Return a flag position on the map for the given team index.
Pass None to get the default flag point.

View file

@ -236,17 +236,17 @@ class HitMessage:
"""
def __init__(self,
srcnode: ba.Node = None,
pos: Sequence[float] = None,
velocity: Sequence[float] = None,
srcnode: ba.Node | None = None,
pos: Sequence[float] | None = None,
velocity: Sequence[float] | None = None,
magnitude: float = 1.0,
velocity_magnitude: float = 0.0,
radius: float = 1.0,
source_player: ba.Player = None,
source_player: ba.Player | None = None,
kick_back: float = 1.0,
flat_damage: float = None,
flat_damage: float | None = None,
hit_type: str = 'generic',
force_direction: Sequence[float] = None,
force_direction: Sequence[float] | None = None,
hit_subtype: str = 'default'):
"""Instantiate a message with given values."""

View file

@ -273,7 +273,7 @@ class MusicSubsystem:
musictype: MusicType | str | None,
continuous: bool = False,
mode: MusicPlayMode = MusicPlayMode.REGULAR,
testsoundtrack: dict[str, Any] = None) -> None:
testsoundtrack: dict[str, Any] | None = None) -> None:
"""Plays the requested music type/mode.
For most cases, setmusic() is the proper call to use, which itself

View file

@ -66,6 +66,7 @@ class PluginSubsystem:
def load_plugins(self) -> None:
"""(internal)"""
from ba._general import getclass
from ba._language import Lstr
# Note: the plugins we load is purely based on what's enabled
# in the app config. Our meta-scan gives us a list of available
@ -76,15 +77,21 @@ class PluginSubsystem:
assert isinstance(plugstates, dict)
plugkeys: list[str] = sorted(key for key, val in plugstates.items()
if val.get('enabled', False))
disappeared_plugs: set[str] = set()
for plugkey in plugkeys:
try:
cls = getclass(plugkey, Plugin)
except ModuleNotFoundError:
disappeared_plugs.add(plugkey)
continue
except Exception as exc:
_ba.playsound(_ba.getsound('error'))
# TODO: Lstr.
errstr = f"Error loading plugin class '{plugkey}': {exc}"
_ba.screenmessage(errstr, color=(1, 0, 0))
_ba.log(errstr, to_server=False)
_ba.screenmessage(Lstr(resource='pluginClassLoadErrorText',
subs=[('${PLUGIN}', plugkey),
('${ERROR}', str(exc))]),
color=(1, 0, 0))
_ba.log(f"Error loading plugin class '{plugkey}': {exc}",
to_server=False)
continue
try:
plugin = cls()
@ -93,10 +100,29 @@ class PluginSubsystem:
except Exception as exc:
from ba import _error
_ba.playsound(_ba.getsound('error'))
# TODO: Lstr.
_ba.screenmessage(f"Error loading plugin: '{plugkey}': {exc}",
_ba.screenmessage(Lstr(resource='pluginInitErrorText',
subs=[('${PLUGIN}', plugkey),
('${ERROR}', str(exc))]),
color=(1, 0, 0))
_error.print_exception(f"Error loading plugin: '{plugkey}'.")
_error.print_exception(f"Error initing plugin: '{plugkey}'.")
# If plugins disappeared, let the user know gently and remove them
# from the config so we'll again let the user know if they later
# reappear. This makes it much smoother to switch between users
# or workspaces.
if disappeared_plugs:
_ba.playsound(_ba.getsound('shieldDown'))
_ba.screenmessage(Lstr(resource='pluginsRemovedText',
subs=[('${NUM}',
str(len(disappeared_plugs)))]),
color=(1, 1, 0))
_ba.log(
f'{len(disappeared_plugs)} plugin(s) no longer found:'
f' {disappeared_plugs}',
to_server=False)
for goneplug in disappeared_plugs:
del _ba.app.config['Plugins'][goneplug]
_ba.app.config.commit()
@dataclass

View file

@ -50,7 +50,7 @@ def get_player_profile_icon(profilename: str) -> str:
def get_player_profile_colors(
profilename: str | None,
profiles: dict[str, dict[str, Any]] = None
profiles: dict[str, dict[str, Any]] | None = None
) -> tuple[tuple[float, float, float], tuple[float, float, float]]:
"""Given a profile, return colors for them."""
appconfig = _ba.app.config

View file

@ -72,8 +72,8 @@ class Session:
def __init__(self,
depsets: Sequence[ba.DependencySet],
team_names: Sequence[str] = None,
team_colors: Sequence[Sequence[float]] = None,
team_names: Sequence[str] | None = None,
team_colors: Sequence[Sequence[float]] | None = None,
min_players: int = 1,
max_players: int = 8):
"""Instantiate a session.

View file

@ -314,11 +314,11 @@ class Stats:
def player_scored(self,
player: ba.Player,
base_points: int = 1,
target: Sequence[float] = None,
target: Sequence[float] | None = None,
kill: bool = False,
victim_player: ba.Player = None,
victim_player: ba.Player | None = None,
scale: float = 1.0,
color: Sequence[float] = None,
color: Sequence[float] | None = None,
title: str | ba.Lstr | None = None,
screenmessage: bool = True,
display: bool = True,
@ -422,7 +422,7 @@ class Stats:
def player_was_killed(self,
player: ba.Player,
killed: bool = False,
killer: ba.Player = None) -> None:
killer: ba.Player | None = None) -> None:
"""Should be called when a player is killed."""
from ba._language import Lstr
name = player.getname()

View file

@ -398,7 +398,7 @@ def get_clean_price(price_string: str) -> str:
return psubs.get(price_string, price_string)
def get_available_purchase_count(tab: str = None) -> int:
def get_available_purchase_count(tab: str | None = None) -> int:
"""(internal)"""
try:
if _ba.get_v1_account_state() != 'signed_in':

View file

@ -91,8 +91,8 @@ class TeamGameActivity(GameActivity[PlayerType, TeamType]):
def spawn_player_spaz(self,
player: PlayerType,
position: Sequence[float] = None,
angle: float = None) -> PlayerSpaz:
position: Sequence[float] | None = None,
angle: float | None = None) -> PlayerSpaz:
"""
Method override; spawns and wires up a standard ba.PlayerSpaz for
a ba.Player.

View file

@ -144,7 +144,7 @@ class UISubsystem:
_ba.timer(1.0, _delay_kill, timetype=TimeType.REAL)
self._main_menu_window = window
def clear_main_menu_window(self, transition: str = None) -> None:
def clear_main_menu_window(self, transition: str | None = None) -> None:
"""Clear any existing 'main' window with the provided transition."""
if self._main_menu_window:
if transition is not None:

View file

@ -52,17 +52,17 @@ class WorkspaceSubsystem:
daemon=True,
).start()
def _errmsg(self, msg: str | ba.Lstr) -> None:
def _errmsg(self, msg: ba.Lstr) -> None:
_ba.screenmessage(msg, color=(1, 0, 0))
_ba.playsound(_ba.getsound('error'))
def _successmsg(self, msg: str | ba.Lstr) -> None:
def _successmsg(self, msg: ba.Lstr) -> None:
_ba.screenmessage(msg, color=(0, 1, 0))
_ba.playsound(_ba.getsound('gunCocking'))
def _set_active_workspace_bg(self, workspaceid: str, workspacename: str,
on_completed: Callable[[], None]) -> None:
# pylint: disable=too-many-branches
from ba._language import Lstr
class _SkipSyncError(RuntimeError):
pass
@ -101,45 +101,42 @@ class WorkspaceSubsystem:
break
state.iteration += 1
extras: list[str] = []
# Hmm; let's not show deletes for now since currently lots of
# .pyc files get deleted.
if bool(False):
if state.total_deletes:
extras.append(f'{state.total_deletes} files deleted')
if state.total_downloads:
extras.append(f'{state.total_downloads} files downloaded')
if state.total_up_to_date:
extras.append(f'{state.total_up_to_date} files up-to-date')
# Actually let's try with none of this; seems a bit excessive.
if bool(False) and extras:
extras_s = '\n' + ', '.join(extras) + '.'
else:
extras_s = ''
_ba.pushcall(tpartial(self._successmsg,
f'{workspacename} activated.{extras_s}'),
from_other_thread=True)
_ba.pushcall(
tpartial(
self._successmsg,
Lstr(resource='activatedText',
subs=[('${THING}', workspacename)]),
),
from_other_thread=True,
)
except _SkipSyncError:
_ba.pushcall(tpartial(
self._errmsg, f'Can\'t sync {workspacename}'
f'. Reusing previous synced version.'),
from_other_thread=True)
_ba.pushcall(
tpartial(
self._errmsg,
Lstr(resource='workspaceSyncReuseText',
subs=[('$WORKSPACE', workspacename)])),
from_other_thread=True,
)
except CleanError as exc:
# Avoid reusing existing if we fail in the middle; could
# be in wonky state.
set_path = False
_ba.pushcall(tpartial(self._errmsg, str(exc)),
_ba.pushcall(tpartial(self._errmsg, Lstr(value=str(exc))),
from_other_thread=True)
except Exception:
# Ditto.
set_path = False
logging.exception('Error syncing workspace.')
# TODO: Lstr.
_ba.pushcall(tpartial(
self._errmsg, 'Error syncing workspace. See log for details.'),
from_other_thread=True)
logging.exception("Error syncing workspace '%s'.", workspacename)
_ba.pushcall(
tpartial(
self._errmsg,
Lstr(resource='workspaceSyncErrorText',
subs=[('${WORKSPACE}', workspacename)]),
),
from_other_thread=True,
)
if set_path and wspath.is_dir():
# Add to Python paths and also to list of stuff to be scanned

View file

@ -327,7 +327,7 @@ class Blast(ba.Actor):
velocity: Sequence[float] = (0.0, 0.0, 0.0),
blast_radius: float = 2.0,
blast_type: str = 'normal',
source_player: ba.Player = None,
source_player: ba.Player | None = None,
hit_type: str = 'explosion',
hit_subtype: str = 'normal'):
"""Instantiate with given values."""
@ -657,8 +657,8 @@ class Bomb(ba.Actor):
bomb_type: str = 'normal',
blast_radius: float = 2.0,
bomb_scale: float = 1.0,
source_player: ba.Player = None,
owner: ba.Node = None):
source_player: ba.Player | None = None,
owner: ba.Node | None = None):
"""Create a new Bomb.
bomb_type can be 'ice','impact','land_mine','normal','sticky', or

View file

@ -27,7 +27,7 @@ class ControlsGuide(ba.Actor):
position: tuple[float, float] = (390.0, 120.0),
scale: float = 1.0,
delay: float = 0.0,
lifespan: float = None,
lifespan: float | None = None,
bright: bool = False):
"""Instantiate an overlay.

View file

@ -167,9 +167,9 @@ class Flag(ba.Actor):
def __init__(self,
position: Sequence[float] = (0.0, 1.0, 0.0),
color: Sequence[float] = (1.0, 1.0, 1.0),
materials: Sequence[ba.Material] = None,
materials: Sequence[ba.Material] | None = None,
touchable: bool = True,
dropped_timeout: int = None):
dropped_timeout: int | None = None):
"""Instantiate a flag.
If 'touchable' is False, the flag will only touch terrain;

View file

@ -40,9 +40,9 @@ class Image(ba.Actor):
attach: Attach = Attach.CENTER,
color: Sequence[float] = (1.0, 1.0, 1.0, 1.0),
scale: tuple[float, float] = (100.0, 100.0),
transition_out_delay: float = None,
model_opaque: ba.Model = None,
model_transparent: ba.Model = None,
transition_out_delay: float | None = None,
model_opaque: ba.Model | None = None,
model_transparent: ba.Model | None = None,
vr_depth: float = 0.0,
host_only: bool = False,
front: bool = False):

View file

@ -20,7 +20,9 @@ class OnScreenCountdown(ba.Actor):
Useful for time-based games that count down to zero.
"""
def __init__(self, duration: int, endcall: Callable[[], Any] = None):
def __init__(self,
duration: int,
endcall: Callable[[], Any] | None = None):
"""Duration is provided in seconds."""
super().__init__()
self._timeremaining = duration
@ -73,7 +75,7 @@ class OnScreenCountdown(ba.Actor):
# Release callbacks/refs.
self._endcall = None
def _update(self, forcevalue: int = None) -> None:
def _update(self, forcevalue: int | None = None) -> None:
if forcevalue is not None:
tval = forcevalue
else:

View file

@ -137,8 +137,8 @@ class PowerupBoxFactory:
self._powerupdist.append(powerup)
def get_random_powerup_type(self,
forcetype: str = None,
excludetypes: list[str] = None) -> str:
forcetype: str | None = None,
excludetypes: list[str] | None = None) -> str:
"""Returns a random powerup type (string).
See ba.Powerup.poweruptype for available type values.

View file

@ -241,7 +241,7 @@ class _Entry:
def set_value(self,
score: float,
max_score: float = None,
max_score: float | None = None,
countdown: bool = False,
flash: bool = True,
show_value: bool = True) -> None:
@ -327,7 +327,7 @@ class Scoreboard:
_ENTRYSTORENAME = ba.storagename('entry')
def __init__(self, label: ba.Lstr = None, score_split: float = 0.7):
def __init__(self, label: ba.Lstr | None = None, score_split: float = 0.7):
"""Instantiate a scoreboard.
Label can be something like 'points' and will
@ -356,7 +356,7 @@ class Scoreboard:
def set_team_value(self,
team: ba.Team,
score: float,
max_score: float = None,
max_score: float | None = None,
countdown: bool = False,
flash: bool = True,
show_value: bool = True) -> None:

View file

@ -54,7 +54,7 @@ class Spawner:
pt: Sequence[float] = (0, 0, 0), # pylint: disable=invalid-name
spawn_time: float = 1.0,
send_spawn_message: bool = True,
spawn_callback: Callable[[], Any] = None):
spawn_callback: Callable[[], Any] | None = None):
"""Instantiate a Spawner.
Requires some custom data, a position,

View file

@ -67,7 +67,7 @@ class Spaz(ba.Actor):
color: Sequence[float] = (1.0, 1.0, 1.0),
highlight: Sequence[float] = (0.5, 0.5, 0.5),
character: str = 'Spaz',
source_player: ba.Player = None,
source_player: ba.Player | None = None,
start_invincible: bool = True,
can_accept_powerups: bool = True,
powerups_expire: bool = False,
@ -177,6 +177,7 @@ class Spaz(ba.Actor):
self._bomb_wear_off_timer: ba.Timer | None = None
self._bomb_wear_off_flash_timer: ba.Timer | None = None
self._multi_bomb_wear_off_timer: ba.Timer | None = None
self._multi_bomb_wear_off_flash_timer: ba.Timer | None = None
self.bomb_count = self.default_bomb_count
self._max_bomb_count = self.default_bomb_count
self.bomb_type_default = self.default_bomb_type
@ -704,7 +705,7 @@ class Spaz(ba.Actor):
self.node.mini_billboard_1_start_time = t_ms
self.node.mini_billboard_1_end_time = (
t_ms + POWERUP_WEAR_OFF_TIME)
self._multi_bomb_wear_off_timer = (ba.Timer(
self._multi_bomb_wear_off_flash_timer = (ba.Timer(
(POWERUP_WEAR_OFF_TIME - 2000),
ba.WeakCall(self._multi_bomb_wear_off_flash),
timeformat=ba.TimeFormat.MILLISECONDS))
@ -1266,7 +1267,7 @@ class Spaz(ba.Actor):
else:
self.node.counter_text = ''
def curse_explode(self, source_player: ba.Player = None) -> None:
def curse_explode(self, source_player: ba.Player | None = None) -> None:
"""Explode the poor spaz spectacularly."""
if self._cursed and self.node:
self.shatter(extreme=True)

View file

@ -888,11 +888,12 @@ class SpazBotSet:
def __del__(self) -> None:
self.clear()
def spawn_bot(self,
bot_type: type[SpazBot],
pos: Sequence[float],
spawn_time: float = 3.0,
on_spawn_call: Callable[[SpazBot], Any] = None) -> None:
def spawn_bot(
self,
bot_type: type[SpazBot],
pos: Sequence[float],
spawn_time: float = 3.0,
on_spawn_call: Callable[[SpazBot], Any] | None = None) -> None:
"""Spawn a bot from this set."""
from bastd.actor import spawner
spawner.Spawner(pt=pos,

View file

@ -60,8 +60,8 @@ class Text(ba.Actor):
v_attach: VAttach = VAttach.CENTER,
h_attach: HAttach = HAttach.CENTER,
scale: float = 1.0,
transition_out_delay: float = None,
maxwidth: float = None,
transition_out_delay: float | None = None,
maxwidth: float | None = None,
shadow: float = 0.5,
flatness: float = 0.0,
vr_depth: float = 0.0,

View file

@ -24,9 +24,9 @@ class ZoomText(ba.Actor):
def __init__(self,
text: str | ba.Lstr,
position: tuple[float, float] = (0.0, 0.0),
shiftposition: tuple[float, float] = None,
shiftdelay: float = None,
lifespan: float = None,
shiftposition: tuple[float, float] | None = None,
shiftdelay: float | None = None,
lifespan: float | None = None,
flash: bool = True,
trail: bool = True,
h_align: str = 'center',
@ -36,7 +36,7 @@ class ZoomText(ba.Actor):
scale: float = 1.0,
project_scale: float = 1.0,
tilt_translate: float = 0.0,
maxwidth: float = None):
maxwidth: float | None = None):
# pylint: disable=too-many-locals
super().__init__()
self._dying = False

View file

@ -492,8 +492,8 @@ class CaptureTheFlagGame(ba.TeamGameActivity[Player, Team]):
def spawn_player_spaz(self,
player: Player,
position: Sequence[float] = None,
angle: float = None) -> PlayerSpaz:
position: Sequence[float] | None = None,
angle: float | None = None) -> PlayerSpaz:
"""Intercept new spazzes and add our team material for them."""
spaz = super().spawn_player_spaz(player, position, angle)
player = spaz.getplayer(Player, True)

View file

@ -137,9 +137,6 @@ class ChosenOneGame(ba.TeamGameActivity[Player, Team]):
self.setup_standard_powerup_drops()
self._flag_spawn_pos = self.map.get_flag_position(None)
Flag.project_stand(self._flag_spawn_pos)
self._set_chosen_one_player(None)
pos = self._flag_spawn_pos
ba.timer(1.0, call=self._tick, repeat=True)
mat = self._reset_region_material = ba.Material()
@ -156,14 +153,20 @@ class ChosenOneGame(ba.TeamGameActivity[Player, Team]):
),
)
self._reset_region = ba.newnode('region',
attrs={
'position': (pos[0], pos[1] + 0.75,
pos[2]),
'scale': (0.5, 0.5, 0.5),
'type': 'sphere',
'materials': [mat]
})
self._set_chosen_one_player(None)
def _create_reset_region(self) -> None:
assert self._reset_region_material is not None
assert self._flag_spawn_pos is not None
pos = self._flag_spawn_pos
self._reset_region = ba.newnode(
'region',
attrs={
'position': (pos[0], pos[1] + 0.75, pos[2]),
'scale': (0.5, 0.5, 0.5),
'type': 'sphere',
'materials': [self._reset_region_material]
})
def _get_chosen_one_player(self) -> Player | None:
# Should never return invalid references; return None in that case.
@ -176,14 +179,14 @@ class ChosenOneGame(ba.TeamGameActivity[Player, Team]):
if self._get_chosen_one_player() is not None:
return
# Attempt to get a Player controlling a Spaz that we hit.
# Attempt to get a Actor that we hit.
try:
player = ba.getcollision().opposingnode.getdelegate(
PlayerSpaz, True).getplayer(Player, True)
spaz = ba.getcollision().opposingnode.getdelegate(PlayerSpaz, True)
player = spaz.getplayer(Player, True)
except ba.NotFoundError:
return
if player.is_alive():
if spaz.is_alive():
self._set_chosen_one_player(player)
def _flash_flag_spawn(self) -> None:
@ -278,6 +281,10 @@ class ChosenOneGame(ba.TeamGameActivity[Player, Team]):
# Also an extra momentary flash.
self._flash_flag_spawn()
# Re-create our flag region in case if someone is waiting for
# flag right there:
self._create_reset_region()
else:
if player.actor:
self._flag = None

View file

@ -596,7 +596,9 @@ class FootballCoopGame(ba.CoopGameActivity[Player, Team]):
if closest_bot is not None:
closest_bot.target_flag = self._flag
def _drop_powerup(self, index: int, poweruptype: str = None) -> None:
def _drop_powerup(self,
index: int,
poweruptype: str | None = None) -> None:
if poweruptype is None:
poweruptype = (PowerupBoxFactory.get().get_random_powerup_type(
excludetypes=self._exclude_powerups))
@ -610,7 +612,7 @@ class FootballCoopGame(ba.CoopGameActivity[Player, Team]):
def _drop_powerups(self,
standard_points: bool = False,
poweruptype: str = None) -> None:
poweruptype: str | None = None) -> None:
"""Generic powerup drop."""
if standard_points:
spawnpoints = self.map.powerup_spawn_points

View file

@ -690,7 +690,9 @@ class OnslaughtGame(ba.CoopGameActivity[Player, Team]):
del player, bomb # Unused.
self._player_has_dropped_bomb = True
def _drop_powerup(self, index: int, poweruptype: str = None) -> None:
def _drop_powerup(self,
index: int,
poweruptype: str | None = None) -> None:
poweruptype = (PowerupBoxFactory.get().get_random_powerup_type(
forcetype=poweruptype, excludetypes=self._excluded_powerups))
PowerupBox(position=self.map.powerup_spawn_points[index],
@ -703,7 +705,7 @@ class OnslaughtGame(ba.CoopGameActivity[Player, Team]):
def _drop_powerups(self,
standard_points: bool = False,
poweruptype: str = None) -> None:
poweruptype: str | None = None) -> None:
"""Generic powerup drop."""
if standard_points:
points = self.map.powerup_spawn_points

View file

@ -497,7 +497,9 @@ class RunaroundGame(ba.CoopGameActivity[Player, Team]):
del player # Unused.
self._player_has_picked_up_powerup = True
def _drop_powerup(self, index: int, poweruptype: str = None) -> None:
def _drop_powerup(self,
index: int,
poweruptype: str | None = None) -> None:
if poweruptype is None:
poweruptype = (PowerupBoxFactory.get().get_random_powerup_type(
excludetypes=self._exclude_powerups))
@ -509,7 +511,7 @@ class RunaroundGame(ba.CoopGameActivity[Player, Team]):
def _drop_powerups(self,
standard_points: bool = False,
force_first: str = None) -> None:
force_first: str | None = None) -> None:
"""Generic powerup drop."""
# If its been a minute since our last wave finished emerging, stop

View file

@ -132,7 +132,9 @@ class TheLastStandGame(ba.CoopGameActivity[Player, Team]):
self._bot_update_timer = ba.Timer(self._bot_update_interval,
ba.WeakCall(self._update_bots))
def _drop_powerup(self, index: int, poweruptype: str = None) -> None:
def _drop_powerup(self,
index: int,
poweruptype: str | None = None) -> None:
if poweruptype is None:
poweruptype = (PowerupBoxFactory.get().get_random_powerup_type(
excludetypes=self._excludepowerups))
@ -146,7 +148,7 @@ class TheLastStandGame(ba.CoopGameActivity[Player, Team]):
def _drop_powerups(self,
standard_points: bool = False,
force_first: str = None) -> None:
force_first: str | None = None) -> None:
"""Generic powerup drop."""
from bastd.actor import powerupbox
if standard_points:

View file

@ -767,7 +767,7 @@ class MainMenuActivity(ba.Activity[ba.Player, ba.Team]):
y: float,
scale: float,
delay: float,
custom_texture: str = None,
custom_texture: str | None = None,
jitter_scale: float = 1.0,
rotate: float = 0.0,
vr_depth_offset: float = 0.0) -> None:

View file

@ -178,7 +178,7 @@ class Team(ba.Team[Player]):
class TutorialActivity(ba.Activity[Player, Team]):
def __init__(self, settings: dict = None):
def __init__(self, settings: dict | None = None):
from bastd.maps import Rampage
if settings is None:
settings = {}
@ -492,7 +492,7 @@ class TutorialActivity(ba.Activity[Player, Team]):
position: Sequence[float],
color: Sequence[float] = (1.0, 1.0, 1.0),
make_current: bool = False,
relative_to: int = None,
relative_to: int | None = None,
name: str | ba.Lstr = '',
flash: bool = True,
angle: float = 0.0):
@ -550,7 +550,7 @@ class TutorialActivity(ba.Activity[Player, Team]):
position: Sequence[float],
color: Sequence[float] = (1.0, 1.0, 1.0),
make_current: bool = False,
relative_to: int = None):
relative_to: int | None = None):
self._position = position
self._relative_to = relative_to
@ -761,7 +761,7 @@ class TutorialActivity(ba.Activity[Player, Team]):
class PrintPos:
def __init__(self, spaz_num: int = None):
def __init__(self, spaz_num: int | None = None):
self._spaz_num = spaz_num
def run(self, a: TutorialActivity) -> None:
@ -787,7 +787,7 @@ class TutorialActivity(ba.Activity[Player, Team]):
def __init__(self,
celebrate_type: str = 'both',
spaz_num: int = None,
spaz_num: int | None = None,
duration: int = 1000):
self._spaz_num = spaz_num
self._celebrate_type = celebrate_type

View file

@ -8,7 +8,7 @@ import _ba
import ba
def show_sign_in_prompt(account_type: str = None) -> None:
def show_sign_in_prompt(account_type: str | None = None) -> None:
"""Bring up a prompt telling the user they must sign in."""
from bastd.ui.confirm import ConfirmWindow
from bastd.ui.account import settings

View file

@ -18,7 +18,7 @@ if TYPE_CHECKING:
class AccountLinkWindow(ba.Window):
"""Window for linking accounts."""
def __init__(self, origin_widget: ba.Widget = None):
def __init__(self, origin_widget: ba.Widget | None = None):
scale_origin: tuple[float, float] | None
if origin_widget is not None:
self._transition_out = 'out_scale'

View file

@ -21,7 +21,7 @@ class AccountSettingsWindow(ba.Window):
def __init__(self,
transition: str = 'in_right',
modal: bool = False,
origin_widget: ba.Widget = None,
origin_widget: ba.Widget | None = None,
close_once_signed_in: bool = False):
# pylint: disable=too-many-statements

View file

@ -17,7 +17,7 @@ if TYPE_CHECKING:
class AccountUnlinkWindow(ba.Window):
"""A window to kick off account unlinks."""
def __init__(self, origin_widget: ba.Widget = None):
def __init__(self, origin_widget: ba.Widget | None = None):
scale_origin: tuple[float, float] | None
if origin_widget is not None:
self._transition_out = 'out_scale'

View file

@ -19,9 +19,9 @@ class AccountViewerWindow(popup.PopupWindow):
def __init__(self,
account_id: str,
profile_id: str = None,
profile_id: str | None = None,
position: tuple[float, float] = (0.0, 0.0),
scale: float = None,
scale: float | None = None,
offset: tuple[float, float] = (0.0, 0.0)):
from ba.internal import is_browser_likely_available, master_server_get

View file

@ -16,7 +16,9 @@ if TYPE_CHECKING:
class AchievementsWindow(popup.PopupWindow):
"""Popup window to view achievements."""
def __init__(self, position: tuple[float, float], scale: float = None):
def __init__(self,
position: tuple[float, float],
scale: float | None = None):
# pylint: disable=too-many-locals
uiscale = ba.app.ui.uiscale
if scale is None:

View file

@ -22,11 +22,11 @@ class CharacterPicker(popup.PopupWindow):
parent: ba.Widget,
position: tuple[float, float] = (0.0, 0.0),
delegate: Any = None,
scale: float = None,
scale: float | None = None,
offset: tuple[float, float] = (0.0, 0.0),
tint_color: Sequence[float] = (1.0, 1.0, 1.0),
tint2_color: Sequence[float] = (1.0, 1.0, 1.0),
selected_character: str = None):
selected_character: str | None = None):
# pylint: disable=too-many-locals
from bastd.actor import spazappearance
del parent # unused here

View file

@ -24,7 +24,7 @@ class ColorPicker(PopupWindow):
position: tuple[float, float],
initial_color: Sequence[float] = (1.0, 1.0, 1.0),
delegate: Any = None,
scale: float = None,
scale: float | None = None,
offset: tuple[float, float] = (0.0, 0.0),
tag: Any = ''):
# pylint: disable=too-many-locals
@ -162,7 +162,7 @@ class ColorPickerExact(PopupWindow):
position: tuple[float, float],
initial_color: Sequence[float] = (1.0, 1.0, 1.0),
delegate: Any = None,
scale: float = None,
scale: float | None = None,
offset: tuple[float, float] = (0.0, 0.0),
tag: Any = ''):
# pylint: disable=too-many-locals

View file

@ -28,10 +28,10 @@ class ConfigCheckBox:
position: tuple[float, float],
size: tuple[float, float],
displayname: str | ba.Lstr | None = None,
scale: float = None,
maxwidth: float = None,
scale: float | None = None,
maxwidth: float | None = None,
autoselect: bool = True,
value_change_call: Callable[[Any], Any] = None):
value_change_call: Callable[[Any], Any] | None = None):
if displayname is None:
displayname = configkey
self._value_change_call = value_change_call
@ -84,7 +84,7 @@ class ConfigNumberEdit:
minval: float = 0.0,
maxval: float = 100.0,
increment: float = 1.0,
callback: Callable[[float], Any] = None,
callback: Callable[[float], Any] | None = None,
xoffset: float = 0.0,
displayname: str | ba.Lstr | None = None,
changesound: bool = True,

View file

@ -18,7 +18,7 @@ class ConfirmWindow:
def __init__(self,
text: str | ba.Lstr = 'Are you sure?',
action: Callable[[], Any] = None,
action: Callable[[], Any] | None = None,
width: float = 360.0,
height: float = 100.0,
cancel_button: bool = True,
@ -27,7 +27,7 @@ class ConfirmWindow:
text_scale: float = 1.0,
ok_text: str | ba.Lstr | None = None,
cancel_text: str | ba.Lstr | None = None,
origin_widget: ba.Widget = None):
origin_widget: ba.Widget | None = None):
# pylint: disable=too-many-locals
if ok_text is None:
ok_text = ba.Lstr(resource='okText')
@ -127,7 +127,7 @@ class QuitWindow:
def __init__(self,
swish: bool = False,
back: bool = False,
origin_widget: ba.Widget = None):
origin_widget: ba.Widget | None = None):
ui = ba.app.ui
app = ba.app
self._back = back

View file

@ -37,7 +37,7 @@ class CoopBrowserWindow(ba.Window):
def __init__(self,
transition: str | None = 'in_right',
origin_widget: ba.Widget = None):
origin_widget: ba.Widget | None = None):
# pylint: disable=too-many-statements
# pylint: disable=cyclic-import
import threading
@ -1415,7 +1415,7 @@ class CoopBrowserWindow(ba.Window):
def run(self,
game: str | None,
tournament_button: dict[str, Any] = None) -> None:
tournament_button: dict[str, Any] | None = None) -> None:
"""Run the provided game."""
# pylint: disable=too-many-branches
# pylint: disable=too-many-statements

View file

@ -16,7 +16,7 @@ if TYPE_CHECKING:
class CreditsListWindow(ba.Window):
"""Window for displaying game credits."""
def __init__(self, origin_widget: ba.Widget = None):
def __init__(self, origin_widget: ba.Widget | None = None):
# pylint: disable=too-many-locals
# pylint: disable=too-many-statements
import json

View file

@ -21,9 +21,9 @@ class FileSelectorWindow(ba.Window):
def __init__(self,
path: str,
callback: Callable[[str | None], Any] = None,
callback: Callable[[str | None], Any] | None = None,
show_base_path: bool = True,
valid_file_extensions: Sequence[str] = None,
valid_file_extensions: Sequence[str] | None = None,
allow_folders: bool = False):
if valid_file_extensions is None:
valid_file_extensions = []

View file

@ -68,7 +68,7 @@ class GatherWindow(ba.Window):
def __init__(self,
transition: str | None = 'in_right',
origin_widget: ba.Widget = None):
origin_widget: ba.Widget | None = None):
# pylint: disable=too-many-statements
# pylint: disable=too-many-locals
# pylint: disable=cyclic-import

View file

@ -20,8 +20,8 @@ class GetCurrencyWindow(ba.Window):
transition: str = 'in_right',
from_modal_store: bool = False,
modal: bool = False,
origin_widget: ba.Widget = None,
store_back_location: str = None):
origin_widget: ba.Widget | None = None,
store_back_location: str | None = None):
# pylint: disable=too-many-statements
# pylint: disable=too-many-locals
@ -105,8 +105,8 @@ class GetCurrencyWindow(ba.Window):
position: tuple[float, float],
size: tuple[float, float],
label: ba.Lstr,
price: str = None,
tex_name: str = None,
price: str | None = None,
tex_name: str | None = None,
tex_opacity: float = 1.0,
tex_scale: float = 1.0,
enabled: bool = True,

View file

@ -18,7 +18,7 @@ class HelpWindow(ba.Window):
def __init__(self,
main_menu: bool = False,
origin_widget: ba.Widget = None):
origin_widget: ba.Widget | None = None):
# pylint: disable=too-many-statements
# pylint: disable=too-many-locals
from ba.internal import get_remote_app_name

View file

@ -22,11 +22,11 @@ class IconPicker(popup.PopupWindow):
parent: ba.Widget,
position: tuple[float, float] = (0.0, 0.0),
delegate: Any = None,
scale: float = None,
scale: float | None = None,
offset: tuple[float, float] = (0.0, 0.0),
tint_color: Sequence[float] = (1.0, 1.0, 1.0),
tint2_color: Sequence[float] = (1.0, 1.0, 1.0),
selected_icon: str = None):
selected_icon: str | None = None):
# pylint: disable=too-many-locals
del parent # unused here
del tint_color # unused_here

View file

@ -21,11 +21,11 @@ class LeagueRankButton:
position: tuple[float, float],
size: tuple[float, float],
scale: float,
on_activate_call: Callable[[], Any] = None,
transition_delay: float = None,
color: tuple[float, float, float] = None,
textcolor: tuple[float, float, float] = None,
smooth_update_delay: float = None):
on_activate_call: Callable[[], Any] | None = None,
transition_delay: float | None = None,
color: tuple[float, float, float] | None = None,
textcolor: tuple[float, float, float] | None = None,
smooth_update_delay: float | None = None):
if on_activate_call is None:
on_activate_call = ba.WeakCall(self._default_on_activate_call)
self._on_activate_call = on_activate_call

View file

@ -21,7 +21,7 @@ class LeagueRankWindow(ba.Window):
def __init__(self,
transition: str = 'in_right',
modal: bool = False,
origin_widget: ba.Widget = None):
origin_widget: ba.Widget | None = None):
ba.set_analytics_screen('League Rank Window')
self._league_rank_data: dict[str, Any] | None = None

View file

@ -18,7 +18,7 @@ class PlayWindow(ba.Window):
def __init__(self,
transition: str = 'in_right',
origin_widget: ba.Widget = None):
origin_widget: ba.Widget | None = None):
# pylint: disable=too-many-statements
# pylint: disable=too-many-locals
import threading

View file

@ -21,7 +21,7 @@ class PlaylistBrowserWindow(ba.Window):
def __init__(self,
sessiontype: type[ba.Session],
transition: str | None = 'in_right',
origin_widget: ba.Widget = None):
origin_widget: ba.Widget | None = None):
# pylint: disable=too-many-statements
# pylint: disable=cyclic-import
from bastd.ui.playlist import PlaylistTypeVars

View file

@ -21,8 +21,8 @@ class PlaylistCustomizeBrowserWindow(ba.Window):
def __init__(self,
sessiontype: type[ba.Session],
transition: str = 'in_right',
select_playlist: str = None,
origin_widget: ba.Widget = None):
select_playlist: str | None = None,
origin_widget: ba.Widget | None = None):
# Yes this needs tidying.
# pylint: disable=too-many-locals
# pylint: disable=too-many-statements
@ -297,7 +297,7 @@ class PlaylistCustomizeBrowserWindow(ba.Window):
_ba.fade_screen(False, endcall=self._run_selected_playlist)
_ba.lock_all_input()
def _refresh(self, select_playlist: str = None) -> None:
def _refresh(self, select_playlist: str | None = None) -> None:
from efro.util import asserttype
old_selection = self._selected_playlist_name

View file

@ -18,10 +18,10 @@ class PlaylistEditController:
def __init__(self,
sessiontype: type[ba.Session],
existing_playlist_name: str = None,
existing_playlist_name: str | None = None,
transition: str = 'in_right',
playlist: list[dict[str, Any]] = None,
playlist_name: str = None):
playlist: list[dict[str, Any]] | None = None,
playlist_name: str | None = None):
from ba.internal import preload_map_preview_media, filter_playlist
from bastd.ui.playlist import PlaylistTypeVars
from bastd.ui.playlist.edit import PlaylistEditWindow

View file

@ -23,9 +23,9 @@ class PlaylistEditGameWindow(ba.Window):
sessiontype: type[ba.Session],
config: dict[str, Any] | None,
completion_call: Callable[[dict[str, Any] | None], Any],
default_selection: str = None,
default_selection: str | None = None,
transition: str = 'in_right',
edit_info: dict[str, Any] = None):
edit_info: dict[str, Any] | None = None):
# pylint: disable=too-many-branches
# pylint: disable=too-many-statements
# pylint: disable=too-many-locals

View file

@ -19,8 +19,8 @@ class SharePlaylistImportWindow(promocode.PromoCodeWindow):
"""Window for importing a shared playlist."""
def __init__(self,
origin_widget: ba.Widget = None,
on_success_callback: Callable[[], Any] = None):
origin_widget: ba.Widget | None = None,
on_success_callback: Callable[[], Any] | None = None):
promocode.PromoCodeWindow.__init__(self,
modal=True,
origin_widget=origin_widget)

View file

@ -26,7 +26,7 @@ class PopupWindow:
offset: tuple[float, float] = (0, 0),
bg_color: tuple[float, float, float] = (0.35, 0.55, 0.15),
focus_position: tuple[float, float] = (0, 0),
focus_size: tuple[float, float] = None,
focus_size: tuple[float, float] | None = None,
toolbar_visibility: str = 'menu_minimal_no_back'):
# pylint: disable=too-many-locals
if focus_size is None:
@ -108,10 +108,10 @@ class PopupMenuWindow(PopupWindow):
current_choice: str,
delegate: Any = None,
width: float = 230.0,
maxwidth: float = None,
maxwidth: float | None = None,
scale: float = 1.0,
choices_disabled: Sequence[str] = None,
choices_display: Sequence[ba.Lstr] = None):
choices_disabled: Sequence[str] | None = None,
choices_display: Sequence[ba.Lstr] | None = None):
# FIXME: Clean up a bit.
# pylint: disable=too-many-branches
# pylint: disable=too-many-locals
@ -268,15 +268,15 @@ class PopupMenu:
parent: ba.Widget,
position: tuple[float, float],
choices: Sequence[str],
current_choice: str = None,
on_value_change_call: Callable[[str], Any] = None,
opening_call: Callable[[], Any] = None,
closing_call: Callable[[], Any] = None,
current_choice: str | None = None,
on_value_change_call: Callable[[str], Any] | None = None,
opening_call: Callable[[], Any] | None = None,
closing_call: Callable[[], Any] | None = None,
width: float = 230.0,
maxwidth: float = None,
scale: float = None,
choices_disabled: Sequence[str] = None,
choices_display: Sequence[ba.Lstr] = None,
maxwidth: float | None = None,
scale: float | None = None,
choices_disabled: Sequence[str] | None = None,
choices_display: Sequence[ba.Lstr] | None = None,
button_size: tuple[float, float] = (160.0, 50.0),
autoselect: bool = True):
# pylint: disable=too-many-locals

View file

@ -19,8 +19,8 @@ class ProfileBrowserWindow(ba.Window):
def __init__(self,
transition: str = 'in_right',
in_main_menu: bool = True,
selected_profile: str = None,
origin_widget: ba.Widget = None):
selected_profile: str | None = None,
origin_widget: ba.Widget | None = None):
# pylint: disable=too-many-statements
# pylint: disable=too-many-locals
self._in_main_menu = in_main_menu

View file

@ -17,7 +17,9 @@ if TYPE_CHECKING:
class PromoCodeWindow(ba.Window):
"""Window for entering promo codes."""
def __init__(self, modal: bool = False, origin_widget: ba.Widget = None):
def __init__(self,
modal: bool = False,
origin_widget: ba.Widget | None = None):
scale_origin: tuple[float, float] | None
if origin_widget is not None:

View file

@ -19,7 +19,7 @@ class PurchaseWindow(ba.Window):
def __init__(self,
items: list[str],
transition: str = 'in_right',
header_text: ba.Lstr = None):
header_text: ba.Lstr | None = None):
from ba.internal import get_store_item_display_size
from bastd.ui.store import item as storeitemui
if header_text is None:

View file

@ -19,7 +19,7 @@ class AdvancedSettingsWindow(ba.Window):
def __init__(self,
transition: str = 'in_right',
origin_widget: ba.Widget = None):
origin_widget: ba.Widget | None = None):
# pylint: disable=too-many-statements
from ba.internal import master_server_get
import threading
@ -542,6 +542,14 @@ class AdvancedSettingsWindow(ba.Window):
def _on_net_test_press(self) -> None:
from bastd.ui.settings.nettesting import NetTestingWindow
# Net-testing requires a signed in v1 account.
if _ba.get_v1_account_state() != 'signed_in':
ba.screenmessage(ba.Lstr(resource='notSignedInErrorText'),
color=(1, 0, 0))
ba.playsound(ba.getsound('error'))
return
self._save_state()
ba.containerwidget(edit=self._root_widget, transition='out_left')
ba.app.ui.set_main_menu_window(

View file

@ -18,7 +18,7 @@ class AllSettingsWindow(ba.Window):
def __init__(self,
transition: str = 'in_right',
origin_widget: ba.Widget = None):
origin_widget: ba.Widget | None = None):
# pylint: disable=too-many-statements
# pylint: disable=too-many-locals
import threading

View file

@ -18,7 +18,7 @@ class AudioSettingsWindow(ba.Window):
def __init__(self,
transition: str = 'in_right',
origin_widget: ba.Widget = None):
origin_widget: ba.Widget | None = None):
# pylint: disable=too-many-statements
# pylint: disable=too-many-locals
# pylint: disable=cyclic-import

View file

@ -18,7 +18,7 @@ class ControlsSettingsWindow(ba.Window):
def __init__(self,
transition: str = 'in_right',
origin_widget: ba.Widget = None):
origin_widget: ba.Widget | None = None):
# FIXME: should tidy up here.
# pylint: disable=too-many-statements
# pylint: disable=too-many-branches

View file

@ -21,7 +21,7 @@ class GamepadSettingsWindow(ba.Window):
is_main_menu: bool = True,
transition: str = 'in_right',
transition_out: str = 'out_right',
settings: dict = None):
settings: dict | None = None):
self._input = gamepad
# If our input-device went away, just return an empty zombie.
@ -652,8 +652,8 @@ class GamepadSettingsWindow(ba.Window):
texture: ba.Texture,
button: str,
scale: float = 1.0,
message: ba.Lstr = None,
message2: ba.Lstr = None,
message: ba.Lstr | None = None,
message2: ba.Lstr | None = None,
maxwidth: float = 80.0) -> ba.Widget:
if message is None:
message = ba.Lstr(resource=self._r + '.pressAnyButtonText')
@ -754,8 +754,8 @@ class AwaitGamepadInputWindow(ba.Window):
button: str,
callback: Callable[[str, dict[str, Any], AwaitGamepadInputWindow],
Any],
message: ba.Lstr = None,
message2: ba.Lstr = None):
message: ba.Lstr | None = None,
message2: ba.Lstr | None = None):
if message is None:
print('AwaitGamepadInputWindow message is None!')
# Shouldn't get here.

View file

@ -404,7 +404,7 @@ class GamepadAdvancedSettingsWindow(ba.Window):
increment: float = 1.0,
change_sound: bool = True,
x_offset: float = 0.0,
displayname: ba.Lstr = None) -> tuple[ba.Widget, ba.Widget]:
displayname: ba.Lstr | None = None) -> tuple[ba.Widget, ba.Widget]:
if displayname is None:
displayname = name

View file

@ -18,7 +18,7 @@ class GraphicsSettingsWindow(ba.Window):
def __init__(self,
transition: str = 'in_right',
origin_widget: ba.Widget = None):
origin_widget: ba.Widget | None = None):
# pylint: disable=too-many-locals
# pylint: disable=too-many-branches
# pylint: disable=too-many-statements

View file

@ -131,7 +131,8 @@ def _run_diagnostics(weakwin: weakref.ref[NetTestingWindow]) -> None:
# We're running in a background thread but UI stuff needs to run
# in the logic thread; give ourself a way to pass stuff to it.
def _print(text: str, color: tuple[float, float, float] = None) -> None:
def _print(text: str,
color: tuple[float, float, float] | None = None) -> None:
def _print_in_logic_thread() -> None:
win = weakwin()

View file

@ -17,7 +17,7 @@ class PluginSettingsWindow(ba.Window):
def __init__(self,
transition: str = 'in_right',
origin_widget: ba.Widget = None):
origin_widget: ba.Widget | None = None):
# pylint: disable=too-many-locals
app = ba.app

View file

@ -19,7 +19,7 @@ class SoundtrackBrowserWindow(ba.Window):
def __init__(self,
transition: str = 'in_right',
origin_widget: ba.Widget = None):
origin_widget: ba.Widget | None = None):
# pylint: disable=too-many-locals
# pylint: disable=too-many-statements
@ -355,7 +355,7 @@ class SoundtrackBrowserWindow(ba.Window):
return ba.Lstr(resource=self._r + '.defaultSoundtrackNameText')
return ba.Lstr(value=soundtrack)
def _refresh(self, select_soundtrack: str = None) -> None:
def _refresh(self, select_soundtrack: str | None = None) -> None:
from efro.util import asserttype
self._allow_changing_soundtracks = False
old_selection = self._selected_soundtrack

View file

@ -31,10 +31,10 @@ class StoreBrowserWindow(ba.Window):
def __init__(self,
transition: str = 'in_right',
modal: bool = False,
show_tab: StoreBrowserWindow.TabID = None,
on_close_call: Callable[[], Any] = None,
back_location: str = None,
origin_widget: ba.Widget = None):
show_tab: StoreBrowserWindow.TabID | None = None,
on_close_call: Callable[[], Any] | None = None,
back_location: str | None = None,
origin_widget: ba.Widget | None = None):
# pylint: disable=too-many-statements
# pylint: disable=too-many-locals
from bastd.ui.tabs import TabRow

View file

@ -20,12 +20,12 @@ class StoreButton:
position: Sequence[float],
size: Sequence[float],
scale: float,
on_activate_call: Callable[[], Any] = None,
transition_delay: float = None,
color: Sequence[float] = None,
textcolor: Sequence[float] = None,
on_activate_call: Callable[[], Any] | None = None,
transition_delay: float | None = None,
color: Sequence[float] | None = None,
textcolor: Sequence[float] | None = None,
show_tickets: bool = False,
button_type: str = None,
button_type: str | None = None,
sale_scale: float = 1.0):
self._position = position
self._size = size

View file

@ -35,7 +35,7 @@ class TabRow(Generic[T]):
tabdefs: list[tuple[T, ba.Lstr]],
pos: tuple[float, float],
size: tuple[float, float],
on_select_call: Callable[[T], None] = None) -> None:
on_select_call: Callable[[T], None] | None = None) -> None:
if not tabdefs:
raise ValueError('At least one tab def is required')
self.tabs: dict[T, Tab] = {}

Some files were not shown because too many files have changed in this diff Show more