keycap font, edit on Thai font, actor can now flagged to despawn, draft for projectile "actor"

Former-commit-id: 5a46366ac1680f040fe6e5ace742b71a86982efa
Former-commit-id: 30e481f10cc8c09d4fc4ff1f52a4a45d91e3ab2d
This commit is contained in:
Song Minjae
2016-08-31 01:05:35 +09:00
parent 720df532aa
commit 6e51b0c751
59 changed files with 288 additions and 117 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 280 B

After

Width:  |  Height:  |  Size: 16 KiB

View File

@@ -4,5 +4,6 @@
"COPYRIGHT_ALL_RIGHTS_RESERVED": "Всички права запазени", "COPYRIGHT_ALL_RIGHTS_RESERVED": "Всички права запазени",
"APP_ADJUST_YOUR_MONITOR": "", "APP_ADJUST_YOUR_MONITOR": "",
"APP_WARNING_HEALTH_AND_SAFETY": "ВНИМАНИЕ-ЗДРАВЕ И БЕЗОПАСНОСТ" "APP_WARNING_HEALTH_AND_SAFETY": "ВНИМАНИЕ-ЗДРАВЕ И БЕЗОПАСНОСТ",
"MENU_LABEL_PRESS_START_SYMBOL": "атисни >"
} }

View File

@@ -4,5 +4,6 @@
"COPYRIGHT_ALL_RIGHTS_RESERVED": "Všechna práva vyhrazena", "COPYRIGHT_ALL_RIGHTS_RESERVED": "Všechna práva vyhrazena",
"APP_ADJUST_YOUR_MONITOR": "", "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 >"
} }

View File

@@ -4,5 +4,6 @@
"COPYRIGHT_ALL_RIGHTS_RESERVED": "Alle rettigheder forbeholdes", "COPYRIGHT_ALL_RIGHTS_RESERVED": "Alle rettigheder forbeholdes",
"APP_ADJUST_YOUR_MONITOR": "", "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 >"
} }

View File

@@ -4,6 +4,7 @@
"COPYRIGHT_ALL_RIGHTS_RESERVED": "Alle Rechte vorbehalten.", "COPYRIGHT_ALL_RIGHTS_RESERVED": "Alle Rechte vorbehalten.",
"APP_ADJUST_YOUR_MONITOR": "", "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 >"
} }

View File

@@ -4,6 +4,7 @@
"COPYRIGHT_ALL_RIGHTS_RESERVED": "Όλα τα δικαιώματα διατηρούνται", "COPYRIGHT_ALL_RIGHTS_RESERVED": "Όλα τα δικαιώματα διατηρούνται",
"APP_ADJUST_YOUR_MONITOR": "", "APP_ADJUST_YOUR_MONITOR": "",
"APP_WARNING_HEALTH_AND_SAFETY": "ΠΡΟΣΟΧΗ-ΥΓΕΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ" "APP_WARNING_HEALTH_AND_SAFETY": "ΠΡΟΣΟΧΗ-ΥΓΕΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ",
"MENU_LABEL_PRESS_START_SYMBOL": "Πάτα >"
} }

View File

@@ -4,6 +4,7 @@
"COPYRIGHT_ALL_RIGHTS_RESERVED": "All rights reserved.", "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_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 >"
} }

View File

@@ -4,6 +4,6 @@
"COPYRIGHT_ALL_RIGHTS_RESERVED": "Todos los derechos reservados.", "COPYRIGHT_ALL_RIGHTS_RESERVED": "Todos los derechos reservados.",
"APP_ADJUST_YOUR_MONITOR": "", "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 >"
} }

View File

@@ -4,5 +4,6 @@
"COPYRIGHT_ALL_RIGHTS_RESERVED": "Kaikki oikeudet pidätetään", "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_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 >"
} }

View File

@@ -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!"
} }

View File

