diff --git a/assets/graphics/fonts/keycaps.png b/assets/graphics/fonts/keycaps.png new file mode 100644 index 000000000..eeb1cc0ee Binary files /dev/null and b/assets/graphics/fonts/keycaps.png differ diff --git a/assets/graphics/fonts/keycaps_gamepad.png b/assets/graphics/fonts/keycaps_gamepad.png new file mode 100644 index 000000000..508177bda Binary files /dev/null and b/assets/graphics/fonts/keycaps_gamepad.png differ diff --git a/assets/graphics/fonts/puae000-e07f.png b/assets/graphics/fonts/puae000-e07f.png new file mode 100644 index 000000000..580131f32 Binary files /dev/null and b/assets/graphics/fonts/puae000-e07f.png differ diff --git a/assets/graphics/fonts/thai_fullwidth.png b/assets/graphics/fonts/thai_fullwidth.png index 26ce5b606..7b8d61adc 100644 Binary files a/assets/graphics/fonts/thai_fullwidth.png and b/assets/graphics/fonts/thai_fullwidth.png differ diff --git a/assets/graphics/weathers/generic_light.png b/assets/graphics/weathers/generic_light.png index 4cff6fc0a..71f1e6efb 100644 Binary files a/assets/graphics/weathers/generic_light.png and b/assets/graphics/weathers/generic_light.png differ diff --git a/assets/locales/bgBG/game.json b/assets/locales/bgBG/game.json index 06889df23..4b240efe7 100644 --- a/assets/locales/bgBG/game.json +++ b/assets/locales/bgBG/game.json @@ -4,5 +4,6 @@ "COPYRIGHT_ALL_RIGHTS_RESERVED": "Всички права запазени", "APP_ADJUST_YOUR_MONITOR": "", - "APP_WARNING_HEALTH_AND_SAFETY": "ВНИМАНИЕ-ЗДРАВЕ И БЕЗОПАСНОСТ" + "APP_WARNING_HEALTH_AND_SAFETY": "ВНИМАНИЕ-ЗДРАВЕ И БЕЗОПАСНОСТ", + "MENU_LABEL_PRESS_START_SYMBOL": "атисни >" } \ No newline at end of file diff --git a/assets/locales/csCZ/game.json b/assets/locales/csCZ/game.json index 62d6956d5..0ca319cb3 100644 --- a/assets/locales/csCZ/game.json +++ b/assets/locales/csCZ/game.json @@ -4,5 +4,6 @@ "COPYRIGHT_ALL_RIGHTS_RESERVED": "Všechna práva vyhrazena", "APP_ADJUST_YOUR_MONITOR": "", - "APP_WARNING_HEALTH_AND_SAFETY": "POZOR-ZDRAVÍ A BEZPEČNOST" + "APP_WARNING_HEALTH_AND_SAFETY": "POZOR-ZDRAVÍ A BEZPEČNOST", + "MENU_LABEL_PRESS_START_SYMBOL": "Stiskněte >" } \ No newline at end of file diff --git a/assets/locales/daDK/game.json b/assets/locales/daDK/game.json index 70a520aa2..735863a01 100644 --- a/assets/locales/daDK/game.json +++ b/assets/locales/daDK/game.json @@ -4,5 +4,6 @@ "COPYRIGHT_ALL_RIGHTS_RESERVED": "Alle rettigheder forbeholdes", "APP_ADJUST_YOUR_MONITOR": "", - "APP_WARNING_HEALTH_AND_SAFETY": "ADVARSEL-SUNDHED OG SIKKERHED" + "APP_WARNING_HEALTH_AND_SAFETY": "ADVARSEL-SUNDHED OG SIKKERHED", + "MENU_LABEL_PRESS_START_SYMBOL": "Tryk >" } \ No newline at end of file diff --git a/assets/locales/de/game.json b/assets/locales/de/game.json index 830c9aa90..b2aeed987 100644 --- a/assets/locales/de/game.json +++ b/assets/locales/de/game.json @@ -4,6 +4,7 @@ "COPYRIGHT_ALL_RIGHTS_RESERVED": "Alle Rechte vorbehalten.", "APP_ADJUST_YOUR_MONITOR": "", - "APP_WARNING_HEALTH_AND_SAFETY": "WARNUNG-GESUNDHEIT UND SICHERHEIT" + "APP_WARNING_HEALTH_AND_SAFETY": "WARNUNG-GESUNDHEIT UND SICHERHEIT", + "MENU_LABEL_PRESS_START_SYMBOL": "Drücke >" } \ No newline at end of file diff --git a/assets/locales/elGR/game.json b/assets/locales/elGR/game.json index 5abcffabf..5d2a7833d 100644 --- a/assets/locales/elGR/game.json +++ b/assets/locales/elGR/game.json @@ -4,6 +4,7 @@ "COPYRIGHT_ALL_RIGHTS_RESERVED": "Όλα τα δικαιώματα διατηρούνται", "APP_ADJUST_YOUR_MONITOR": "", - "APP_WARNING_HEALTH_AND_SAFETY": "ΠΡΟΣΟΧΗ-ΥΓΕΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ" + "APP_WARNING_HEALTH_AND_SAFETY": "ΠΡΟΣΟΧΗ-ΥΓΕΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ", + "MENU_LABEL_PRESS_START_SYMBOL": "Πάτα >" } \ No newline at end of file diff --git a/assets/locales/en/game.json b/assets/locales/en/game.json index 9abe7e574..73436e6cc 100644 --- a/assets/locales/en/game.json +++ b/assets/locales/en/game.json @@ -4,6 +4,7 @@ "COPYRIGHT_ALL_RIGHTS_RESERVED": "All rights reserved.", "APP_ADJUST_YOUR_MONITOR": "Best player experience can be achieved with properly adjusted monitor. If you have not, please do it before you play.", - "APP_WARNING_HEALTH_AND_SAFETY": "WARNING-HEALTH AND SAFETY" + "APP_WARNING_HEALTH_AND_SAFETY": "WARNING-HEALTH AND SAFETY", + "MENU_LABEL_PRESS_START_SYMBOL": "Press >" } \ No newline at end of file diff --git a/assets/locales/es/game.json b/assets/locales/es/game.json index 98313e554..9a92d8f5c 100644 --- a/assets/locales/es/game.json +++ b/assets/locales/es/game.json @@ -4,6 +4,6 @@ "COPYRIGHT_ALL_RIGHTS_RESERVED": "Todos los derechos reservados.", "APP_ADJUST_YOUR_MONITOR": "", - "APP_WARNING_HEALTH_AND_SAFETY": "ADVERTENCIA-SALUD Y SEGURIDAD" - + "APP_WARNING_HEALTH_AND_SAFETY": "ADVERTENCIA-SALUD Y SEGURIDAD", + "MENU_LABEL_PRESS_START_SYMBOL": "Pulsa >" } \ No newline at end of file diff --git a/assets/locales/fiFI/game.json b/assets/locales/fiFI/game.json index 1a0dcfaad..923db585a 100644 --- a/assets/locales/fiFI/game.json +++ b/assets/locales/fiFI/game.json @@ -4,5 +4,6 @@ "COPYRIGHT_ALL_RIGHTS_RESERVED": "Kaikki oikeudet pidätetään", "APP_ADJUST_YOUR_MONITOR": "Paras pelikokemus saavutetaan on oikealla säädetty näytöllä. Jos et ole ollut, säädä ennen pelaamista.", - "APP_WARNING_HEALTH_AND_SAFETY": "VAROITUS-TERVEYS JA TURVALLISUUS" + "APP_WARNING_HEALTH_AND_SAFETY": "VAROITUS-TERVEYS JA TURVALLISUUS", + "MENU_LABEL_PRESS_START_SYMBOL": "Paina >" } \ No newline at end of file diff --git a/assets/locales/fiFI/tips.json b/assets/locales/fiFI/tips.json index fff14425a..3ea078599 100644 --- a/assets/locales/fiFI/tips.json +++ b/assets/locales/fiFI/tips.json @@ -1,3 +1,3 @@ { - "GAME_TIPS_1": "Milloin ”heilutat” aseen, jos seisot yläpuolella vihollisten voit isket ne kovemmin, mutta varo: sama asia tapahtuu viholliset!" + "GAME_TIPS_1": "Milloin ”heilutat” aseen, jos seisot yläpuolella vastustajien voit isket ne kovemmin, mutta varo: sama asia tapahtuu vastustajat!" } \ No newline at end of file diff --git a/assets/locales/frFR/Polyglot-100_frFR.json b/assets/locales/frFR/Polyglot-100_frFR.json index e90ca0bc0..72a79f6c0 100644 --- a/assets/locales/frFR/Polyglot-100_frFR.json +++ b/assets/locales/frFR/Polyglot-100_frFR.json @@ -521,11 +521,11 @@ }, { "n": "CONTEXT_MEDAL_GOLD", - "s": "Médaille d’or" + "s": "Médaille d'or" }, { "n": "CONTEXT_MEDAL_SILVER", - "s": "Médaille d’argent" + "s": "Médaille d'argent" }, { "n": "CONTEXT_METAL_BRONZE", @@ -609,7 +609,7 @@ }, { "n": "CREDITS_ANIMATION_DIRECTOR", - "s": "Directeur de l’Animation" + "s": "Directeur de l'Animation" }, { "n": "CREDITS_ANIMATOR", @@ -737,7 +737,7 @@ }, { "n": "CREDITS_INTERFACE_ARTIST", - "s": "Artiste d’interfaces" + "s": "Artiste d'interfaces" }, { "n": "CREDITS_JUNIOR", @@ -905,7 +905,7 @@ }, { "n": "ERROR_GENERIC_ERRCODE", - "s": "Code d’erreur :" + "s": "Code d'erreur :" }, { "n": "ERROR_GENERIC_INVALID_KEY", @@ -917,7 +917,7 @@ }, { "n": "ERROR_GENERIC_TEXT", - "s": "Une erreur s’est produite." + "s": "Une erreur s'est produite." }, { "n": "ERROR_NETWORK_CONNECTION_LOST", @@ -925,15 +925,15 @@ }, { "n": "ERROR_NETWORK_DISCONNECTED_YOUR_OPPONENT", - "s": "Votre adversaire s’est déconnecté." + "s": "Votre adversaire s'est déconnecté." }, { "n": "ERROR_NETWORK_DISCONNECTED_YOUR_PLAYER", - "s": "L’autre joueur s’est déconnecté." + "s": "L'autre joueur s'est déconnecté." }, { "n": "ERROR_NETWORK_DISCONNECTED_YOUR_TEAMMATE", - "s": "Votre coéquipier s’est déconnecté." + "s": "Votre coéquipier s'est déconnecté." }, { "n": "ERROR_NETWORK_SERVER", @@ -997,7 +997,7 @@ }, { "n": "GAME_ACTION_CROUCH", - "s": "S’accroupir" + "s": "S'accroupir" }, { "n": "GAME_ACTION_DODGE", @@ -1073,7 +1073,7 @@ }, { "n": "GAME_ACTION_RUN_AWAY", - "s": "S’enfuir" + "s": "S'enfuir" }, { "n": "GAME_ACTION_SHOOT", @@ -1117,7 +1117,7 @@ }, { "n": "GAME_CHARACTER_EXP", - "s": "Points d’expérience" + "s": "Points d'expérience" }, { "n": "GAME_CHARACTER_FEMALE", @@ -1181,7 +1181,7 @@ }, { "n": "GAME_CHARACTER_SPAWN_POINT", - "s": "Point d’Apparition" + "s": "Point d'Apparition" }, { "n": "GAME_CHARACTER_TRANSGENDER", @@ -1245,11 +1245,11 @@ }, { "n": "GAME_GENRE_ACTION", - "s": "Jeu d’action" + "s": "Jeu d'action" }, { "n": "GAME_GENRE_ADVENTURE", - "s": "Jeu d’aventure" + "s": "Jeu d'aventure" }, { "n": "GAME_GENRE_CARD", @@ -1293,7 +1293,7 @@ }, { "n": "GAME_GENRE_PUZZLE", - "s": "Jeu d’énigmes" + "s": "Jeu d'énigmes" }, { "n": "GAME_GENRE_QUIZ", @@ -1373,7 +1373,7 @@ }, { "n": "GAME_INVENTORY_CAPACITY", - "s": "Capacité de l’inventaire" + "s": "Capacité de l'inventaire" }, { "n": "GAME_INVENTORY_DROP", @@ -1425,7 +1425,7 @@ }, { "n": "GAME_LABEL_PLEASE_BE_CAREFUL", - "s": "S’il vous plaît soyez prudent." + "s": "S'il vous plaît soyez prudent." }, { "n": "GAME_LABEL_TACTICS", @@ -1477,7 +1477,7 @@ }, { "n": "GAME_OBJECTIVE_ESCAPE", - "s": "S’échapper" + "s": "S'échapper" }, { "n": "GAME_OBJECTIVE_GAME_FINISHED", @@ -2025,7 +2025,7 @@ }, { "n": "MENU_LABEL_GALLERY", - "s": "Galerie d’art" + "s": "Galerie d'art" }, { "n": "MENU_LABEL_GOODBYE", @@ -2257,7 +2257,7 @@ }, { "n": "MENU_LOGIN_REGISTER", - "s": "S’inscrire" + "s": "S'inscrire" }, { "n": "MENU_LOGIN_REMEMBER", @@ -2337,7 +2337,7 @@ }, { "n": "MENU_NAME_USER", - "s": "Nom d’utilisateur" + "s": "Nom d'utilisateur" }, { "n": "MENU_OPTIONS", @@ -2557,7 +2557,7 @@ }, { "n": "MENU_VR_HMD_ORIENT_RESET", - "s": "Restaurer l’orientation du HDM" + "s": "Restaurer l'orientation du HDM" }, { "n": "MENU_VR_VIRTUAL_REALITY", diff --git a/assets/locales/frFR/configurator.json b/assets/locales/frFR/configurator.json index c8dc88664..06cc2d90f 100644 --- a/assets/locales/frFR/configurator.json +++ b/assets/locales/frFR/configurator.json @@ -1,15 +1,15 @@ { - "MENU_MONITOR_CALI_TITLE": "Vérification d’écran", - "MENU_MONITOR_CALI_LABEL_1": "Vous devriez être capable de voir la barre 1 de l’arrière-plan", + "MENU_MONITOR_CALI_TITLE": "Vérification d'écran", + "MENU_MONITOR_CALI_LABEL_1": "Vous devriez être capable de voir la barre 1 de l'arrière-plan", "MENU_MONITOR_CALI_LABEL_2": "et distinguer clairement la barre 30, 31 et 32", "MENU_MONITOR_CALI_LABEL_3": " ", - "MENU_MONITOR_CALI_LABEL_4": "Un mauvais écran ne sera pas afficher quelques barres de l’extrême gauche,", + "MENU_MONITOR_CALI_LABEL_4": "Un mauvais écran ne sera pas afficher quelques barres de l'extrême gauche,", "MENU_MONITOR_CALI_LABEL_5": "ne sera pas afficher une différence entre la droite quelques-uns,", "MENU_MONITOR_CALI_LABEL_6": "ou montre un assez grand saut entre barre 31 et 32", "MENU_MONITOR_CALI_LABEL_7": " ", "MENU_MONITOR_CALI_LABEL_8": "Sur un bon écran, vous devries voir les étapes à peu près égales de", "MENU_MONITOR_CALI_LABEL_9": "luminosité sur toute la plate 1 à 32", "MENU_MONITOR_CALI_LABEL_10": " ", - "MENU_MONITOR_CALI_LABEL_11": "Régler le contraste et luminosité de votre écran pour améliorer l’image", + "MENU_MONITOR_CALI_LABEL_11": "Régler le contraste et luminosité de votre écran pour améliorer l'image", "MENU_MONITOR_CALI_LABEL_12": " " } \ No newline at end of file diff --git a/assets/locales/frFR/game.json b/assets/locales/frFR/game.json index b6d1b7db6..64f425cca 100644 --- a/assets/locales/frFR/game.json +++ b/assets/locales/frFR/game.json @@ -4,6 +4,6 @@ "COPYRIGHT_ALL_RIGHTS_RESERVED": "Tous les droits sont réservés.", "APP_ADJUST_YOUR_MONITOR": "Meilleure expérience de joueur peut être réalisé avec écran correctement réglé. Si vous ne l'avez pas, s.v.p. le réglez avant de jouer.", - "APP_WARNING_HEALTH_AND_SAFETY": "ATTENTION-SANTÉ ET SÉCURITÉ" - + "APP_WARNING_HEALTH_AND_SAFETY": "ATTENTION-SANTÉ ET SÉCURITÉ", + "MENU_LABEL_PRESS_START_SYMBOL": "Appuyez sur >" } \ No newline at end of file diff --git a/assets/locales/frFR/tips.json b/assets/locales/frFR/tips.json index c0caa4a0c..5b34e7cab 100644 --- a/assets/locales/frFR/tips.json +++ b/assets/locales/frFR/tips.json @@ -1,3 +1,3 @@ { - "GAME_TIPS_1": "Lorsque vous « balancez » une arme, si vous être debout en haut à ennemis, vous frapperez ils plus durs, mais faire attention : même truc applique à votre ennemis !" + "GAME_TIPS_1": "Lorsque vous « balancez » une arme, si vous être debout en haut à ennemis, vous frapperez ils plus durs, mais faites attention : même truc applique à votre ennemis !" } \ No newline at end of file diff --git a/assets/locales/huHU/game.json b/assets/locales/huHU/game.json index 9f49789f8..ef7037e5e 100644 --- a/assets/locales/huHU/game.json +++ b/assets/locales/huHU/game.json @@ -4,6 +4,7 @@ "COPYRIGHT_ALL_RIGHTS_RESERVED": "Minden jog fenntartva", "APP_ADJUST_YOUR_MONITOR": "", - "APP_WARNING_HEALTH_AND_SAFETY": "VIGYÁZAT-EGÉSZSÉGÜGYI ÉS BIZTONSÁGI" + "APP_WARNING_HEALTH_AND_SAFETY": "VIGYÁZAT-EGÉSZSÉGÜGYI ÉS BIZTONSÁGI", + "MENU_LABEL_PRESS_START_SYMBOL": "Nyomd meg a >ot" } \ No newline at end of file diff --git a/assets/locales/isIC/Polyglot-100_isIC.json b/assets/locales/isIC/Polyglot-100_isIC.json index 1b7d98156..2567ff907 100644 --- a/assets/locales/isIC/Polyglot-100_isIC.json +++ b/assets/locales/isIC/Polyglot-100_isIC.json @@ -2115,11 +2115,11 @@ }, { "n": "MENU_LABEL_PRESS_START", - "s": "Ýttu „Start“" + "s": "Ýttu Start" }, { "n": "MENU_LABEL_PRESS_START_CONTINUE", - "s": "Ýttu „Start“ til að halda áfram" + "s": "Ýttu Start til að halda áfram" }, { "n": "MENU_LABEL_PREVIOUS", diff --git a/assets/locales/isIC/game.json b/assets/locales/isIC/game.json index 487cd7330..722592021 100644 --- a/assets/locales/isIC/game.json +++ b/assets/locales/isIC/game.json @@ -4,6 +4,7 @@ "COPYRIGHT_ALL_RIGHTS_RESERVED": "Öll réttindi áskilinn.", "APP_ADJUST_YOUR_MONITOR": "Best leikmaður reynsla er getur náðist með rétt kvarðaður skjárinn. Ef þú ekki gerðir, gerðu svo vel að kvarða áður en þú leikur.", - "APP_WARNING_HEALTH_AND_SAFETY": "VIÐVÖRUN-HEILSA OG ÖRYGGI" + "APP_WARNING_HEALTH_AND_SAFETY": "VIÐVÖRUN-HEILSA OG ÖRYGGI", + "MENU_LABEL_PRESS_START_SYMBOL": "Ýttu >" } \ No newline at end of file diff --git a/assets/locales/it/Polyglot-100_it.json b/assets/locales/it/Polyglot-100_it.json index f92babd6c..a38509524 100644 --- a/assets/locales/it/Polyglot-100_it.json +++ b/assets/locales/it/Polyglot-100_it.json @@ -325,7 +325,7 @@ }, { "n": "CONTEXT_ITEM_GAUNTLETS", - "s": "Guanti d’armatura" + "s": "Guanti d'armatura" }, { "n": "CONTEXT_ITEM_GEM", @@ -521,11 +521,11 @@ }, { "n": "CONTEXT_MEDAL_GOLD", - "s": "Medaglia d’oro" + "s": "Medaglia d'oro" }, { "n": "CONTEXT_MEDAL_SILVER", - "s": "Medaglia d’argento" + "s": "Medaglia d'argento" }, { "n": "CONTEXT_METAL_BRONZE", @@ -609,7 +609,7 @@ }, { "n": "CREDITS_ANIMATION_DIRECTOR", - "s": "Direttore dell’animazione" + "s": "Direttore dell'animazione" }, { "n": "CREDITS_ANIMATOR", @@ -737,7 +737,7 @@ }, { "n": "CREDITS_INTERFACE_ARTIST", - "s": "Artista per l’interfaccia" + "s": "Artista per l'interfaccia" }, { "n": "CREDITS_JUNIOR", @@ -929,7 +929,7 @@ }, { "n": "ERROR_NETWORK_DISCONNECTED_YOUR_PLAYER", - "s": "L’altro giocatore si è disconnesso." + "s": "L'altro giocatore si è disconnesso." }, { "n": "ERROR_NETWORK_DISCONNECTED_YOUR_TEAMMATE", @@ -1245,11 +1245,11 @@ }, { "n": "GAME_GENRE_ACTION", - "s": "Gioco d’azione" + "s": "Gioco d'azione" }, { "n": "GAME_GENRE_ADVENTURE", - "s": "Gioco d’avventura" + "s": "Gioco d'avventura" }, { "n": "GAME_GENRE_CARD", @@ -1373,7 +1373,7 @@ }, { "n": "GAME_INVENTORY_CAPACITY", - "s": "Capacità dell’ inventario" + "s": "Capacità dell' inventario" }, { "n": "GAME_INVENTORY_DROP", @@ -2025,7 +2025,7 @@ }, { "n": "MENU_LABEL_GALLERY", - "s": "Galleria d’arte" + "s": "Galleria d'arte" }, { "n": "MENU_LABEL_GOODBYE", diff --git a/assets/locales/it/game.json b/assets/locales/it/game.json index 2ee873d4f..97ab2823c 100644 --- a/assets/locales/it/game.json +++ b/assets/locales/it/game.json @@ -4,6 +4,7 @@ "COPYRIGHT_ALL_RIGHTS_RESERVED": "Tutti i diritti riservati.", "APP_ADJUST_YOUR_MONITOR": "", - "APP_WARNING_HEALTH_AND_SAFETY": "ATTENZIONE-SALUTE E SICUREZZA" + "APP_WARNING_HEALTH_AND_SAFETY": "ATTENZIONE-SALUTE E SICUREZZA", + "MENU_LABEL_PRESS_START_SYMBOL": "Premi >" } \ No newline at end of file diff --git a/assets/locales/jaJP/game.json b/assets/locales/jaJP/game.json index 01aa3548e..7897255fc 100644 --- a/assets/locales/jaJP/game.json +++ b/assets/locales/jaJP/game.json @@ -4,6 +4,7 @@ "COPYRIGHT_ALL_RIGHTS_RESERVED": "全著作権所有。", "APP_ADJUST_YOUR_MONITOR": "このゲームは、適切に調整したモニターから最高のプレイができます。調整していなかったら、プレイする前に調整してください。", - "APP_WARNING_HEALTH_AND_SAFETY": "警告ー健康と安全のために" + "APP_WARNING_HEALTH_AND_SAFETY": "警告ー健康と安全のために", + "MENU_LABEL_PRESS_START_SYMBOL": "> ボタンを押す" } \ No newline at end of file diff --git a/assets/locales/jaJP/tips.json b/assets/locales/jaJP/tips.json index be51cd7df..4bdd43bff 100644 --- a/assets/locales/jaJP/tips.json +++ b/assets/locales/jaJP/tips.json @@ -1,3 +1,3 @@ { - "GAME_TIPS_1": "武器を「振り回す」の時に、敵より上に立っていれば、もう強くな攻撃ができます。だが注意せよーそれは敵も同じでしょう!" + "GAME_TIPS_1": "武器を「振り回す」の時に、敵より上に立っていれば、もう強くな攻撃が入ります。だが注意せよーそれは敵も同じでしょう!" } \ No newline at end of file diff --git a/assets/locales/jakanaJP/Polyglot-100_jakanaJP.json b/assets/locales/jakanaJP/Polyglot-100_jakanaJP.json index 03ecf2586..a5f4274de 100644 --- a/assets/locales/jakanaJP/Polyglot-100_jakanaJP.json +++ b/assets/locales/jakanaJP/Polyglot-100_jakanaJP.json @@ -2113,19 +2113,19 @@ }, { "n": "MENU_LABEL_PRESS_ANYKEY", - "s": "いずれかのキーを押す" + "s": "いずれかのキーを おす" }, { "n": "MENU_LABEL_PRESS_ANYKEY_CONTINUE", - "s": "続けるにはいずれかのキーを押す" + "s": "つづけるには いずれかのキーを おす" }, { "n": "MENU_LABEL_PRESS_START", - "s": "STARTボタンを押す" + "s": "STARTボタンを おす" }, { "n": "MENU_LABEL_PRESS_START_CONTINUE", - "s": "続けるにはSTARTボタンを押す" + "s": "つづけるには STARTボタンを おす" }, { "n": "MENU_LABEL_PREVIOUS", diff --git a/assets/locales/jakanaJP/game.json b/assets/locales/jakanaJP/game.json index c8e097621..65dee068c 100644 --- a/assets/locales/jakanaJP/game.json +++ b/assets/locales/jakanaJP/game.json @@ -4,6 +4,7 @@ "COPYRIGHT_ALL_RIGHTS_RESERVED": "ぜんちょさくけん しょゆう。", "APP_ADJUST_YOUR_MONITOR": "このゲームは、てきせつにちょうせいした モニターから さいこうのプレイができます。ちょうせいして いなかったら、プレイするまえに ちょうせいしてください。", - "APP_WARNING_HEALTH_AND_SAFETY": "けいこくーけんこうと あんぜんの ために" + "APP_WARNING_HEALTH_AND_SAFETY": "けいこくーけんこうと あんぜんの ために", + "MENU_LABEL_PRESS_START_SYMBOL": "> ボタンを おす" } \ No newline at end of file diff --git a/assets/locales/koKR/game.json b/assets/locales/koKR/game.json index 1b834949a..71a4bb305 100644 --- a/assets/locales/koKR/game.json +++ b/assets/locales/koKR/game.json @@ -4,6 +4,7 @@ "COPYRIGHT_ALL_RIGHTS_RESERVED": "모든 권리 보유.", "APP_ADJUST_YOUR_MONITOR": "본 게임은 적절히 조정된 모니터에서 최상으로 즐길 수 있습니다. 조정하지 않았다면 플레이하기 전에 조정해 주십시오.", - "APP_WARNING_HEALTH_AND_SAFETY": "경고—건강과 안전을 위하여" + "APP_WARNING_HEALTH_AND_SAFETY": "경고—건강과 안전을 위하여", + "MENU_LABEL_PRESS_START_SYMBOL": ">을 누르세요" } \ No newline at end of file diff --git a/assets/locales/nlNL/game.json b/assets/locales/nlNL/game.json index fb1d55b1e..7a6f00e4d 100644 --- a/assets/locales/nlNL/game.json +++ b/assets/locales/nlNL/game.json @@ -4,6 +4,7 @@ "COPYRIGHT_ALL_RIGHTS_RESERVED": "Alle rechten voorbehouden", "APP_ADJUST_YOUR_MONITOR": "", - "APP_WARNING_HEALTH_AND_SAFETY": "WAARSCHUWING-GEZONDHEID EN VEILIGHEID" + "APP_WARNING_HEALTH_AND_SAFETY": "WAARSCHUWING-GEZONDHEID EN VEILIGHEID", + "MENU_LABEL_PRESS_START_SYMBOL": "Druk op >" } \ No newline at end of file diff --git a/assets/locales/noNB/game.json b/assets/locales/noNB/game.json index 7da5e7e34..61675adc4 100644 --- a/assets/locales/noNB/game.json +++ b/assets/locales/noNB/game.json @@ -4,6 +4,7 @@ "COPYRIGHT_ALL_RIGHTS_RESERVED": "Alle rettigheter reservert", "APP_ADJUST_YOUR_MONITOR": "", - "APP_WARNING_HEALTH_AND_SAFETY": "ADVARSEL-HELSE OG SIKKERHET" + "APP_WARNING_HEALTH_AND_SAFETY": "ADVARSEL-HELSE OG SIKKERHET", + "MENU_LABEL_PRESS_START_SYMBOL": "Trykk >" } \ No newline at end of file diff --git a/assets/locales/plPL/game.json b/assets/locales/plPL/game.json index 64e53e282..9ce85c557 100644 --- a/assets/locales/plPL/game.json +++ b/assets/locales/plPL/game.json @@ -4,6 +4,7 @@ "COPYRIGHT_ALL_RIGHTS_RESERVED": "Wszelkie prawa zastrzeżone", "APP_ADJUST_YOUR_MONITOR": "", - "APP_WARNING_HEALTH_AND_SAFETY": "UWAGA-ZDROWIE I BEZPIECZEŃSTWO" + "APP_WARNING_HEALTH_AND_SAFETY": "UWAGA-ZDROWIE I BEZPIECZEŃSTWO", + "MENU_LABEL_PRESS_START_SYMBOL": "Naciśnij >" } \ No newline at end of file diff --git a/assets/locales/ptBR/game.json b/assets/locales/ptBR/game.json index 0eb6f556a..f653e8f7b 100644 --- a/assets/locales/ptBR/game.json +++ b/assets/locales/ptBR/game.json @@ -4,6 +4,7 @@ "COPYRIGHT_ALL_RIGHTS_RESERVED": "Todos os direitos reservados", "APP_ADJUST_YOUR_MONITOR": "", - "APP_WARNING_HEALTH_AND_SAFETY": "ATENÇÃO-SAÚDE E SEGURANÇA" + "APP_WARNING_HEALTH_AND_SAFETY": "ATENÇÃO-SAÚDE E SEGURANÇA", + "MENU_LABEL_PRESS_START_SYMBOL": "Pressione >" } \ No newline at end of file diff --git a/assets/locales/ptPT/game.json b/assets/locales/ptPT/game.json index 0eb6f556a..1a554aa00 100644 --- a/assets/locales/ptPT/game.json +++ b/assets/locales/ptPT/game.json @@ -4,6 +4,7 @@ "COPYRIGHT_ALL_RIGHTS_RESERVED": "Todos os direitos reservados", "APP_ADJUST_YOUR_MONITOR": "", - "APP_WARNING_HEALTH_AND_SAFETY": "ATENÇÃO-SAÚDE E SEGURANÇA" + "APP_WARNING_HEALTH_AND_SAFETY": "ATENÇÃO-SAÚDE E SEGURANÇA", + "MENU_LABEL_PRESS_START_SYMBOL": "Carrega no >" } \ No newline at end of file diff --git a/assets/locales/roRO/game.json b/assets/locales/roRO/game.json index 047a9a837..ba5497b9a 100644 --- a/assets/locales/roRO/game.json +++ b/assets/locales/roRO/game.json @@ -4,6 +4,7 @@ "COPYRIGHT_ALL_RIGHTS_RESERVED": "Toate drepturile rezervate", "APP_ADJUST_YOUR_MONITOR": "", - "APP_WARNING_HEALTH_AND_SAFETY": "ATENȚIONARE-SĂNĂTATE ȘI SIGURANȚĂ" + "APP_WARNING_HEALTH_AND_SAFETY": "ATENȚIONARE-SĂNĂTATE ȘI SIGURANȚĂ", + "MENU_LABEL_PRESS_START_SYMBOL": "Apasă >" } \ No newline at end of file diff --git a/assets/locales/ruRU/game.json b/assets/locales/ruRU/game.json index 5e3939bf1..58ef0c708 100644 --- a/assets/locales/ruRU/game.json +++ b/assets/locales/ruRU/game.json @@ -4,6 +4,7 @@ "COPYRIGHT_ALL_RIGHTS_RESERVED": "Все права защищены", "APP_ADJUST_YOUR_MONITOR": "", - "APP_WARNING_HEALTH_AND_SAFETY": "ПРЕДУПРЕЖДЕНИЕ-ЗДОРОВЬЕ И БЕЗОПАСНОСТЬ" + "APP_WARNING_HEALTH_AND_SAFETY": "ПРЕДУПРЕЖДЕНИЕ-ЗДОРОВЬЕ И БЕЗОПАСНОСТЬ", + "MENU_LABEL_PRESS_START_SYMBOL": "Нажмите >" } \ No newline at end of file diff --git a/assets/locales/svSE/game.json b/assets/locales/svSE/game.json index 3b00017b3..4a1d54a30 100644 --- a/assets/locales/svSE/game.json +++ b/assets/locales/svSE/game.json @@ -4,6 +4,7 @@ "COPYRIGHT_ALL_RIGHTS_RESERVED": "Alla rättigheter förbehållna", "APP_ADJUST_YOUR_MONITOR": "", - "APP_WARNING_HEALTH_AND_SAFETY": "VARNING-HÄLSA OCH SÄKERHET" + "APP_WARNING_HEALTH_AND_SAFETY": "VARNING-HÄLSA OCH SÄKERHET", + "MENU_LABEL_PRESS_START_SYMBOL": "Tryck >" } \ No newline at end of file diff --git a/assets/locales/thTH/game.json b/assets/locales/thTH/game.json index 32200e6fa..975bfbfcd 100644 --- a/assets/locales/thTH/game.json +++ b/assets/locales/thTH/game.json @@ -4,6 +4,7 @@ "COPYRIGHT_ALL_RIGHTS_RESERVED": "สงวนลิขสิทธิ์", "APP_ADJUST_YOUR_MONITOR": "", - "APP_WARNING_HEALTH_AND_SAFETY": "คำเตือน-อนามัยและความปลอดภัย" + "APP_WARNING_HEALTH_AND_SAFETY": "คำเตือน-อนามัยและความปลอดภัย", + "MENU_LABEL_PRESS_START_SYMBOL": "กดปุ่ม >" } \ No newline at end of file diff --git a/assets/locales/trTR/game.json b/assets/locales/trTR/game.json index 5b706d1eb..d93f835bd 100644 --- a/assets/locales/trTR/game.json +++ b/assets/locales/trTR/game.json @@ -4,6 +4,7 @@ "COPYRIGHT_ALL_RIGHTS_RESERVED": "Her hakkı saklıdır", "APP_ADJUST_YOUR_MONITOR": "", - "APP_WARNING_HEALTH_AND_SAFETY": "UYARI-SAĞLIK VE GÜVENLİK" + "APP_WARNING_HEALTH_AND_SAFETY": "UYARI-SAĞLIK VE GÜVENLİK", + "MENU_LABEL_PRESS_START_SYMBOL": "> basınız" } \ No newline at end of file diff --git a/assets/locales/zhCN/game.json b/assets/locales/zhCN/game.json index 5ed9fbee6..001d962a5 100644 --- a/assets/locales/zhCN/game.json +++ b/assets/locales/zhCN/game.json @@ -4,6 +4,7 @@ "COPYRIGHT_ALL_RIGHTS_RESERVED": "版权所有", "APP_ADJUST_YOUR_MONITOR": "", - "APP_WARNING_HEALTH_AND_SAFETY": "警告ー健康和安全" + "APP_WARNING_HEALTH_AND_SAFETY": "警告ー健康和安全", + "MENU_LABEL_PRESS_START_SYMBOL": "按下 >" } \ No newline at end of file diff --git a/assets/locales/zhTW/game.json b/assets/locales/zhTW/game.json index c96bcc488..c669d4d7c 100644 --- a/assets/locales/zhTW/game.json +++ b/assets/locales/zhTW/game.json @@ -4,6 +4,7 @@ "COPYRIGHT_ALL_RIGHTS_RESERVED": "版權所有", "APP_ADJUST_YOUR_MONITOR": "", - "APP_WARNING_HEALTH_AND_SAFETY": "警告ー健康和安全" + "APP_WARNING_HEALTH_AND_SAFETY": "警告ー健康和安全", + "MENU_LABEL_PRESS_START_SYMBOL": "按下 >" } \ No newline at end of file diff --git a/src/net/torvald/imagefont/GameFontBase.kt b/src/net/torvald/imagefont/GameFontBase.kt index f812adef2..924eabe60 100644 --- a/src/net/torvald/imagefont/GameFontBase.kt +++ b/src/net/torvald/imagefont/GameFontBase.kt @@ -78,6 +78,7 @@ constructor() : Font { || (c.toInt() >= 0xE47 && c.toInt() <= 0xE4E) || (c.toInt() == 0xE31) private fun isThaiEF(c: Char) = c.toInt() == 0xE40 + private fun isKeycap(c: Char) = c.toInt() >= 0xE000 && c.toInt() <= 0xE07F @@ -138,6 +139,9 @@ constructor() : Font { private fun thaiEFIndexX(c: Char) = 3 private fun thaiEFIndexY(c: Char) = 0 + private fun keycapIndexX(c: Char) = (c.toInt() - 0xE000) % 16 + private fun keycapIndexY(c: Char) = (c.toInt() - 0xE000) / 16 + private val narrowWidthSheets = arrayOf( SHEET_ASCII_EF, SHEET_EXTA_EF, @@ -193,6 +197,8 @@ constructor() : Font { len += W_UNIHAN else if (isThaiDiacritics(s[i])) len += 0 // set width of the glyph as -W_LATIN_WIDE + else if (ctype == SHEET_KEYCAP) + len += SIZE_KEYCAP else len += W_LATIN_WIDE @@ -435,6 +441,10 @@ constructor() : Font { sheetX = thaiIndexX(ch) sheetY = thaiIndexY(ch) } + SHEET_KEYCAP -> { + sheetX = keycapIndexX(ch) + sheetY = keycapIndexY(ch) + } else -> { sheetX = ch.toInt() % 16 sheetY = ch.toInt() / 16 @@ -455,9 +465,9 @@ constructor() : Font { Math.round(x + getWidthSubstr(s, i + 1) - glyphW).toFloat(), // to deal with the height difference of the sheets - Math.round(y).toFloat() + (if (prevInstance == SHEET_CJK_PUNCT) -1 - - else if (prevInstance == SHEET_FW_UNI) (H - H_HANGUL) / 2 + Math.round(y).toFloat() + (if (prevInstance == SHEET_CJK_PUNCT) -1 // height hack + else if (prevInstance == SHEET_FW_UNI) (H - H_HANGUL) / 2 // completely legit height adjustment + else if (prevInstance == SHEET_KEYCAP) (H - SIZE_KEYCAP) / 2 // completely legit height adjustment else 0).toFloat(), scale.toFloat(), thisCol @@ -522,6 +532,8 @@ constructor() : Font { return SHEET_THAI_EM else if (c.isColourCode()) return SHEET_COLOURCODE + else if (isKeycap(c)) + return SHEET_KEYCAP else return SHEET_ASCII_EM// fixed width punctuations // fixed width @@ -584,6 +596,7 @@ constructor() : Font { lateinit internal var romanianSheet: SpriteSheet lateinit internal var romanianSheetEF: SpriteSheet lateinit internal var thaiSheet: SpriteSheet + lateinit internal var keycapSheet: SpriteSheet internal val JUNG_COUNT = 21 internal val JONG_COUNT = 28 @@ -600,6 +613,8 @@ constructor() : Font { internal val H_UNIHAN = 16 internal val H_KANA = 20 + internal val SIZE_KEYCAP = 18 + internal val SHEET_ASCII_EM = 0 internal val SHEET_ASCII_EF = 1 internal val SHEET_HANGUL = 2 @@ -621,6 +636,7 @@ constructor() : Font { internal val SHEET_EXTB_ROMANIAN_EF = 18 internal val SHEET_THAI_EM = 19 internal val SHEET_THAI_EF = 20 + internal val SHEET_KEYCAP = 21 internal val SHEET_COLOURCODE = 255 lateinit internal var sheetKey: Array diff --git a/src/net/torvald/imagefont/GameFontWhite.kt b/src/net/torvald/imagefont/GameFontWhite.kt index ea6f2be4a..b75ee908b 100644 --- a/src/net/torvald/imagefont/GameFontWhite.kt +++ b/src/net/torvald/imagefont/GameFontWhite.kt @@ -56,6 +56,8 @@ constructor() : GameFontBase() { "./assets/graphics/fonts/romana_ef.png", GameFontBase.W_LATIN_NARROW, GameFontBase.H) GameFontBase.thaiSheet = SpriteSheet( "./assets/graphics/fonts/thai_fullwidth.png", GameFontBase.W_LATIN_WIDE, GameFontBase.H) + GameFontBase.keycapSheet = SpriteSheet( + "./assets/graphics/fonts/puae000-e07f.png", GameFontBase.SIZE_KEYCAP, GameFontBase.SIZE_KEYCAP) val shk = arrayOf( GameFontBase.asciiSheet, @@ -78,7 +80,8 @@ constructor() : GameFontBase() { GameFontBase.romanianSheet, GameFontBase.romanianSheetEF, GameFontBase.thaiSheet, - null // Filler + null, // Filler + GameFontBase.keycapSheet ) GameFontBase.sheetKey = shk } diff --git a/src/net/torvald/serialise/ReadGameMapData.kt b/src/net/torvald/serialise/ReadGameMapData.kt index fa9975fe5..03ccc6bed 100644 --- a/src/net/torvald/serialise/ReadGameMapData.kt +++ b/src/net/torvald/serialise/ReadGameMapData.kt @@ -1,5 +1,8 @@ package net.torvald.serialise +import java.io.IOException +import java.io.InputStream + /** * Created by minjaesong on 16-08-24. */ diff --git a/src/net/torvald/terrarum/DefaultConfig.kt b/src/net/torvald/terrarum/DefaultConfig.kt index 6b754364d..f21fbf8c8 100644 --- a/src/net/torvald/terrarum/DefaultConfig.kt +++ b/src/net/torvald/terrarum/DefaultConfig.kt @@ -18,6 +18,8 @@ object DefaultConfig { jsonObject.addProperty("notificationshowuptime", 6500) jsonObject.addProperty("multithread", true) // experimental! + + // control-gamepad jsonObject.addProperty("joypadkeyn", 4) jsonObject.addProperty("joypadkeyw", 1) @@ -34,6 +36,10 @@ object DefaultConfig { jsonObject.addProperty("joypadrstickx", 2) jsonObject.addProperty("joypadrsticky", 3) // logitech indices + jsonObject.addProperty("joypadlabelstyle", "generic") // "nwii", "logitech", "sonyps", "msxb360", "generic" + + + // control-keyboard (Java key codes. This is what Minecraft also uses) jsonObject.addProperty("keyup", Key.E) jsonObject.addProperty("keyleft", Key.S) diff --git a/src/net/torvald/terrarum/MISC_FEATURES.md b/src/net/torvald/terrarum/MISC_FEATURES.md index 9513c310e..bc67c1857 100644 --- a/src/net/torvald/terrarum/MISC_FEATURES.md +++ b/src/net/torvald/terrarum/MISC_FEATURES.md @@ -31,4 +31,10 @@ Connect two or more tracker head to play the array of trackers play simultaneous *int: (0-63) number of the note pitch that is struck. 32: Middle C (C3). 'A' just above of Middle C (A3) has base pitch of 440 Hz. - *speed: in BPM \ No newline at end of file + *speed: in BPM + + +## Aimhack ## + +- Include a valid way of obtaining Aimhack (possessed weapon shit?) +- Implement it on ```.primaryUse(gc, delta)``` diff --git a/src/net/torvald/terrarum/StateInGame.kt b/src/net/torvald/terrarum/StateInGame.kt index 9306995a3..bfa904a42 100644 --- a/src/net/torvald/terrarum/StateInGame.kt +++ b/src/net/torvald/terrarum/StateInGame.kt @@ -227,8 +227,8 @@ constructor() : BasicGameState() { private fun setAppTitle() { Terrarum.appgc.setTitle( "Simple Slick Game" + - " — FPS: ${Terrarum.appgc.fps} (${Terrarum.TARGET_INTERNAL_FPS})" + - " — ${memInUse}M / ${totalVMMem}M") + " — F: ${Terrarum.appgc.fps} (${Terrarum.TARGET_INTERNAL_FPS})" + + " — M: ${memInUse}M / ${totalVMMem}M") } override fun render(gc: GameContainer, sbg: StateBasedGame, g: Graphics) { @@ -431,7 +431,10 @@ constructor() : BasicGameState() { val actor = actorContainer[i] val actorIndex = i if (actor is Visible && !actor.inUpdateRange()) { - actorContainerInactive.add(actor) // naïve add; duplicates are checked when the actor is re-activated + // inactive instead of delete, if not flagged to delete + if (!actor.flagDespawn) + actorContainerInactive.add(actor) // naïve add; duplicates are checked when the actor is re-activated + actorContainer.removeAt(actorIndex) actorContainerSize -= 1 i-- // array removed 1 elem, so we also decrement counter by 1 diff --git a/src/net/torvald/terrarum/StateMonitorCheck.kt b/src/net/torvald/terrarum/StateMonitorCheck.kt index 3f6901bfc..31ff25bb5 100644 --- a/src/net/torvald/terrarum/StateMonitorCheck.kt +++ b/src/net/torvald/terrarum/StateMonitorCheck.kt @@ -41,12 +41,7 @@ class StateMonitorCheck : BasicGameState() { private val backgroundCol = Color(0x404040) - private val colourLUT = arrayOf( - 0x08, 0x10, 0x18, 0x20, 0x28, 0x30, 0x38, 0x40, - 0x48, 0x50, 0x58, 0x60, 0x68, 0x70, 0x78, 0x80, - 0x88, 0x90, 0x98, 0xA0, 0xA8, 0xB0, 0xB8, 0xC0, - 0xC8, 0xD0, 0xD8, 0xE0, 0xE8, 0xF0, 0xF8, 0xFF - ) + private val colourLUT = IntArray(32, { 255.times(it + 1).div(32) }) val pictograms = ArrayList() lateinit var imageGallery: ItemImageGallery @@ -147,7 +142,7 @@ class StateMonitorCheck : BasicGameState() { // anykey Typography.printCentered( - g, Lang["MENU_LABEL_PRESS_ANYKEY_CONTINUE"], + g, Lang["MENU_LABEL_PRESS_ANYKEY"], anykeyY, this ) diff --git a/src/net/torvald/terrarum/StateSplash.kt b/src/net/torvald/terrarum/StateSplash.kt index b561dc7ca..bdad69b01 100644 --- a/src/net/torvald/terrarum/StateSplash.kt +++ b/src/net/torvald/terrarum/StateSplash.kt @@ -32,7 +32,7 @@ class StateSplash : BasicGameState() { var opacity = 0f val fadeTime = 500 - var fadeTimer = 0 + var fadeTimer = -1 var anykey_hit = false @@ -67,13 +67,14 @@ class StateSplash : BasicGameState() { override fun update(container: GameContainer, game: StateBasedGame, delta: Int) { // next splash or load next scene - if (anykey_hit && opened) { + if (anykey_hit && opacity < 0.0001f) { game.enterState(Terrarum.STATE_ID_GAME) } // fade-in if (delta < deltathre) { init = true + fadeTimer += delta if (opacity < 1f && !anykey_hit) { opacity = FastMath.interpolateLinear( @@ -93,11 +94,9 @@ class StateSplash : BasicGameState() { } // auto dismiss - if (opened && fadeTimer >= auto_dismiss) - //doAnykeyThingy() - - fadeTimer += delta - println(fadeTimer) + if (opened && fadeTimer >= auto_dismiss) { + doAnykeyThingy() + } } override fun getID(): Int = Terrarum.STATE_ID_SPLASH @@ -111,7 +110,7 @@ class StateSplash : BasicGameState() { Typography.printCentered(thisG, Lang["APP_WARNING_HEALTH_AND_SAFETY"], thisG.font.lineHeight * 2) - Typography.printCentered(thisG, Lang["MENU_LABEL_PRESS_ANYKEY_CONTINUE"], + Typography.printCentered(thisG, Lang["MENU_LABEL_PRESS_ANYKEY"], Terrarum.HEIGHT - thisG.font.lineHeight.times(3)) imageGallery.render(container, thisG) @@ -119,13 +118,6 @@ class StateSplash : BasicGameState() { g.drawImage(fadeSheet, 0f, 0f, Color(1f, 1f, 1f, opacity)) } - private fun knowYourPlace(i: Int): Int { - val gutter = (imageBoardHeight - virtualImageHeight.times(pictogramCollection.size)).toFloat().div( - pictogramCollection.size + 1f - ) - return (gutter * i.plus(1) + virtualImageHeight * i).roundInt() - } - override fun keyPressed(key: Int, c: Char) { doAnykeyThingy() } diff --git a/src/net/torvald/terrarum/Terrarum.kt b/src/net/torvald/terrarum/Terrarum.kt index 63f386818..5c45ab273 100644 --- a/src/net/torvald/terrarum/Terrarum.kt +++ b/src/net/torvald/terrarum/Terrarum.kt @@ -34,6 +34,21 @@ constructor(gamename: String) : StateBasedGame(gamename) { gameConfig = GameConfig() + joypadLabelStart = when (getConfigString("joypadlabelstyle")) { + "nwii" -> 0xE04B.toChar() // + mark + "logitech" -> 0xE05A.toChar() // number 10 + else -> 0xE042.toChar() // > mark (sonyps, msxb360, generic) + } + joypadLableSelect = when (getConfigString("joypadlabelstyle")) { + "nwii" -> 0xE04D.toChar() // - mark + "logitech" -> 0xE059.toChar() // number 9 + "sonyps" -> 0xE043.toChar() // solid rectangle + "msxb360" -> 0xE041.toChar() // < mark + else -> 0xE043.toChar() // solid rectangle + } + + + getDefaultDirectory() createDirs() @@ -69,6 +84,11 @@ constructor(gamename: String) : StateBasedGame(gamename) { fontGame = GameFontWhite() fontSmallNumbers = TinyAlphNum() + fontControlGuide = SpriteSheetFont(SpriteSheet( + "./assets/graphics/fonts/" + + if (environment == RunningEnvironment.CONSOLE) "keycaps_gamepad.png" + else "keycaps.png", 18, 18) + , ' ') hasController = gc.input.controllerCount > 0 if (hasController) { @@ -133,7 +153,7 @@ constructor(gamename: String) : StateBasedGame(gamename) { lateinit var environment: RunningEnvironment private val localeSimple = arrayOf("de", "en", "es", "it") - var gameLocale = "####" // locale override + var gameLocale = "####" // lateinit placeholder set(value) { if (localeSimple.contains(value.substring(0..1))) field = value.substring(0..1) @@ -145,6 +165,23 @@ constructor(gamename: String) : StateBasedGame(gamename) { private set lateinit var fontSmallNumbers: Font private set + lateinit var fontControlGuide: Font + private set + + var joypadLabelStart: Char = 0x00.toChar() // lateinit + var joypadLableSelect:Char = 0x00.toChar() // lateinit + var joypadLabelNinA: Char = 0x00.toChar() // lateinit TODO + var joypadLabelNinB: Char = 0x00.toChar() // lateinit TODO + var joypadLabelNinX: Char = 0x00.toChar() // lateinit TODO + var joypadLabelNinY: Char = 0x00.toChar() // lateinit TODO + var joypadLabelNinL: Char = 0x00.toChar() // lateinit TODO + var joypadLabelNinR: Char = 0x00.toChar() // lateinit TODO + var joypadLabelNinZL: Char = 0x00.toChar() // lateinit TODO + var joypadLabelNinZR: Char = 0x00.toChar() // lateinit TODO + val joypadLabelLEFT = 0xE068.toChar() + val joypadLabelDOWN = 0xE069.toChar() + val joypadLabelUP = 0xE06A.toChar() + val joypadLabelRIGHT = 0xE06B.toChar() // 0x0 - 0xF: Game-related // 0x10 - 0x1F: Config diff --git a/src/net/torvald/terrarum/gameactors/Actor.kt b/src/net/torvald/terrarum/gameactors/Actor.kt index 537efeb31..0ddc4208c 100644 --- a/src/net/torvald/terrarum/gameactors/Actor.kt +++ b/src/net/torvald/terrarum/gameactors/Actor.kt @@ -17,8 +17,8 @@ abstract class Actor : Comparable, Runnable { * @return Reference ID. (32768-0x7FFF_FFFF) */ abstract var referenceID: Int - abstract var actorValue: ActorValue + abstract var flagDespawn: Boolean override fun equals(other: Any?) = referenceID == (other as Actor).referenceID override fun hashCode() = referenceID diff --git a/src/net/torvald/terrarum/gameactors/ActorWithBody.kt b/src/net/torvald/terrarum/gameactors/ActorWithBody.kt index cd82204c6..59705986f 100644 --- a/src/net/torvald/terrarum/gameactors/ActorWithBody.kt +++ b/src/net/torvald/terrarum/gameactors/ActorWithBody.kt @@ -127,7 +127,9 @@ open class ActorWithBody : Actor(), Visible { * Flags and Properties */ + var grounded = false + override var flagDespawn = false /** Default to 'false' */ var isVisible = false /** Default to 'true' */ @@ -269,7 +271,7 @@ open class ActorWithBody : Actor(), Visible { } override fun update(gc: GameContainer, delta: Int) { - if (isUpdate) { + if (isUpdate && !flagDespawn) { /** * Temporary variables to reset diff --git a/src/net/torvald/terrarum/gameactors/PBCynthia.kt b/src/net/torvald/terrarum/gameactors/PBCynthia.kt index ae1f797b9..596aad0f0 100644 --- a/src/net/torvald/terrarum/gameactors/PBCynthia.kt +++ b/src/net/torvald/terrarum/gameactors/PBCynthia.kt @@ -13,7 +13,7 @@ object PBCynthia { CreatureRawInjector.inject(p.actorValue, "CreatureHuman.json") p.actorValue[AVKey._PLAYER_QUICKBARSEL] = 0 - p.actorValue["selectedtile"] = 16 + p.actorValue["__selectedtile"] = 16 p.sprite = SpriteAnimation() diff --git a/src/net/torvald/terrarum/gameactors/PBSigrid.kt b/src/net/torvald/terrarum/gameactors/PBSigrid.kt index 4812c9441..e7ec5c570 100644 --- a/src/net/torvald/terrarum/gameactors/PBSigrid.kt +++ b/src/net/torvald/terrarum/gameactors/PBSigrid.kt @@ -58,7 +58,8 @@ object PBSigrid { p.actorValue[AVKey.BASEDEFENCE] = 141 - p.actorValue["selectedtile"] = 16 + p.actorValue["__selectedtile"] = 16 // test code; replace with .primaryUse(gc, delta) + p.actorValue["__aimhelper"] = true p.setHitboxDimension(15, p.actorValue.getAsInt(AVKey.BASEHEIGHT)!!, 10, 0) diff --git a/src/net/torvald/terrarum/gameactors/ProjectileHoming.kt b/src/net/torvald/terrarum/gameactors/ProjectileHoming.kt new file mode 100644 index 000000000..5ab32b6f8 --- /dev/null +++ b/src/net/torvald/terrarum/gameactors/ProjectileHoming.kt @@ -0,0 +1,13 @@ +package net.torvald.terrarum.gameactors + +import org.dyn4j.geometry.Vector2 + +/** + * Created by minjaesong on 16-08-29. + */ +class ProjectileHoming(type: Int, position: Vector2, velocity: Vector2, luminosity: Int = 0) : + ProjectileSimple(type, position, velocity, luminosity) { + + + +} \ No newline at end of file diff --git a/src/net/torvald/terrarum/gameactors/ProjectileSimple.kt b/src/net/torvald/terrarum/gameactors/ProjectileSimple.kt new file mode 100644 index 000000000..3a961b94f --- /dev/null +++ b/src/net/torvald/terrarum/gameactors/ProjectileSimple.kt @@ -0,0 +1,61 @@ +package net.torvald.terrarum.gameactors + +import net.torvald.terrarum.gameactors.ActorWithBody +import org.dyn4j.geometry.Vector2 +import org.newdawn.slick.Color +import org.newdawn.slick.GameContainer +import org.newdawn.slick.Graphics +import java.util.* + +/** + * Created by minjaesong on 16-08-29. + */ +open class ProjectileSimple( + type: Int, + position: Vector2, + velocity: Vector2, + override var luminosity: Int = 0) : ActorWithBody(), Luminous { + + val damage: Int + val displayColour: Color + + /** + * Arguments: + * + * Hitbox(x-offset, y-offset, width, height) + * (Use ArrayList for normal circumstances) + */ + override val lightBoxList = ArrayList() + + init { + hitbox.set(position.x, position.y, 2.0, 2.0) // 2.0: size of the hitbox in pixels + lightBoxList.add(Hitbox(0.0, 0.0, 2.0, 2.0)) + this.velocity.set(velocity) + + damage = bulletDatabase[type][0] as Int + displayColour = bulletDatabase[type][1] as Color + } + + override fun update(gc: GameContainer, delta: Int) { + // hit something and despawn! (use ```flagDespawn = true```) + + + super.update(gc, delta) + } + + override fun drawBody(gc: GameContainer, g: Graphics) { + // draw trail of solid colour (Terraria style maybe?) + + } + + companion object { + val TYPE_BULLET_BASIC = 0 + + val bulletDatabase = arrayOf( + arrayOf(7, Color(0xFF5429)), + arrayOf(8, Color(0xFF5429)) + // ... + ) + } + +} \ No newline at end of file diff --git a/src/net/torvald/terrarum/gamecontroller/GameController.kt b/src/net/torvald/terrarum/gamecontroller/GameController.kt index 0508faa86..51850d173 100644 --- a/src/net/torvald/terrarum/gamecontroller/GameController.kt +++ b/src/net/torvald/terrarum/gamecontroller/GameController.kt @@ -52,7 +52,10 @@ object GameController { else if (input.isMouseButtonDown(Input.MOUSE_RIGHT_BUTTON)) { // test tile place try { - Terrarum.ingame.world.setTileTerrain(mouseTileX, mouseTileY, Terrarum.ingame.player.actorValue.getAsInt("selectedtile")!!) + Terrarum.ingame.world.setTileTerrain( + mouseTileX, mouseTileY, + Terrarum.ingame.player.actorValue.getAsInt("__selectedtile")!! + ) } catch (e: ArrayIndexOutOfBoundsException) { } diff --git a/src/net/torvald/terrarum/langpack/Lang.kt b/src/net/torvald/terrarum/langpack/Lang.kt index 4f502cb8c..f86e4e48f 100644 --- a/src/net/torvald/terrarum/langpack/Lang.kt +++ b/src/net/torvald/terrarum/langpack/Lang.kt @@ -113,9 +113,15 @@ object Lang { operator fun get(key: String): String { fun fallback(): String = langpack["${key}_$FALLBACK_LANG_CODE"] ?: "ERRNULL:$key" - val ret = langpack["${key}_${Terrarum.gameLocale}"] - return if (ret.isNullOrEmpty()) fallback() else ret!! + val ret = langpack["${key}_${Terrarum.gameLocale}"] + val ret2 = if (ret.isNullOrEmpty()) fallback() else ret!! + + // special treatment + if (key.startsWith("MENU_LABEL_PRESS_START_SYMBOL")) + return ret2.replace('>', Terrarum.joypadLabelStart) + + return ret2 } fun pluraliseLang(key: String, count: Int): String { diff --git a/src/net/torvald/terrarum/ui/ItemImageGallery.kt b/src/net/torvald/terrarum/ui/ItemImageGallery.kt index 7cf0b3fe7..c0dadc72b 100644 --- a/src/net/torvald/terrarum/ui/ItemImageGallery.kt +++ b/src/net/torvald/terrarum/ui/ItemImageGallery.kt @@ -16,8 +16,7 @@ class ItemImageGallery( val width: Int, val height: Int, val imageList: ArrayList, - val column: Int = 1 -) : UIItem { + val column: Int = 1) : UIItem { override fun update(gc: GameContainer, delta: Int) { } diff --git a/src/net/torvald/terrarum/ui/MovementInterpolator.kt b/src/net/torvald/terrarum/ui/Movement.kt similarity index 90% rename from src/net/torvald/terrarum/ui/MovementInterpolator.kt rename to src/net/torvald/terrarum/ui/Movement.kt index 5b0ce0168..b35b980d9 100644 --- a/src/net/torvald/terrarum/ui/MovementInterpolator.kt +++ b/src/net/torvald/terrarum/ui/Movement.kt @@ -5,9 +5,9 @@ import com.jme3.math.FastMath /** * Created by minjaesong on 16-03-22. */ -object MovementInterpolator { +object Movement{ /** - * Pretty fast at the beginning, getting slow over time. + * Fast at the beginning, getting slow over time. */ fun fastPullOut(scale: Float, start: Float = 0f, end: Float = 1f): Float = if (scale < 0f) start