@@ -521,11 +521,11 @@
}, },
{ {
"n": "CONTEXT_MEDAL_GOLD", "n": "CONTEXT_MEDAL_GOLD",
"s": "Médaille dor" "s": "Médaille d'or"
}, },
{ {
"n": "CONTEXT_MEDAL_SILVER", "n": "CONTEXT_MEDAL_SILVER",
"s": "Médaille dargent" "s": "Médaille d'argent"
}, },
{ {
"n": "CONTEXT_METAL_BRONZE", "n": "CONTEXT_METAL_BRONZE",
@@ -609,7 +609,7 @@
}, },
{ {
"n": "CREDITS_ANIMATION_DIRECTOR", "n": "CREDITS_ANIMATION_DIRECTOR",
"s": "Directeur de lAnimation" "s": "Directeur de l'Animation"
}, },
{ {
"n": "CREDITS_ANIMATOR", "n": "CREDITS_ANIMATOR",
@@ -737,7 +737,7 @@
}, },
{ {
"n": "CREDITS_INTERFACE_ARTIST", "n": "CREDITS_INTERFACE_ARTIST",
"s": "Artiste dinterfaces" "s": "Artiste d'interfaces"
}, },
{ {
"n": "CREDITS_JUNIOR", "n": "CREDITS_JUNIOR",
@@ -905,7 +905,7 @@
}, },
{ {
"n": "ERROR_GENERIC_ERRCODE", "n": "ERROR_GENERIC_ERRCODE",
"s": "Code derreur :" "s": "Code d'erreur :"
}, },
{ {
"n": "ERROR_GENERIC_INVALID_KEY", "n": "ERROR_GENERIC_INVALID_KEY",
@@ -917,7 +917,7 @@
}, },
{ {
"n": "ERROR_GENERIC_TEXT", "n": "ERROR_GENERIC_TEXT",
"s": "Une erreur sest produite." "s": "Une erreur s'est produite."
}, },
{ {
"n": "ERROR_NETWORK_CONNECTION_LOST", "n": "ERROR_NETWORK_CONNECTION_LOST",
@@ -925,15 +925,15 @@
}, },
{ {
"n": "ERROR_NETWORK_DISCONNECTED_YOUR_OPPONENT", "n": "ERROR_NETWORK_DISCONNECTED_YOUR_OPPONENT",
"s": "Votre adversaire sest déconnecté." "s": "Votre adversaire s'est déconnecté."
}, },
{ {
"n": "ERROR_NETWORK_DISCONNECTED_YOUR_PLAYER", "n": "ERROR_NETWORK_DISCONNECTED_YOUR_PLAYER",
"s": "Lautre joueur sest déconnecté." "s": "L'autre joueur s'est déconnecté."
}, },
{ {
"n": "ERROR_NETWORK_DISCONNECTED_YOUR_TEAMMATE", "n": "ERROR_NETWORK_DISCONNECTED_YOUR_TEAMMATE",
"s": "Votre coéquipier sest déconnecté." "s": "Votre coéquipier s'est déconnecté."
}, },
{ {
"n": "ERROR_NETWORK_SERVER", "n": "ERROR_NETWORK_SERVER",
@@ -997,7 +997,7 @@
}, },
{ {
"n": "GAME_ACTION_CROUCH", "n": "GAME_ACTION_CROUCH",
"s": "Saccroupir" "s": "S'accroupir"
}, },
{ {
"n": "GAME_ACTION_DODGE", "n": "GAME_ACTION_DODGE",
@@ -1073,7 +1073,7 @@
}, },
{ {
"n": "GAME_ACTION_RUN_AWAY", "n": "GAME_ACTION_RUN_AWAY",
"s": "Senfuir" "s": "S'enfuir"
}, },
{ {
"n": "GAME_ACTION_SHOOT", "n": "GAME_ACTION_SHOOT",
@@ -1117,7 +1117,7 @@
}, },
{ {
"n": "GAME_CHARACTER_EXP", "n": "GAME_CHARACTER_EXP",
"s": "Points dexpérience" "s": "Points d'expérience"
}, },
{ {
"n": "GAME_CHARACTER_FEMALE", "n": "GAME_CHARACTER_FEMALE",
@@ -1181,7 +1181,7 @@
}, },
{ {
"n": "GAME_CHARACTER_SPAWN_POINT", "n": "GAME_CHARACTER_SPAWN_POINT",
"s": "Point dApparition" "s": "Point d'Apparition"
}, },
{ {
"n": "GAME_CHARACTER_TRANSGENDER", "n": "GAME_CHARACTER_TRANSGENDER",
@@ -1245,11 +1245,11 @@
}, },
{ {
"n": "GAME_GENRE_ACTION", "n": "GAME_GENRE_ACTION",
"s": "Jeu daction" "s": "Jeu d'action"
}, },
{ {
"n": "GAME_GENRE_ADVENTURE", "n": "GAME_GENRE_ADVENTURE",
"s": "Jeu daventure" "s": "Jeu d'aventure"
}, },
{ {
"n": "GAME_GENRE_CARD", "n": "GAME_GENRE_CARD",
@@ -1293,7 +1293,7 @@
}, },
{ {
"n": "GAME_GENRE_PUZZLE", "n": "GAME_GENRE_PUZZLE",
"s": "Jeu dénigmes" "s": "Jeu d'énigmes"
}, },
{ {
"n": "GAME_GENRE_QUIZ", "n": "GAME_GENRE_QUIZ",
@@ -1373,7 +1373,7 @@
}, },
{ {
"n": "GAME_INVENTORY_CAPACITY", "n": "GAME_INVENTORY_CAPACITY",
"s": "Capacité de linventaire" "s": "Capacité de l'inventaire"
}, },
{ {
"n": "GAME_INVENTORY_DROP", "n": "GAME_INVENTORY_DROP",
@@ -1425,7 +1425,7 @@
}, },
{ {
"n": "GAME_LABEL_PLEASE_BE_CAREFUL", "n": "GAME_LABEL_PLEASE_BE_CAREFUL",
"s": "Sil vous plaît soyez prudent." "s": "S'il vous plaît soyez prudent."
}, },
{ {
"n": "GAME_LABEL_TACTICS", "n": "GAME_LABEL_TACTICS",
@@ -1477,7 +1477,7 @@
}, },
{ {
"n": "GAME_OBJECTIVE_ESCAPE", "n": "GAME_OBJECTIVE_ESCAPE",
"s": "Séchapper" "s": "S'échapper"
}, },
{ {
"n": "GAME_OBJECTIVE_GAME_FINISHED", "n": "GAME_OBJECTIVE_GAME_FINISHED",
@@ -2025,7 +2025,7 @@
}, },
{ {
"n": "MENU_LABEL_GALLERY", "n": "MENU_LABEL_GALLERY",
"s": "Galerie dart" "s": "Galerie d'art"
}, },
{ {
"n": "MENU_LABEL_GOODBYE", "n": "MENU_LABEL_GOODBYE",
@@ -2257,7 +2257,7 @@
}, },
{ {
"n": "MENU_LOGIN_REGISTER", "n": "MENU_LOGIN_REGISTER",
"s": "Sinscrire" "s": "S'inscrire"
}, },
{ {
"n": "MENU_LOGIN_REMEMBER", "n": "MENU_LOGIN_REMEMBER",
@@ -2337,7 +2337,7 @@
}, },
{ {
"n": "MENU_NAME_USER", "n": "MENU_NAME_USER",
"s": "Nom dutilisateur" "s": "Nom d'utilisateur"
}, },
{ {
"n": "MENU_OPTIONS", "n": "MENU_OPTIONS",
@@ -2557,7 +2557,7 @@
}, },
{ {
"n": "MENU_VR_HMD_ORIENT_RESET", "n": "MENU_VR_HMD_ORIENT_RESET",
"s": "Restaurer lorientation du HDM" "s": "Restaurer l'orientation du HDM"
}, },
{ {
"n": "MENU_VR_VIRTUAL_REALITY", "n": "MENU_VR_VIRTUAL_REALITY",

View File

@@ -1,15 +1,15 @@
{ {
"MENU_MONITOR_CALI_TITLE": "Vérification décran", "MENU_MONITOR_CALI_TITLE": "Vérification d'écran",
"MENU_MONITOR_CALI_LABEL_1": "Vous devriez être capable de voir la barre 1 de larrière-plan", "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_2": "et distinguer clairement la barre 30, 31 et 32",
"MENU_MONITOR_CALI_LABEL_3": " ", "MENU_MONITOR_CALI_LABEL_3": " ",
"MENU_MONITOR_CALI_LABEL_4": "Un mauvais écran ne sera pas afficher quelques barres de lextrê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_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_6": "ou montre un assez grand saut entre barre 31 et 32",
"MENU_MONITOR_CALI_LABEL_7": " ", "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_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_9": "luminosité sur toute la plate 1 à 32",
"MENU_MONITOR_CALI_LABEL_10": " ", "MENU_MONITOR_CALI_LABEL_10": " ",
"MENU_MONITOR_CALI_LABEL_11": "Régler le contraste et luminosité de votre écran pour améliorer limage", "MENU_MONITOR_CALI_LABEL_11": "Régler le contraste et luminosité de votre écran pour améliorer l'image",
"MENU_MONITOR_CALI_LABEL_12": " " "MENU_MONITOR_CALI_LABEL_12": " "
} }

View File

@@ -4,6 +4,6 @@
"COPYRIGHT_ALL_RIGHTS_RESERVED": "Tous les droits sont réservés.", "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_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 >"
} }

View File

@@ -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 !"
} }

View File

@@ -4,6 +4,7 @@
"COPYRIGHT_ALL_RIGHTS_RESERVED": "Minden jog fenntartva", "COPYRIGHT_ALL_RIGHTS_RESERVED": "Minden jog fenntartva",
"APP_ADJUST_YOUR_MONITOR": "", "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"
} }

View File

@@ -2115,11 +2115,11 @@
}, },
{ {
"n": "MENU_LABEL_PRESS_START", "n": "MENU_LABEL_PRESS_START",
"s": "Ýttu Start" "s": "Ýttu Start"
}, },
{ {
"n": "MENU_LABEL_PRESS_START_CONTINUE", "n": "MENU_LABEL_PRESS_START_CONTINUE",
"s": "Ýttu Start til að halda áfram" "s": "Ýttu Start til að halda áfram"
}, },
{ {
"n": "MENU_LABEL_PREVIOUS", "n": "MENU_LABEL_PREVIOUS",

View File

@@ -4,6 +4,7 @@
"COPYRIGHT_ALL_RIGHTS_RESERVED": "Öll réttindi áskilinn.", "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_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 >"
} }

View File

@@ -325,7 +325,7 @@
}, },
{ {
"n": "CONTEXT_ITEM_GAUNTLETS", "n": "CONTEXT_ITEM_GAUNTLETS",
"s": "Guanti darmatura" "s": "Guanti d'armatura"
}, },
{ {
"n": "CONTEXT_ITEM_GEM", "n": "CONTEXT_ITEM_GEM",
@@ -521,11 +521,11 @@
}, },
{ {
"n": "CONTEXT_MEDAL_GOLD", "n": "CONTEXT_MEDAL_GOLD",
"s": "Medaglia doro" "s": "Medaglia d'oro"
}, },
{ {
"n": "CONTEXT_MEDAL_SILVER", "n": "CONTEXT_MEDAL_SILVER",
"s": "Medaglia dargento" "s": "Medaglia d'argento"
}, },
{ {
"n": "CONTEXT_METAL_BRONZE", "n": "CONTEXT_METAL_BRONZE",
@@ -609,7 +609,7 @@
}, },
{ {
"n": "CREDITS_ANIMATION_DIRECTOR", "n": "CREDITS_ANIMATION_DIRECTOR",
"s": "Direttore dellanimazione" "s": "Direttore dell'animazione"
}, },
{ {
"n": "CREDITS_ANIMATOR", "n": "CREDITS_ANIMATOR",
@@ -737,7 +737,7 @@
}, },
{ {
"n": "CREDITS_INTERFACE_ARTIST", "n": "CREDITS_INTERFACE_ARTIST",
"s": "Artista per linterfaccia" "s": "Artista per l'interfaccia"
}, },
{ {
"n": "CREDITS_JUNIOR", "n": "CREDITS_JUNIOR",
@@ -929,7 +929,7 @@
}, },
{ {
"n": "ERROR_NETWORK_DISCONNECTED_YOUR_PLAYER", "n": "ERROR_NETWORK_DISCONNECTED_YOUR_PLAYER",
"s": "Laltro giocatore si è disconnesso." "s": "L'altro giocatore si è disconnesso."
}, },
{ {
"n": "ERROR_NETWORK_DISCONNECTED_YOUR_TEAMMATE", "n": "ERROR_NETWORK_DISCONNECTED_YOUR_TEAMMATE",
@@ -1245,11 +1245,11 @@
}, },
{ {
"n": "GAME_GENRE_ACTION", "n": "GAME_GENRE_ACTION",
"s": "Gioco dazione" "s": "Gioco d'azione"
}, },
{ {
"n": "GAME_GENRE_ADVENTURE", "n": "GAME_GENRE_ADVENTURE",
"s": "Gioco davventura" "s": "Gioco d'avventura"
}, },
{ {
"n": "GAME_GENRE_CARD", "n": "GAME_GENRE_CARD",
@@ -1373,7 +1373,7 @@
}, },
{ {
"n": "GAME_INVENTORY_CAPACITY", "n": "GAME_INVENTORY_CAPACITY",
"s": "Capacità dell inventario" "s": "Capacità dell' inventario"
}, },
{ {
"n": "GAME_INVENTORY_DROP", "n": "GAME_INVENTORY_DROP",
@@ -2025,7 +2025,7 @@
}, },
{ {
"n": "MENU_LABEL_GALLERY", "n": "MENU_LABEL_GALLERY",
"s": "Galleria darte" "s": "Galleria d'arte"
}, },
{ {
"n": "MENU_LABEL_GOODBYE", "n": "MENU_LABEL_GOODBYE",

View File

@@ -4,6 +4,7 @@
"COPYRIGHT_ALL_RIGHTS_RESERVED": "Tutti i diritti riservati.", "COPYRIGHT_ALL_RIGHTS_RESERVED": "Tutti i diritti riservati.",
"APP_ADJUST_YOUR_MONITOR": "", "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 >"
} }

View File

@@ -4,6 +4,7 @@
"COPYRIGHT_ALL_RIGHTS_RESERVED": "全著作権所有。", "COPYRIGHT_ALL_RIGHTS_RESERVED": "全著作権所有。",
"APP_ADJUST_YOUR_MONITOR": "このゲームは、適切に調整したモニターから最高のプレイができます。調整していなかったら、プレイする前に調整してください。", "APP_ADJUST_YOUR_MONITOR": "このゲームは、適切に調整したモニターから最高のプレイができます。調整していなかったら、プレイする前に調整してください。",
"APP_WARNING_HEALTH_AND_SAFETY": "警告ー健康と安全のために" "APP_WARNING_HEALTH_AND_SAFETY": "警告ー健康と安全のために",
"MENU_LABEL_PRESS_START_SYMBOL": "> ボタンを押す"
} }

View File

@@ -1,3 +1,3 @@
{ {
"GAME_TIPS_1": "武器を「振り回す」の時に、敵より上に立っていれば、もう強くな攻撃ができます。だが注意せよーそれは敵も同じでしょう!" "GAME_TIPS_1": "武器を「振り回す」の時に、敵より上に立っていれば、もう強くな攻撃が入ります。だが注意せよーそれは敵も同じでしょう!"
} }

View File

@@ -2113,19 +2113,19 @@
}, },
{ {
"n": "MENU_LABEL_PRESS_ANYKEY", "n": "MENU_LABEL_PRESS_ANYKEY",
"s": "いずれかのキーをす" "s": "いずれかのキーをす"
}, },
{ {
"n": "MENU_LABEL_PRESS_ANYKEY_CONTINUE", "n": "MENU_LABEL_PRESS_ANYKEY_CONTINUE",
"s": "けるにはいずれかのキーをす" "s": "つづけるには いずれかのキーをす"
}, },
{ {
"n": "MENU_LABEL_PRESS_START", "n": "MENU_LABEL_PRESS_START",
"s": "STARTボタンをす" "s": "STARTボタンをす"
}, },
{ {
"n": "MENU_LABEL_PRESS_START_CONTINUE", "n": "MENU_LABEL_PRESS_START_CONTINUE",
"s": "けるにはSTARTボタンをす" "s": "つづけるには STARTボタンをす"
}, },
{ {
"n": "MENU_LABEL_PREVIOUS", "n": "MENU_LABEL_PREVIOUS",

View File

@@ -4,6 +4,7 @@
"COPYRIGHT_ALL_RIGHTS_RESERVED": "ぜんちょさくけん しょゆう。", "COPYRIGHT_ALL_RIGHTS_RESERVED": "ぜんちょさくけん しょゆう。",
"APP_ADJUST_YOUR_MONITOR": "このゲームは、てきせつにちょうせいした モニターから さいこうのプレイができます。ちょうせいして いなかったら、プレイするまえに ちょうせいしてください。", "APP_ADJUST_YOUR_MONITOR": "このゲームは、てきせつにちょうせいした モニターから さいこうのプレイができます。ちょうせいして いなかったら、プレイするまえに ちょうせいしてください。",
"APP_WARNING_HEALTH_AND_SAFETY": "けいこくーけんこうと あんぜんの ために" "APP_WARNING_HEALTH_AND_SAFETY": "けいこくーけんこうと あんぜんの ために",
"MENU_LABEL_PRESS_START_SYMBOL": "> ボタンを おす"
} }

View File

@@ -4,6 +4,7 @@
"COPYRIGHT_ALL_RIGHTS_RESERVED": "모든 권리 보유.", "COPYRIGHT_ALL_RIGHTS_RESERVED": "모든 권리 보유.",
"APP_ADJUST_YOUR_MONITOR": "본 게임은 적절히 조정된 모니터에서 최상으로 즐길 수 있습니다. 조정하지 않았다면 플레이하기 전에 조정해 주십시오.", "APP_ADJUST_YOUR_MONITOR": "본 게임은 적절히 조정된 모니터에서 최상으로 즐길 수 있습니다. 조정하지 않았다면 플레이하기 전에 조정해 주십시오.",
"APP_WARNING_HEALTH_AND_SAFETY": "경고—건강과 안전을 위하여" "APP_WARNING_HEALTH_AND_SAFETY": "경고—건강과 안전을 위하여",
"MENU_LABEL_PRESS_START_SYMBOL": ">을 누르세요"
} }

View File

@@ -4,6 +4,7 @@
"COPYRIGHT_ALL_RIGHTS_RESERVED": "Alle rechten voorbehouden", "COPYRIGHT_ALL_RIGHTS_RESERVED": "Alle rechten voorbehouden",
"APP_ADJUST_YOUR_MONITOR": "", "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 >"
} }

View File

@@ -4,6 +4,7 @@
"COPYRIGHT_ALL_RIGHTS_RESERVED": "Alle rettigheter reservert", "COPYRIGHT_ALL_RIGHTS_RESERVED": "Alle rettigheter reservert",
"APP_ADJUST_YOUR_MONITOR": "", "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 >"
} }

View File

@@ -4,6 +4,7 @@
"COPYRIGHT_ALL_RIGHTS_RESERVED": "Wszelkie prawa zastrzeżone", "COPYRIGHT_ALL_RIGHTS_RESERVED": "Wszelkie prawa zastrzeżone",
"APP_ADJUST_YOUR_MONITOR": "", "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 >"
} }

View File

@@ -4,6 +4,7 @@
"COPYRIGHT_ALL_RIGHTS_RESERVED": "Todos os direitos reservados", "COPYRIGHT_ALL_RIGHTS_RESERVED": "Todos os direitos reservados",
"APP_ADJUST_YOUR_MONITOR": "", "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 >"
} }

View File

@@ -4,6 +4,7 @@
"COPYRIGHT_ALL_RIGHTS_RESERVED": "Todos os direitos reservados", "COPYRIGHT_ALL_RIGHTS_RESERVED": "Todos os direitos reservados",
"APP_ADJUST_YOUR_MONITOR": "", "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 >"
} }

View File

@@ -4,6 +4,7 @@
"COPYRIGHT_ALL_RIGHTS_RESERVED": "Toate drepturile rezervate", "COPYRIGHT_ALL_RIGHTS_RESERVED": "Toate drepturile rezervate",
"APP_ADJUST_YOUR_MONITOR": "", "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ă >"
} }

View File

@@ -4,6 +4,7 @@
"COPYRIGHT_ALL_RIGHTS_RESERVED": "Все права защищены", "COPYRIGHT_ALL_RIGHTS_RESERVED": "Все права защищены",
"APP_ADJUST_YOUR_MONITOR": "", "APP_ADJUST_YOUR_MONITOR": "",
"APP_WARNING_HEALTH_AND_SAFETY": "ПРЕДУПРЕЖДЕНИЕ-ЗДОРОВЬЕ И БЕЗОПАСНОСТЬ" "APP_WARNING_HEALTH_AND_SAFETY": "ПРЕДУПРЕЖДЕНИЕ-ЗДОРОВЬЕ И БЕЗОПАСНОСТЬ",
"MENU_LABEL_PRESS_START_SYMBOL": "Нажмите >"
} }

View File

@@ -4,6 +4,7 @@
"COPYRIGHT_ALL_RIGHTS_RESERVED": "Alla rättigheter förbehållna", "COPYRIGHT_ALL_RIGHTS_RESERVED": "Alla rättigheter förbehållna",
"APP_ADJUST_YOUR_MONITOR": "", "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 >"
} }

View File

@@ -4,6 +4,7 @@
"COPYRIGHT_ALL_RIGHTS_RESERVED": "สงวนลิขสิทธิ์", "COPYRIGHT_ALL_RIGHTS_RESERVED": "สงวนลิขสิทธิ์",
"APP_ADJUST_YOUR_MONITOR": "", "APP_ADJUST_YOUR_MONITOR": "",
"APP_WARNING_HEALTH_AND_SAFETY": "คำเตือน-อนามัยและความปลอดภัย" "APP_WARNING_HEALTH_AND_SAFETY": "คำเตือน-อนามัยและความปลอดภัย",
"MENU_LABEL_PRESS_START_SYMBOL": "กดปุ่ม >"
} }

View File

@@ -4,6 +4,7 @@
"COPYRIGHT_ALL_RIGHTS_RESERVED": "Her hakkı saklıdır", "COPYRIGHT_ALL_RIGHTS_RESERVED": "Her hakkı saklıdır",
"APP_ADJUST_YOUR_MONITOR": "", "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"
} }

View File

@@ -4,6 +4,7 @@
"COPYRIGHT_ALL_RIGHTS_RESERVED": "版权所有", "COPYRIGHT_ALL_RIGHTS_RESERVED": "版权所有",
"APP_ADJUST_YOUR_MONITOR": "", "APP_ADJUST_YOUR_MONITOR": "",
"APP_WARNING_HEALTH_AND_SAFETY": "警告ー健康和安全" "APP_WARNING_HEALTH_AND_SAFETY": "警告ー健康和安全",
"MENU_LABEL_PRESS_START_SYMBOL": "按下 >"
} }

View File

@@ -4,6 +4,7 @@
"COPYRIGHT_ALL_RIGHTS_RESERVED": "版權所有", "COPYRIGHT_ALL_RIGHTS_RESERVED": "版權所有",
"APP_ADJUST_YOUR_MONITOR": "", "APP_ADJUST_YOUR_MONITOR": "",
"APP_WARNING_HEALTH_AND_SAFETY": "警告ー健康和安全" "APP_WARNING_HEALTH_AND_SAFETY": "警告ー健康和安全",
"MENU_LABEL_PRESS_START_SYMBOL": "按下 >"
} }

View File

@@ -78,6 +78,7 @@ constructor() : Font {
|| (c.toInt() >= 0xE47 && c.toInt() <= 0xE4E) || (c.toInt() >= 0xE47 && c.toInt() <= 0xE4E)
|| (c.toInt() == 0xE31) || (c.toInt() == 0xE31)
private fun isThaiEF(c: Char) = c.toInt() == 0xE40 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 thaiEFIndexX(c: Char) = 3
private fun thaiEFIndexY(c: Char) = 0 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( private val narrowWidthSheets = arrayOf(
SHEET_ASCII_EF, SHEET_ASCII_EF,
SHEET_EXTA_EF, SHEET_EXTA_EF,
@@ -193,6 +197,8 @@ constructor() : Font {
len += W_UNIHAN len += W_UNIHAN
else if (isThaiDiacritics(s[i])) else if (isThaiDiacritics(s[i]))
len += 0 // set width of the glyph as -W_LATIN_WIDE len += 0 // set width of the glyph as -W_LATIN_WIDE
else if (ctype == SHEET_KEYCAP)
len += SIZE_KEYCAP
else else
len += W_LATIN_WIDE len += W_LATIN_WIDE
@@ -435,6 +441,10 @@ constructor() : Font {
sheetX = thaiIndexX(ch) sheetX = thaiIndexX(ch)
sheetY = thaiIndexY(ch) sheetY = thaiIndexY(ch)
} }
SHEET_KEYCAP -> {
sheetX = keycapIndexX(ch)
sheetY = keycapIndexY(ch)
}
else -> { else -> {
sheetX = ch.toInt() % 16 sheetX = ch.toInt() % 16
sheetY = ch.toInt() / 16 sheetY = ch.toInt() / 16
@@ -455,9 +465,9 @@ constructor() : Font {
Math.round(x + getWidthSubstr(s, i + 1) - glyphW).toFloat(), Math.round(x + getWidthSubstr(s, i + 1) - glyphW).toFloat(),
// to deal with the height difference of the sheets // to deal with the height difference of the sheets
Math.round(y).toFloat() + (if (prevInstance == SHEET_CJK_PUNCT) -1 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_FW_UNI) (H - H_HANGUL) / 2 else if (prevInstance == SHEET_KEYCAP) (H - SIZE_KEYCAP) / 2 // completely legit height adjustment
else 0).toFloat(), else 0).toFloat(),
scale.toFloat(), thisCol scale.toFloat(), thisCol
@@ -522,6 +532,8 @@ constructor() : Font {
return SHEET_THAI_EM return SHEET_THAI_EM
else if (c.isColourCode()) else if (c.isColourCode())
return SHEET_COLOURCODE return SHEET_COLOURCODE
else if (isKeycap(c))
return SHEET_KEYCAP
else else
return SHEET_ASCII_EM// fixed width punctuations return SHEET_ASCII_EM// fixed width punctuations
// fixed width // fixed width
@@ -584,6 +596,7 @@ constructor() : Font {
lateinit internal var romanianSheet: SpriteSheet lateinit internal var romanianSheet: SpriteSheet
lateinit internal var romanianSheetEF: SpriteSheet lateinit internal var romanianSheetEF: SpriteSheet
lateinit internal var thaiSheet: SpriteSheet lateinit internal var thaiSheet: SpriteSheet
lateinit internal var keycapSheet: SpriteSheet
internal val JUNG_COUNT = 21 internal val JUNG_COUNT = 21
internal val JONG_COUNT = 28 internal val JONG_COUNT = 28
@@ -600,6 +613,8 @@ constructor() : Font {
internal val H_UNIHAN = 16 internal val H_UNIHAN = 16
internal val H_KANA = 20 internal val H_KANA = 20
internal val SIZE_KEYCAP = 18
internal val SHEET_ASCII_EM = 0 internal val SHEET_ASCII_EM = 0
internal val SHEET_ASCII_EF = 1 internal val SHEET_ASCII_EF = 1
internal val SHEET_HANGUL = 2 internal val SHEET_HANGUL = 2
@@ -621,6 +636,7 @@ constructor() : Font {
internal val SHEET_EXTB_ROMANIAN_EF = 18 internal val SHEET_EXTB_ROMANIAN_EF = 18
internal val SHEET_THAI_EM = 19 internal val SHEET_THAI_EM = 19
internal val SHEET_THAI_EF = 20 internal val SHEET_THAI_EF = 20
internal val SHEET_KEYCAP = 21
internal val SHEET_COLOURCODE = 255 internal val SHEET_COLOURCODE = 255
lateinit internal var sheetKey: Array<SpriteSheet?> lateinit internal var sheetKey: Array<SpriteSheet?>

View File

@@ -56,6 +56,8 @@ constructor() : GameFontBase() {
"./assets/graphics/fonts/romana_ef.png", GameFontBase.W_LATIN_NARROW, GameFontBase.H) "./assets/graphics/fonts/romana_ef.png", GameFontBase.W_LATIN_NARROW, GameFontBase.H)
GameFontBase.thaiSheet = SpriteSheet( GameFontBase.thaiSheet = SpriteSheet(
"./assets/graphics/fonts/thai_fullwidth.png", GameFontBase.W_LATIN_WIDE, GameFontBase.H) "./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( val shk = arrayOf(
GameFontBase.asciiSheet, GameFontBase.asciiSheet,
@@ -78,7 +80,8 @@ constructor() : GameFontBase() {
GameFontBase.romanianSheet, GameFontBase.romanianSheet,
GameFontBase.romanianSheetEF, GameFontBase.romanianSheetEF,
GameFontBase.thaiSheet, GameFontBase.thaiSheet,
null // Filler null, // Filler
GameFontBase.keycapSheet
) )
GameFontBase.sheetKey = shk GameFontBase.sheetKey = shk
} }

View File

@@ -1,5 +1,8 @@
package net.torvald.serialise package net.torvald.serialise
import java.io.IOException
import java.io.InputStream
/** /**
* Created by minjaesong on 16-08-24. * Created by minjaesong on 16-08-24.
*/ */

View File

@@ -18,6 +18,8 @@ object DefaultConfig {
jsonObject.addProperty("notificationshowuptime", 6500) jsonObject.addProperty("notificationshowuptime", 6500)
jsonObject.addProperty("multithread", true) // experimental! jsonObject.addProperty("multithread", true) // experimental!
// control-gamepad // control-gamepad
jsonObject.addProperty("joypadkeyn", 4) jsonObject.addProperty("joypadkeyn", 4)
jsonObject.addProperty("joypadkeyw", 1) jsonObject.addProperty("joypadkeyw", 1)
@@ -34,6 +36,10 @@ object DefaultConfig {
jsonObject.addProperty("joypadrstickx", 2) jsonObject.addProperty("joypadrstickx", 2)
jsonObject.addProperty("joypadrsticky", 3) // logitech indices 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) // control-keyboard (Java key codes. This is what Minecraft also uses)
jsonObject.addProperty("keyup", Key.E) jsonObject.addProperty("keyup", Key.E)
jsonObject.addProperty("keyleft", Key.S) jsonObject.addProperty("keyleft", Key.S)

View File

@@ -32,3 +32,9 @@ 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). *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. 'A' just above of Middle C (A3) has base pitch of 440 Hz.
*speed: in BPM *speed: in BPM
## Aimhack ##
- Include a valid way of obtaining Aimhack (possessed weapon shit?)
- Implement it on ```<item>.primaryUse(gc, delta)```

View File

@@ -227,8 +227,8 @@ constructor() : BasicGameState() {
private fun setAppTitle() { private fun setAppTitle() {
Terrarum.appgc.setTitle( Terrarum.appgc.setTitle(
"Simple Slick Game" + "Simple Slick Game" +
" — FPS: ${Terrarum.appgc.fps} (${Terrarum.TARGET_INTERNAL_FPS})" + " — F: ${Terrarum.appgc.fps} (${Terrarum.TARGET_INTERNAL_FPS})" +
"${memInUse}M / ${totalVMMem}M") " M: ${memInUse}M / ${totalVMMem}M")
} }
override fun render(gc: GameContainer, sbg: StateBasedGame, g: Graphics) { override fun render(gc: GameContainer, sbg: StateBasedGame, g: Graphics) {
@@ -431,7 +431,10 @@ constructor() : BasicGameState() {
val actor = actorContainer[i] val actor = actorContainer[i]
val actorIndex = i val actorIndex = i
if (actor is Visible && !actor.inUpdateRange()) { 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) actorContainer.removeAt(actorIndex)
actorContainerSize -= 1 actorContainerSize -= 1
i-- // array removed 1 elem, so we also decrement counter by 1 i-- // array removed 1 elem, so we also decrement counter by 1

View File

@@ -41,12 +41,7 @@ class StateMonitorCheck : BasicGameState() {
private val backgroundCol = Color(0x404040) private val backgroundCol = Color(0x404040)
private val colourLUT = arrayOf( private val colourLUT = IntArray(32, { 255.times(it + 1).div(32) })
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
)
val pictograms = ArrayList<Image>() val pictograms = ArrayList<Image>()
lateinit var imageGallery: ItemImageGallery lateinit var imageGallery: ItemImageGallery
@@ -147,7 +142,7 @@ class StateMonitorCheck : BasicGameState() {
// anykey // anykey
Typography.printCentered( Typography.printCentered(
g, Lang["MENU_LABEL_PRESS_ANYKEY_CONTINUE"], g, Lang["MENU_LABEL_PRESS_ANYKEY"],
anykeyY, anykeyY,
this this
) )

View File

@@ -32,7 +32,7 @@ class StateSplash : BasicGameState() {
var opacity = 0f var opacity = 0f
val fadeTime = 500 val fadeTime = 500
var fadeTimer = 0 var fadeTimer = -1
var anykey_hit = false var anykey_hit = false
@@ -67,13 +67,14 @@ class StateSplash : BasicGameState() {
override fun update(container: GameContainer, game: StateBasedGame, delta: Int) { override fun update(container: GameContainer, game: StateBasedGame, delta: Int) {
// next splash or load next scene // next splash or load next scene
if (anykey_hit && opened) { if (anykey_hit && opacity < 0.0001f) {
game.enterState(Terrarum.STATE_ID_GAME) game.enterState(Terrarum.STATE_ID_GAME)
} }
// fade-in // fade-in
if (delta < deltathre) { if (delta < deltathre) {
init = true init = true
fadeTimer += delta
if (opacity < 1f && !anykey_hit) { if (opacity < 1f && !anykey_hit) {
opacity = FastMath.interpolateLinear( opacity = FastMath.interpolateLinear(
@@ -93,11 +94,9 @@ class StateSplash : BasicGameState() {
} }
// auto dismiss // auto dismiss
if (opened && fadeTimer >= auto_dismiss) if (opened && fadeTimer >= auto_dismiss) {
//doAnykeyThingy() doAnykeyThingy()
}
fadeTimer += delta
println(fadeTimer)
} }
override fun getID(): Int = Terrarum.STATE_ID_SPLASH override fun getID(): Int = Terrarum.STATE_ID_SPLASH
@@ -111,7 +110,7 @@ class StateSplash : BasicGameState() {
Typography.printCentered(thisG, Lang["APP_WARNING_HEALTH_AND_SAFETY"], Typography.printCentered(thisG, Lang["APP_WARNING_HEALTH_AND_SAFETY"],
thisG.font.lineHeight * 2) 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)) Terrarum.HEIGHT - thisG.font.lineHeight.times(3))
imageGallery.render(container, thisG) imageGallery.render(container, thisG)
@@ -119,13 +118,6 @@ class StateSplash : BasicGameState() {
g.drawImage(fadeSheet, 0f, 0f, Color(1f, 1f, 1f, opacity)) 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) { override fun keyPressed(key: Int, c: Char) {
doAnykeyThingy() doAnykeyThingy()
} }

View File

@@ -34,6 +34,21 @@ constructor(gamename: String) : StateBasedGame(gamename) {
gameConfig = GameConfig() 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() getDefaultDirectory()
createDirs() createDirs()
@@ -69,6 +84,11 @@ constructor(gamename: String) : StateBasedGame(gamename) {
fontGame = GameFontWhite() fontGame = GameFontWhite()
fontSmallNumbers = TinyAlphNum() 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 hasController = gc.input.controllerCount > 0
if (hasController) { if (hasController) {
@@ -133,7 +153,7 @@ constructor(gamename: String) : StateBasedGame(gamename) {
lateinit var environment: RunningEnvironment lateinit var environment: RunningEnvironment
private val localeSimple = arrayOf("de", "en", "es", "it") private val localeSimple = arrayOf("de", "en", "es", "it")
var gameLocale = "####" // locale override var gameLocale = "####" // lateinit placeholder
set(value) { set(value) {
if (localeSimple.contains(value.substring(0..1))) if (localeSimple.contains(value.substring(0..1)))
field = value.substring(0..1) field = value.substring(0..1)
@@ -145,6 +165,23 @@ constructor(gamename: String) : StateBasedGame(gamename) {
private set private set
lateinit var fontSmallNumbers: Font lateinit var fontSmallNumbers: Font
private set 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 // 0x0 - 0xF: Game-related
// 0x10 - 0x1F: Config // 0x10 - 0x1F: Config

View File

@@ -17,8 +17,8 @@ abstract class Actor : Comparable<Actor>, Runnable {
* @return Reference ID. (32768-0x7FFF_FFFF) * @return Reference ID. (32768-0x7FFF_FFFF)
*/ */
abstract var referenceID: Int abstract var referenceID: Int
abstract var actorValue: ActorValue abstract var actorValue: ActorValue
abstract var flagDespawn: Boolean
override fun equals(other: Any?) = referenceID == (other as Actor).referenceID override fun equals(other: Any?) = referenceID == (other as Actor).referenceID
override fun hashCode() = referenceID override fun hashCode() = referenceID

View File

@@ -127,7 +127,9 @@ open class ActorWithBody : Actor(), Visible {
* Flags and Properties * Flags and Properties
*/ */
var grounded = false var grounded = false
override var flagDespawn = false
/** Default to 'false' */ /** Default to 'false' */
var isVisible = false var isVisible = false
/** Default to 'true' */ /** Default to 'true' */
@@ -269,7 +271,7 @@ open class ActorWithBody : Actor(), Visible {
} }
override fun update(gc: GameContainer, delta: Int) { override fun update(gc: GameContainer, delta: Int) {
if (isUpdate) { if (isUpdate && !flagDespawn) {
/** /**
* Temporary variables to reset * Temporary variables to reset

View File

@@ -13,7 +13,7 @@ object PBCynthia {
CreatureRawInjector.inject(p.actorValue, "CreatureHuman.json") CreatureRawInjector.inject(p.actorValue, "CreatureHuman.json")
p.actorValue[AVKey._PLAYER_QUICKBARSEL] = 0 p.actorValue[AVKey._PLAYER_QUICKBARSEL] = 0
p.actorValue["selectedtile"] = 16 p.actorValue["__selectedtile"] = 16
p.sprite = SpriteAnimation() p.sprite = SpriteAnimation()

View File

@@ -58,7 +58,8 @@ object PBSigrid {
p.actorValue[AVKey.BASEDEFENCE] = 141 p.actorValue[AVKey.BASEDEFENCE] = 141
p.actorValue["selectedtile"] = 16 p.actorValue["__selectedtile"] = 16 // test code; replace with <tile_item>.primaryUse(gc, delta)
p.actorValue["__aimhelper"] = true
p.setHitboxDimension(15, p.actorValue.getAsInt(AVKey.BASEHEIGHT)!!, 10, 0) p.setHitboxDimension(15, p.actorValue.getAsInt(AVKey.BASEHEIGHT)!!, 10, 0)

View File

@@ -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) {
}

View File

@@ -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<Hitbox>()
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))
// ...
)
}
}

View File

@@ -52,7 +52,10 @@ object GameController {
else if (input.isMouseButtonDown(Input.MOUSE_RIGHT_BUTTON)) { else if (input.isMouseButtonDown(Input.MOUSE_RIGHT_BUTTON)) {
// test tile place // test tile place
try { 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) { catch (e: ArrayIndexOutOfBoundsException) {
} }

View File

@@ -113,9 +113,15 @@ object Lang {
operator fun get(key: String): String { operator fun get(key: String): String {
fun fallback(): String = langpack["${key}_$FALLBACK_LANG_CODE"] ?: "ERRNULL:$key" 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 { fun pluraliseLang(key: String, count: Int): String {

View File

@@ -16,8 +16,7 @@ class ItemImageGallery(
val width: Int, val width: Int,
val height: Int, val height: Int,
val imageList: ArrayList<Image>, val imageList: ArrayList<Image>,
val column: Int = 1 val column: Int = 1) : UIItem {
) : UIItem {
override fun update(gc: GameContainer, delta: Int) { override fun update(gc: GameContainer, delta: Int) {
} }

View File

@@ -5,9 +5,9 @@ import com.jme3.math.FastMath
/** /**
* Created by minjaesong on 16-03-22. * 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 = fun fastPullOut(scale: Float, start: Float = 0f, end: Float = 1f): Float =
if (scale < 0f) start if (scale < 0f) start