mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-03-07 20:31:51 +09:00
better defined Hangul Johab font, correction on FloatingIslands to utilise new 4096 tiles, multiple type beach (white, black, green), ACHTUNG! ActorWithBody has temporal debugger! (sout), former HSV is now HSVUtil, new HSV for HSV dimension, HSVUtil.toRGB and HSVUtil.fromRGB, more jakanaJP and isIC in polyglot.csv
Former-commit-id: e8cd234d1140d623ba7ab551d3429fc4a453b5c1 Former-commit-id: e11bc93da0d37e385e375fbb0086cf7dbb3a5454
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,4 +1,4 @@
|
||||
"id";"dmg";"name" ;"opacity";"strength";"spcg";"fluid";"movr";"solid";"wall";"lumcolor";"drop";"ddmg";"fall";"friction"
|
||||
"id";"dmg";"name" ;"opacity";"strength";"dsty";"fluid";"movr";"solid";"wall";"lumcolor";"drop";"ddmg";"fall";"friction"
|
||||
"0"; "0";"TILE_AIR" ; "1641"; "0"; "1"; "0"; "0"; "0"; "0"; "0"; "0"; "0"; "0";"16"
|
||||
"1"; "0";"TILE_STONE" ; "8205"; "25";"2400"; "0"; "0"; "1"; "1"; "0"; "1"; "0"; "0";"16"
|
||||
"1"; "1";"TILE_STONE_QUARRIED" ; "8205"; "25";"2400"; "0"; "0"; "1"; "1"; "0"; "1"; "1"; "0";"16"
|
||||
@@ -12,11 +12,12 @@
|
||||
"4"; "1";"TILE_TRUNK_EBONY" ; "8205"; "12";"1200"; "0"; "0"; "1"; "0"; "0"; "3"; "1"; "0";"16"
|
||||
"4"; "2";"TILE_TRUNK_BIRCH" ; "8205"; "12"; "670"; "0"; "0"; "1"; "0"; "0"; "3"; "2"; "0";"16"
|
||||
"4"; "3";"TILE_TRUNK_BLOODROSE" ; "8205"; "12"; "900"; "0"; "0"; "1"; "0"; "0"; "3"; "3"; "0";"16"
|
||||
"5"; "0";"TILE_SAND" ; "8205"; "6";"2400"; "0"; "0"; "1"; "1"; "0"; "5"; "0"; "1";"16"
|
||||
"5"; "1";"TILE_SAND_WHITE" ; "8205"; "6";"2400"; "0"; "0"; "1"; "1"; "0"; "5"; "1"; "1";"16"
|
||||
"5"; "2";"TILE_SAND_RED" ; "8205"; "6";"2400"; "0"; "0"; "1"; "1"; "0"; "5"; "2"; "1";"16"
|
||||
"5"; "3";"TILE_SAND_DESERT" ; "8205"; "6";"2400"; "0"; "0"; "1"; "1"; "0"; "5"; "3"; "1";"16"
|
||||
"5"; "4";"TILE_SAND_BLACK" ; "8205"; "6";"2400"; "0"; "0"; "1"; "1"; "0"; "5"; "4"; "1";"16"
|
||||
"5"; "0";"TILE_SAND" ; "8205"; "6";"2400"; "0"; "0"; "1"; "0"; "0"; "5"; "0"; "1";"16"
|
||||
"5"; "1";"TILE_SAND_WHITE" ; "8205"; "6";"2400"; "0"; "0"; "1"; "0"; "0"; "5"; "1"; "1";"16"
|
||||
"5"; "2";"TILE_SAND_RED" ; "8205"; "6";"2400"; "0"; "0"; "1"; "0"; "0"; "5"; "2"; "1";"16"
|
||||
"5"; "3";"TILE_SAND_DESERT" ; "8205"; "6";"2400"; "0"; "0"; "1"; "0"; "0"; "5"; "3"; "1";"16"
|
||||
"5"; "4";"TILE_SAND_BLACK" ; "8205"; "6";"2400"; "0"; "0"; "1"; "0"; "0"; "5"; "4"; "1";"16"
|
||||
"5"; "5";"TILE_SAND_GREEN" ; "8205"; "6";"2400"; "0"; "0"; "1"; "0"; "0"; "5"; "5"; "1";"16"
|
||||
"6"; "0";"TILE_GRAVEL" ; "8205"; "6";"2400"; "0"; "0"; "1"; "0"; "0"; "6"; "0"; "1";"16"
|
||||
"6"; "1";"TILE_GRAVEL_GREY" ; "8205"; "6";"2400"; "0"; "0"; "1"; "0"; "0"; "6"; "1"; "1";"16"
|
||||
"7"; "0";"TILE_ORE_MALACHITE" ; "8205"; "25";"2400"; "0"; "0"; "1"; "0"; "0"; "7"; "0"; "0";"16"
|
||||
@@ -65,6 +66,7 @@
|
||||
"14"; "2";"TILE_SANDSTONE_RED" ; "8205"; "25";"1900"; "0"; "0"; "1"; "1"; "0"; "14"; "2"; "0";"16"
|
||||
"14"; "3";"TILE_SANDSTONE_DESERT" ; "8205"; "25";"1900"; "0"; "0"; "1"; "1"; "0"; "14"; "3"; "0";"16"
|
||||
"14"; "4";"TILE_SANDSTONE_BLACK" ; "8205"; "25";"1900"; "0"; "0"; "1"; "1"; "0"; "14"; "4"; "0";"16"
|
||||
"14"; "5";"TILE_SANDSTONE_BLACK" ; "8205"; "25";"1900"; "0"; "0"; "1"; "1"; "0"; "14"; "5"; "0";"16"
|
||||
"254"; "0";"TILE_WATER" ; "6522"; "100";"1000"; "1"; "12"; "0"; "0"; "0"; "N/A"; "N/A"; "0";"16"
|
||||
"254"; "1";"TILE_WATER" ; "6522"; "100";"1000"; "1"; "12"; "0"; "0"; "0"; "N/A"; "N/A"; "0";"16"
|
||||
"254"; "2";"TILE_WATER" ; "6522"; "100";"1000"; "1"; "12"; "0"; "0"; "0"; "N/A"; "N/A"; "0";"16"
|
||||
@@ -101,7 +103,7 @@
|
||||
# Opacity/Lumcolor: 40-step RGB
|
||||
# Solid: whether the tile has full collision
|
||||
# movr: Movement resistance, (walkspeedmax) / (1 + (n/16)), 16 halves movement speed
|
||||
# spcg: specific gravity, aka relative density. [g/l]
|
||||
# dsty: density. As we are putting water an 1000, it is identical to specific gravity. [g/l]
|
||||
|
||||
# Defalut torch should have a colour of 63412 (ffa44e) : real candlelight colour taken from properly configured camera.
|
||||
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 1 and column 18.
|
Binary file not shown.
Binary file not shown.
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.7 KiB |
@@ -195,7 +195,7 @@
|
||||
"ERROR_NETWORK_CONNECTION_LOST";"";"Connection lost.";"Connexion perdue.";"Conexión perdida.";"Verbindung verloren.";"Connessione persa.";"Conexão perdida.";"Ligação perdida.";"Соединение потеряно.";"Χάθηκε η σύνδεση.";"Bağlantı kesildi.";"Mistet forbindelse.";"Mistet forbindelsen.";"Anslutningen bröts.";"Verbinding verloren.";"Stracono połączenie.";"Yhteys menetetty.";"接続が切断されました。";"网络连接失败。";"網絡連接失敗。";"연결이 끊어졌습니다.";"Spojení ztraceno.";"A kapcsolat megszakadt.";"S-a întrerupt conexiunea.";"การเชื่อมต่อผิดพลาด";"Връзката е изгубена.";"החיבור לרשת אבד."
|
||||
"ERROR_NETWORK_DISCONNECTED_YOUR_PLAYER";"";"The other player has disconnected.";"L’autre joueur s’est déconnecté.";"El otro jugador se ha desconectado.";"Der andere Spieler hat die Verbindung getrennt.";"L’altro giocatore si è disconnesso.";"O outro jogador foi desconectado.";"O outro jogador perdeu a ligação.";"Другой игрок отключился.";"Ο/η άλλος παίχτης αποσυνδέθηκε.";"Diğer oyuncunun bağlantısı kesildi.";"Den anden spiller har afbrudt forbindelsen.";"Den andre spilleren har koblet ifra.";"Den andra spelaren har kopplat ifrån.";"De andere speler heeft het spel verlaten.";"Gracz się rozłączył.";"Toinen pelaaja on menettänyt yhteyden.";"他のプレイヤーが接続を切断しました。";"另一个玩家断开了连接。";"另一個玩家斷線。";"다른 플레이어가 연결을 끊었습니다.";"Hráč se odpojil.";"Megszakadt a kapcsolat a másik játékossal.";"Celalalt jucator s-a deconectat.";"ผู้เล่นอื่นหลุดการเชื่อมต่อ";"Изгубена връзка с играч.";"השחקן התנתק מהרשת."
|
||||
"ERROR_NETWORK_SERVER";"";"Cannot connect to server.";"Impossible de se connecter au serveur.";"No se pudo conectar con el servidor.";"Es konnte keine Verbindung zum Server hergestellt werden.";"Impossibile connettersi al server.";"Não foi possível conectar-se ao servidor.";"Não é possível ligar ao servidor.";"Не удалось подключиться к серверу.";"Δεν μπορώ να συνδεθώ στον διακομιστή.";"Sunucuya bağlanılamıyor.";"Kan ikke få forbindelse til serveren.";"Kan ikke koble til serveren.";"Kan inte ansluta till servern.";"Kan geen verbinding maken met server.";"Nie można połączyć się z serwerem.";"Palvelimeen ei saada yhteyttä.";"サーバーに接続できません。";"不能连接至服务器。";"不能連接至服務器。";"서버에 연결할 수 없습니다.";"Nelze se připojit k serveru.";"Nem lehet a kiszolgálóhoz csatlakozni.";"Nu se poate face conexiunea la server.";"ไม่สามารถเชื่อมต่อระบบ";"Няма връзка със сървъра.";"אי אפשר להתחבר לשרת."
|
||||
"ERROR_SAVE_CORRUPTED";"";"Save file corrupted.";"Fichier de sauvegarde corrompu.";"Archivo de guardado corrupto.";"Speicherstand beschädigt.";"Salvataggio corrotto.";"Arquivo de jogo salvo corrompido.";"Ficheiro de jogo corrompido.";"Файл сохранения повреждён.";"Το αποθηκευμένο αρχείο είναι κατεστραμμένο.";"Kayıt dosyası bozuk.";"Spildata er korrupt.";"Lagringsfil er korrupt.";"Sparfilen är korrupt. ";"Opgeslagen spel is beschadigd.";"Uszkodzony plik zapisu gry.";"Tallennus on vioittunut.";"セーブデータが破損しています。";"存档文件已被破坏。";"存檔文件已被破壞。";"저장된 게임에 오류가 있습니다.";"Uložený soubor je poškozen.";"A játékmentés megsérült.";"Fișierul salvat este stricat.";"Save เกิดความเสียหาย";"Повреден файл със запис.";"הקובץ השמור פגום.";"セーブデータが はそん しています。";"Vista skrá skemmd"
|
||||
"ERROR_SAVE_CORRUPTED";"";"Save file corrupted.";"Fichier de sauvegarde corrompu.";"Archivo de guardado corrupto.";"Speicherstand beschädigt.";"Salvataggio corrotto.";"Arquivo de jogo salvo corrompido.";"Ficheiro de jogo corrompido.";"Файл сохранения повреждён.";"Το αποθηκευμένο αρχείο είναι κατεστραμμένο.";"Kayıt dosyası bozuk.";"Spildata er korrupt.";"Lagringsfil er korrupt.";"Sparfilen är korrupt. ";"Opgeslagen spel is beschadigd.";"Uszkodzony plik zapisu gry.";"Tallennus on vioittunut.";"セーブデータが破損しています。";"存档文件已被破坏。";"存檔文件已被破壞。";"저장된 게임에 오류가 있습니다.";"Uložený soubor je poškozen.";"A játékmentés megsérült.";"Fișierul salvat este stricat.";"Save เกิดความเสียหาย";"Повреден файл със запис.";"הקובץ השמור פגום.";"セーブデータが はそん しています。";"Vista skrá skemmd."
|
||||
"ERROR_SAVE_NO_GAMES_FOUND";"In previously saved games";"No games found.";"Aucune sauvegarde trouvée.";"No se encontraron partidas.";"Keine Speicherstände gefunden.";"Nessuna partita trovata.";"Nenhum jogo encontrado.";"Sem jogos.";"Сохранения не найдены.";"Δεν βρέθηκαν παιχνίδια.";"Oyun bulunamadı.";"Ingen gemte spil fundet.";"Ingen lagrede spill funnet.";"Inga sparade spel hittades.";"Geen spellen gevonden.";"Nie znaleziono zapisanych gier.";"Pelejä ei löytynyt.";"セーブデータが見つかりません。";"找不到游戏。";"找不到游戲。";"저장된 게임이 없습니다.";"Nenalezeny žádné hry.";"Nem található elmentett játékállás.";"Nu s-a găsit niciun joc.";"ไม่เจอเกมที่สร้าง";"Няма намерени игри.";"לא נמצאו משחקים שמורים."
|
||||
|
||||
"GAME_ACTION_ATTACK";"[Infinitive/tutorial verb]";"Attack";"Attaquer";"Atacar";"Attackiere";"Attaccare";"Atacar";"Atacar";"Атаковать";"Επίθεση";"Saldır";"Angrib";"Angrip";"Attackera";"Aanvallen";"Atakuj";"Hyökkää";"攻める";"攻击";"攻擊";"공격";"Útočit";"Támadni";"Atacă";"โจมตี";"Атакувай";"תקוף";"せめる";"Árás"
|
||||
@@ -369,13 +369,13 @@
|
||||
"MENU_LABEL_AGE";"";"Age";"Âge";"Edad";"Alter";"Età";"Idade";"Idade";"Возраст";"Ηλικία";"Yaş";"Alder";"Alder";"Ålder";"Leeftijd";"Wiek";"Ikä";"年齢";"年龄";"年齡";"나이";"Věk";"Kor";"Vârstă";"อายุ";"Възраст";"גיל"
|
||||
"MENU_LABEL_ARE_YOU_REALLY_SURE";"";"Are you really sure?";"Êtes-vous vraiment sûr ?";"¿Estás totalmente seguro?";"Bist du wirklich sicher?";"Sei davvero sicuro?";"Você tem certeza absoluta?";"Você tem mesmo a certeza?";"Вы точно уверены?";"Απολύτως σίγουρα;";"Gerçekten emin misiniz?";"Er du helt sikker?";"Er du helt sikker?";"Är du helt säker?";"Weet je het heel zeker?";"Naprawdę?";"Oletko aivan varma?";"本当によろしいですか?";"你是否确认?";"你是否確認?";"정말로 확실합니까?";"Jste si opravdu jist?";"Egészen biztos vagy benne?";"Ești foarte sigur?";"คุณมั่นใจแล้วจริงๆนะ?";"Наистина ли потвърждаваш?";"באמת באמת בטוח?"
|
||||
"MENU_LABEL_ARE_YOU_SURE";"A generic confirmation";"Are you sure?";"Êtes-vous certain ?";"¿Estás seguro?";"Bist du sicher?";"Sei sicuro?";"Você tem certeza?";"Você tem a certeza?";"Вы уверены?";"Σίγουρα;";"Emin misiniz?";"Er du sikker?";"Er du sikker?";"Är du säker?";"Weet je het zeker?";"Na pewno?";"Oletko varma?";"よろしいですか?";"你确定吗?";"你確定嗎?";"확실합니까?";"Jste si jist?";"Biztos vagy benne?";"Ești sigur?";"มั่นใจแล้วนะ?";"Наистина ли?";"אתה בטוח?"
|
||||
"MENU_LABEL_BACK";"Back one level in selections";"Back";"Retour";"Volver";"Zurück";"Indietro";"Voltar";"Atrás";"Назад";"Επιστροφή";"Geri";"Tilbage";"Tilbake";"Tillbaka";"Terug";"Wstecz";"Takaisin";"戻る";"返回";"返回";"뒤로";"Zpět";"Vissza";"Înapoi";"กลับ";"Назад";"חזרה"
|
||||
"MENU_LABEL_BACK";"Back one level in selections";"Back";"Retour";"Volver";"Zurück";"Indietro";"Voltar";"Atrás";"Назад";"Επιστροφή";"Geri";"Tilbage";"Tilbake";"Tillbaka";"Terug";"Wstecz";"Takaisin";"戻る";"返回";"返回";"뒤로";"Zpět";"Vissza";"Înapoi";"กลับ";"Назад";"חזרה";"もどる";"Tilbaka"
|
||||
"MENU_LABEL_BACKGROUND_MUSIC";"";"Background music";"Volume du fond sonore";"Música de fondo";"Hintergrundmusik";"Musica di sottofondo";"Música de fundo";"Música de fundo";"Музыка";"Μουσική";"Arkafon Müziği";"Baggrundsmusik";"Bakgrundsmusikk";"Bakgrundsmusik";"Achtergrondmuziek";"Podkład muzyczny";"Taustamusiikki";"BGM";"背景音乐";"背景音樂";"배경 음악";"Hudba v pozadí";"Háttérzene";"Volum muzică de fundal";"คนตรีประกอบ";"Музика";"עוצמת מוזיקת רקע"
|
||||
"MENU_LABEL_CANCEL";"";"Cancel";"Annuler";"Cancelar";"Abbrechen";"Cancella";"Cancelar";"Cancelar";"Отмена";"Ακύρωση";"İptal";"Annuler";"Avbryte";"Avbryt";"Annuleren";"Anuluj";"Peruuta";"キャンセル";"取消";"取消";"취소";"Storno";"Mégse";"Anulare";"ยกเลิก";"Отмени";"ביטול"
|
||||
"MENU_LABEL_CANCEL";"";"Cancel";"Annuler";"Cancelar";"Abbrechen";"Cancella";"Cancelar";"Cancelar";"Отмена";"Ακύρωση";"İptal";"Annuler";"Avbryte";"Avbryt";"Annuleren";"Anuluj";"Peruuta";"キャンセル";"取消";"取消";"취소";"Storno";"Mégse";"Anulare";"ยกเลิก";"Отмени";"ביטול";"キャンセル";"Hætta við"
|
||||
"MENU_LABEL_CLOSE";"Close window";"Close";"Fermer";"Cerrar";"Schließen";"Chiudi";"Fechar";"Fechar";"Закрыть";"Κλείσιμο";"Kapat";"Luk";"Steng";"Stäng";"Sluiten";"Zamknij";"Sulje";"閉じる";"关闭";"關閉";"닫기";"Zavřít";"Bezárás";"Închide";"ปิด";"Затвори";"סגור"
|
||||
"MENU_LABEL_CONFIRM_BUTTON";"Choose selected button";"Confirm";"Confirmer";"Confirmar";"Bestätigen";"Conferma";"Confirmar";"Confirmar";"Принять";"Επιβεβαίωση";"Onayla";"Godkend";"Bekreft";"Välj";"Bevestigen";"Zatwierdź";"Valmis";"決定";"确认";"確認";"확인";"Potvrdit";"Rendben";"Confirmă";"ยืนยัน";"Потвърди";"אשר"
|
||||
"MENU_LABEL_CONTINUE";"";"Continue";"Continuer";"Continuar";"Fortsetzen";"Continua";"Continuar";"Continuar";"Продолжить игру";"Συνέχεια";"Devam Et";"Fortsæt";"Gå videre";"Fortsätt";"Doorgaan";"Kontynuuj";"Jatka";"続ける";"继续";"繼續";"계속";"Pokračovat";"Folytatás";"Continuă";"เล่นต่อ";"Продължи";"המשך"
|
||||
"MENU_LABEL_CONTINUE_QUESTION";"";"Continue?";"Continuer ?";"¿Continuar?";"Fortfahren?";"Continua?";"Continuar?";"Continuar?";"Продолжить игру?";"Συνέχεια;";"Devam edilsin mi?";"Fortsæt?";"Gå videre?";"Fortsätt?";"Doorgaan?";"Kontynuować?";"Jatka?";"続けますか?";"继续?";"繼續?";"계속할까요?";"Pokračovat?";"Folytatod?";"Continui?";"เล่นต่อ?";"Продължи?";"להמשיך?"
|
||||
"MENU_LABEL_CONFIRM_BUTTON";"Choose selected button";"Confirm";"Confirmer";"Confirmar";"Bestätigen";"Conferma";"Confirmar";"Confirmar";"Принять";"Επιβεβαίωση";"Onayla";"Godkend";"Bekreft";"Välj";"Bevestigen";"Zatwierdź";"Valmis";"決定";"确认";"確認";"확인";"Potvrdit";"Rendben";"Confirmă";"ยืนยัน";"Потвърди";"אשר";"けってい";"Staðfesta"
|
||||
"MENU_LABEL_CONTINUE";"";"Continue";"Continuer";"Continuar";"Fortsetzen";"Continua";"Continuar";"Continuar";"Продолжить игру";"Συνέχεια";"Devam Et";"Fortsæt";"Gå videre";"Fortsätt";"Doorgaan";"Kontynuuj";"Jatka";"続ける";"继续";"繼續";"계속";"Pokračovat";"Folytatás";"Continuă";"เล่นต่อ";"Продължи";"המשך";"つづける";"Áfram"
|
||||
"MENU_LABEL_CONTINUE_QUESTION";"";"Continue?";"Continuer ?";"¿Continuar?";"Fortfahren?";"Continua?";"Continuar?";"Continuar?";"Продолжить игру?";"Συνέχεια;";"Devam edilsin mi?";"Fortsæt?";"Gå videre?";"Fortsätt?";"Doorgaan?";"Kontynuować?";"Jatka?";"続けますか?";"继续?";"繼續?";"계속할까요?";"Pokračovat?";"Folytatod?";"Continui?";"เล่นต่อ?";"Продължи?";"להמשיך?";"つづけますか?";"Áfram?"
|
||||
"MENU_LABEL_CREDITS";"Authors list";"Credits";"Remerciements";"Créditos";"Credits";"Crediti";"Créditos";"Créditos";"Авторы";"Συντελεστές";"Künye";"Credits";"Medvirkende";"Medverkande";"Credits";"Twórcy";"Lopputekstit";"クレジット";"致谢";"製作群";"제작진";"Autoři";"Készítők";"Credite";"เครดิต";"Създатели";"תודות"
|
||||
"MENU_LABEL_DESKTOP";"";"Exit to Desktop";"Retourner sur le bureau";"Salir al escritorio";"Zurück zum Desktop";"Torna al desktop";"Sair para a área de trabalho";"Sair para o ambiente de trabalho";"Выйти на рабочий стол";"Επιστροφή στο περιβάλλον εργασίας";"Masaüstüne Çıkış";"Afslut til Skrivebord";"Avslutt til skrivebordet";"Avsluta till skrivbordet";"Sluiten naar bureaublad";"Wyjdź do Pulpitu";"Poistu työpöydälle";"終了してデスクトップへ戻る";"退出至桌面";"退出至桌面";"바탕화면으로 나가기";"Odejít na plochu";"Kilépés a munkaasztalra";"Ieșire către Desktop";"ออกสู่ desktop";"Излез от играта";"יציאה לשולחן העבודה"
|
||||
"MENU_LABEL_DESKTOP_QUESTION";"";"Exit to Desktop?";"Retourner sur le bureau ?";"¿Salir al escritorio?";"Zum Desktop zurückkehren?";"Tornare al desktop?";"Sair para a área de trabalho?";"Sair para o ambiente de trabalho?";"Выйти на рабочий стол?";"Να επιστρέψω στο περιβάλλον εργασίας;";"Masaüstüne çıkılsın mı?";"Afslut til Skrivebord?";"Avslutt til skrivebordet?";"Avsluta till skrivbordet?";"Sluiten naar bureaublad?";"Wyjść do Pulpitu?";"Poistu työpöydälle?";"終了してデスクトップへ戻りますか?";"退出至桌面?";"退出至桌面?";"바탕화면으로 나가겠습니까?";"Odejít na plochu?";"Kilépsz az asztalra?";"Ieși catre Desktop?";"ต้องการออกสู่ desktop?";"Наистина ли излизаш от играта?";"לצאת לשולחן העבודה?"
|
||||
@@ -385,7 +385,7 @@
|
||||
"MENU_LABEL_EXIT";"Leave a state or place";"Exit";"Sortir";"Salir";"Beenden";"Esci";"Sair";"Sair";"Покинуть";"Έξοδος";"Çıkış";"Afslut";"Avslutt";"Avsluta";"Aflsuiten";"Wyjdź";"Lopeta";"終了する";"退出";"退出";"나가기";"Odejít";"Kilépés";"Ieși";"ออก";"Излез";"יציאה"
|
||||
"MENU_LABEL_EXIT_QUESTION";"";"Exit?";"Sortir ?";"¿Salir?";"Beenden?";"Uscire?";"Sair?";"Sair?";"Выйти?";"Έξοδος;";"Oyundan çıkılsın mı?";"Afslut?";"Avslutt?";"Avsluta?";"Afsluiten?";"Wyjść?";"Lopeta?";"終了しますか?";"退出?";"退出?";"나가겠습니까?";"Odejít?";"Kilépsz?";"Ieșire?";"ต้องการออก?";"Излизаш ли?";"לצאת?"
|
||||
"MENU_LABEL_EXTRAS";"";"Extras";"Extras";"Extras";"Extras";"Extra";"Extras";"Extras";"Дополнительно";"Επιπρόσθετα";"Ekstra";"Ekstra indhold";"Ekstra innhold";"Extra innehåll";"Extra’s";"Dodatki";"Ekstrat";"エキストラ";"演员";"演員";"추가 컨텐츠";"Extra";"Extra";"Extra";"เพิ่มเติม";"Екстри";"תוכן נוסף"
|
||||
"MENU_LABEL_FRAMESPERSEC";"Frames Per Second";"FPS";"IPS";"FPS";"FPS";"FPS";"FPS";"FPS";"Кадровая частота";"FPS";"FPS";"FPS";"FPS";"Bild/s";"FPS";"FPS";"FPS";"FPS";"FPS";"FPS";"FPS";"FPS";"FPS";"Cadre pe secundă (FPS)";"เฟรมต่อวินาที";"Кадри/сек.";"FPS"
|
||||
"MENU_LABEL_FRAMESPERSEC";"Frames Per Second";"FPS";"IPS";"FPS";"FPS";"FPS";"FPS";"FPS";"Кадровая частота";"FPS";"FPS";"FPS";"FPS";"Bild/s";"FPS";"FPS";"FPS";"FPS";"FPS";"FPS";"FPS";"FPS";"FPS";"Cadre pe secundă (FPS)";"เฟรมต่อวินาที";"Кадри/сек.";"FPS";"FPS";"FPS"
|
||||
"MENU_LABEL_GALLERY";"";"Art gallery";"Galerie d’art";"Galería de arte";"Kunstgalerie";"Galleria d’arte";"Galeria";"Galeria";"Галерея";"Γκαλερί";"Sanat Galerisi";"Kunstgalleri";"Kunstgalleri";"Konstgalleri";"Kunstgallerij";"Galeria";"Galleria";"アートギャラリー";"艺术馆";"藝術館";"아트 갤러리";"Galerie umění";"Képtár";"Galerie de artă";"แกลเลอรี่";"Галерия";"גלריה"
|
||||
"MENU_LABEL_GOODBYE";"";"Goodbye!";"Au revoir !";"¡Adiós!";"Auf Wiedersehen!";"Arrivederci!";"Adeus!";"Adeus!";"До свидания!";"Αντίο!";"Güle güle!";"Farvel!";"Ha det!";"Farväl!";"Vaarwel!";"Do zobaczenia!";"Näkemiin!";"さようなら!";"再见!";"再見!";"안녕히 가세요!";"Nashledanou!";"Viszont látásra!";"La revedere!";"ลาก่อน";"Довиждане!";"להתראות!"
|
||||
"MENU_LABEL_GRAPHICS";"";"Graphics";"Graphismes";"Gráficos";"Grafik";"Grafica";"Gráficos";"Gráficos";"Графика";"Γραφικά";"Grafikler";"Grafik";"Grafikk";"Grafik";"Beeld";"Grafika";"Grafiikka";"グラフィック";"图形设置";"圖形設置";"그래픽";"Grafika";"Grafika";"Grafică";"กราฟฟิค";"Графика";"גרפיקה"
|
||||
@@ -400,8 +400,8 @@
|
||||
"MENU_LABEL_NEW_GAME";"";"New Game";"Nouvelle partie";"Juego nuevo";"Neues Spiel";"Nuova partita";"Novo Jogo";"Novo Jogo";"Новая игра";"Νέο παιχνίδι";"Yeni Oyun";"Nyt Spil";"Nytt Spill";"Nytt spel";"Nieuw spel";"Nowa Gra";"Uusi peli";"新しいゲーム";"新游戏";"新游戲";"새 게임";"Nová hra";"Új játék";"Joc nou";"เริ่มเกมใหม่";"Нова игра";"משחק חדש"
|
||||
"MENU_LABEL_NEXT";"";"Next";"Suivant";"Siguiente";"Weiter";"Avanti";"Próximo";"Próximo";"След.";"Επόμενο";"Sonraki";"Næste";"Neste";"Nästa";"Volgende";"Dalej";"Seuraava";"次へ";"下一个";"下一個";"다음";"Další";"Következő";"Următorul";"ต่อไป";"Нататък";"הבא"
|
||||
"MENU_LABEL_NEXT_TRACK";"Next music track/song";"Next track";"Piste suivante";"Siguiente canción";"Nächster Titel";"Traccia successiva";"Próxima música";"Próxima música";"След. трек";"Επόμενο κομμάτι";"Sonraki parça";"Næste nummer";"Neste spor";"Nästa låt";"Volgend nummer";"Nastepny utwór";"Seuraava kappale";"次の曲";"下一个曲目";"下一個曲目";"다음 곡";"Další skladba";"Következő dal";"Melodia următoare";"เพลงต่อไป";"Следваща песен";"שיר הבא"
|
||||
"MENU_LABEL_NO";"";"No";"Non";"No";"Nein";"No";"Não";"Não";"Нет";"Όχι";"Hayır";"Nej";"Nei";"Nej";"Nee";"Nie";"Ei";"いいえ";"否";"否";"아니요";"Ne";"Nem";"Nu";"ไม่ใช่่";"Не";"לא"
|
||||
"MENU_LABEL_NO_CAPS";"";"NO";"NON";"NO";"NEIN";"NO";"NÃO";"NÃO";"НЕТ";"ΟΧΙ";"HAYIR";"NEJ";"NEI";"NEJ";"NEE";"NIE";"EI";"いいえ";"否";"否";"아니요";"NE";"NEM";"NU";"ไม่ใช่";"НЕ";"לא"
|
||||
"MENU_LABEL_NO";"";"No";"Non";"No";"Nein";"No";"Não";"Não";"Нет";"Όχι";"Hayır";"Nej";"Nei";"Nej";"Nee";"Nie";"Ei";"いいえ";"否";"否";"아니요";"Ne";"Nem";"Nu";"ไม่ใช่่";"Не";"לא";"いいえ";"Nei"
|
||||
"MENU_LABEL_NO_CAPS";"";"NO";"NON";"NO";"NEIN";"NO";"NÃO";"NÃO";"НЕТ";"ΟΧΙ";"HAYIR";"NEJ";"NEI";"NEJ";"NEE";"NIE";"EI";"いいえ";"否";"否";"아니요";"NE";"NEM";"NU";"ไม่ใช่";"НЕ";"לא";"いいえ";"NEI"
|
||||
"MENU_LABEL_NOPE";"A more casual 'no'";"Nope";"Nan";"Nah";"Nö";"No";"Nah";"Não";"Неа";"Μπα";"Yoo";"Næh";"Nei";"Nej";"Nope";"Nie";"Ei";"だめ";"不行";"不行";"아니";"Nikoliv";"Nem";"Nah";"ไม่ใช่";"Мне";"לא"
|
||||
"MENU_LABEL_OK";"As in Windows dialog";"OK";"OK";"Ok";"OK";"Ok";"Ok";"Ok";"ОК";"ΟΚ";"TAMAM";"OK";"OK";"OK";"OK";"OK";"OK";"OK";"OK";"OK";"확인";"OK";"OK";"OK";"ตกลง";"Приеми";"טוב"
|
||||
"MENU_LABEL_PAUSE";"[Infinitive/tutorial verb] common term";"Pause";"Pause";"Pausa";"Pause";"Pausa";"Pausar";"Pausa";"Пауза";"Παύση";"Durdur";"Pause";"Pause";"Pausa";"Pauzeren";"Pauza";"Pysäytä";"ポーズ";"暂停";"暫停";"일시 정지";"Pauza";"Szünet";"Pauză";"หยุด";"Паузирай";"השהה"
|
||||
@@ -417,8 +417,8 @@
|
||||
"MENU_LABEL_PRICE";"";"Price";"Prix";"Precio";"Preis";"Prezzo";"Preço";"Preço";"Цена";"Τιμή";"Fiyat";"Pris";"Pris";"Pris";"Prijs";"Cena";"Hinta";"価格";"价钱";"價錢";"가격";"Cena";"Ár";"Preț";"ราคา";"Цена";"מחיר"
|
||||
"MENU_LABEL_PRICE_FREE";"";"Free";"Gratuit";"Gratis";"Kostenlos";"Gratis";"Grátis";"Grátis";"Бесплатно";"Ελεύθερο";"Bedava";"Gratis";"Gratis";"Gratis";"Gratis";"Darmowy";"Ilmainen";"無料";"免费";"免費";"무료";"Zdarma";"Ingyenes";"Gratis";"ฟรี";"Безплатно";"חינם"
|
||||
"MENU_LABEL_PURCHASE";"[Infinitive/tutorial verb]";"Purchase";"Acheter";"Comprar";"Kaufen";"Compra";"Comprar";"Comprar";"Купить";"Αγόρασε";"Satın Al";"Køb";"Kjøp";"Köp";"Kopen";"Kup";"Osta";"購入";"购买";"購買";"구매하기";"Zakoupit";"Vásárlás";"Cumpără";"ซื้อ";"Купи";"קנה"
|
||||
"MENU_LABEL_QUIT";"Leave the game (keep short)";"Quit";"Quitter";"Cerrar";"Beenden";"Esci";"Sair";"Sair";"Выход";"Έξοδος";"Oyunu Kapat";"Afslut";"Avslutt";"Avsluta";"Stoppen";"Wyjdź";"Lopeta";"終了する";"退出";"退出";"종료";"Ukončit hru";"Bezárás";"Închidere";"ออก";"Изход";"הפסק"
|
||||
"MENU_LABEL_QUIT_CONFIRM";"";"Are you sure you want to quit?";"Êtes-vous certain de vouloir quitter ?";"¿Seguro que quieres salir?";"Wirklich beenden?";"Sicuro di voler uscire?";"Você tem certeza de que quer sair?";"Tem a certeza que quer sair?";"Вы точно хотите выйти?";"Σίγουρα θέλετε να εγκαταλείψετε;";"Çıkmak istediğinize emin misiniz?";"Er du sikker på du vil afslutte?";"Er du sikker på at du vil avslutte?";"Är du säker på att du vill avsluta?";"Weet je zeker dat je wilt stoppen?";"Czy na pewno chcesz wyjść?";"Haluatko varmasti lopettaa?";"本当に終了しますか?";"你确定你需要退出吗?";"你確定你需要退出嗎?";"정말로 종료할까요?";"Opravdu chcete hru ukončit?";"Biztos ki akarsz lépni?";"Ești sigur că vrei să închizi?";"มั่นใจหรือไม่ว่าต้องการออก?";"Наистина ли искаш да се откажеш?";"אתה בטוח שאתה רוצה להפסיק?"
|
||||
"MENU_LABEL_QUIT";"Leave the game (keep short)";"Quit";"Quitter";"Cerrar";"Beenden";"Esci";"Sair";"Sair";"Выход";"Έξοδος";"Oyunu Kapat";"Afslut";"Avslutt";"Avsluta";"Stoppen";"Wyjdź";"Lopeta";"終了する";"退出";"退出";"종료";"Ukončit hru";"Bezárás";"Închidere";"ออก";"Изход";"הפסק";"しゅうりょうする";"Hætta"
|
||||
"MENU_LABEL_QUIT_CONFIRM";"";"Are you sure you want to quit?";"Êtes-vous certain de vouloir quitter ?";"¿Seguro que quieres salir?";"Wirklich beenden?";"Sicuro di voler uscire?";"Você tem certeza de que quer sair?";"Tem a certeza que quer sair?";"Вы точно хотите выйти?";"Σίγουρα θέλετε να εγκαταλείψετε;";"Çıkmak istediğinize emin misiniz?";"Er du sikker på du vil afslutte?";"Er du sikker på at du vil avslutte?";"Är du säker på att du vill avsluta?";"Weet je zeker dat je wilt stoppen?";"Czy na pewno chcesz wyjść?";"Haluatko varmasti lopettaa?";"本当に終了しますか?";"你确定你需要退出吗?";"你確定你需要退出嗎?";"정말로 종료할까요?";"Opravdu chcete hru ukončit?";"Biztos ki akarsz lépni?";"Ești sigur că vrei să închizi?";"มั่นใจหรือไม่ว่าต้องการออก?";"Наистина ли искаш да се откажеш?";"אתה בטוח שאתה רוצה להפסיק?";"ほんとうに しゅうりょうしますか?";"Ertu viss um að þú viljir hætta?"
|
||||
"MENU_LABEL_QUIT_QUESTION";"";"Quit?";"Quitter ?";"¿Salir?";"Spiel beenden?";"Uscire?";"Sair?";"Sair?";"Выйти из игры?";"Έξοδος;";"Oyun kapatılsın mı?";"Afslut?";"Avslutt?";"Avsluta?";"Stoppen?";"Wyjść?";"Lopeta?";"終了しますか?";"退出?";"退出?";"종료할까요?";"Ukončít hru?";"Kilépsz?";"Închizi?";"ต้องการออก?";"Отказваш ли се?";"להפסיק?"
|
||||
"MENU_LABEL_REPLAY";"Show the replay of the last game ";"Replay";"Revoir";"Repetir";"Replay";"Rigioca";"Replay";"Replay";"Переиграть";"Επανάληψη";"Tekrarını İzle";"Spil igen";"Spill igjen";"Spela igen";"Speel opnieuw";"Replay";"Uusinta";"リプレイ";"重播";"重播";"리플레이";"Přehrát";"Újra játszás";"Joaca din nou";"เล่นอีกรอบ";"Повторение";"הילוך-חוזר"
|
||||
"MENU_LABEL_RETURN";"";"Return";"Retour";"Volver";"Zurück";"Ritorna";"Retornar";"Voltar";"Назад";"Επιστροφή";"Geri Dön";"Tilbage";"Gå tilbake";"Återgå";"Terug";"Powrót";"Palaa";"戻る";"返回";"返回";"돌아가기";"Zpět";"Visszalépés";"Întoarcere";"กลับ";"Връщане";"חזור"
|
||||
@@ -435,8 +435,8 @@
|
||||
"MENU_LABEL_WELCOME";"";"Welcome";"Bienvenue";"Bienvenido";"Willkommen";"Benvenuto";"Bem vindo";"Bem-vindo";"Добро пожаловать";"Καλωσήρθατε";"Hoşgeldiniz";"Velkommen";"Velkommen";"Välkommen";"Welkom";"Witaj";"Tervetuloa";"ようこそ";"欢迎";"歡迎";"환영합니다";"Vítejte";"Üdvözölünk";"Bine ai venit";"ยินดีต้อนรับ";"Привет";"שלום"
|
||||
"MENU_LABEL_WORLD";"";"World";"Monde";"Mundo";"Welt";"Mondo";"Mundo";"Mundo";"Мир";"Κόσμος";"Dünya";"Verden";"Verden";"Värld";"Wereld";"Świat";"Maailma";"ワールド";"世界";"世界";"세계";"Svět";"Világ";"Lume";"โลก";"Свят";"עולם"
|
||||
"MENU_LABEL_YEAH";"A more casual 'yes'";"Yeah";"Ouais";"Seh";"Jo";"Si";"Uhum";"Sim";"Ага";"Ναι";"Hee";"Jah";"Ja";"Japp";"Jup";"Tak";"Joo";"いいよ";"好的";"好的";"응";"Jistě";"Ja";"Dap";"ใช่";"Аха";"בסדר"
|
||||
"MENU_LABEL_YES";"";"Yes";"Oui";"Sí";"Ja";"Sì";"Sim";"Sim";"Да";"Ναι";"Evet";"Ja";"Ja";"Ja";"Ja";"Tak";"Kyllä";"はい";"是";"是";"예";"Ano";"Igen";"Da";"ใช่";"Да";"כן"
|
||||
"MENU_LABEL_YES_CAPS";"";"YES";"OUI";"SÍ";"JA";"SI";"SIM";"SIM";"ДА";"ΝΑΙ";"EVET";"JA";"JA";"JA";"JA";"TAK";"KYLLÄ";"はい";"是";"是";"예";"ANO";"IGEN";"DA";"ใช่";"ДА";"כן"
|
||||
"MENU_LABEL_YES";"";"Yes";"Oui";"Sí";"Ja";"Sì";"Sim";"Sim";"Да";"Ναι";"Evet";"Ja";"Ja";"Ja";"Ja";"Tak";"Kyllä";"はい";"是";"是";"예";"Ano";"Igen";"Da";"ใช่";"Да";"כן";"はい";"Já"
|
||||
"MENU_LABEL_YES_CAPS";"";"YES";"OUI";"SÍ";"JA";"SI";"SIM";"SIM";"ДА";"ΝΑΙ";"EVET";"JA";"JA";"JA";"JA";"TAK";"KYLLÄ";"はい";"是";"是";"예";"ANO";"IGEN";"DA";"ใช่";"ДА";"כן";"はい";"JÁ"
|
||||
|
||||
"MENU_LOGIN";"[Verb]";"Login";"Se connecter";"Iniciar sesión";"Login";"Login";"Login";"Login";"Вход";"Είσοδος";"Giriş";"Log ind";"Logg in";"Logga in";"Login";"Logowanie";"Kirjaudu";"ログイン";"登录";"登錄";"로그인";"Přihlášení";"Csatlakozás";"Conectare";"ล๊อกอิน";"Влез";"כניסה"
|
||||
"MENU_LOGIN_EMAIL";"Email address";"E-mail";"E-mail";"E-mail";"E-Mail";"E-mail";"E-mail";"E-mail";"E-Mail";"Ηλεκτρονικό ταχυδρομείο";"E-Mail";"E-mail";"E-postaddresse";"E-postadress";"E-mail";"E-mail";"Sähköposti";"Eメール";"电子邮件";"電子郵件";"이메일";"E-mail";"E-mail";"E-mail";"อีเมล";"Имейл";"כתובת-דואר"
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 191 and column 97.
|
@@ -1,76 +1,49 @@
|
||||
package com.Torvald.ColourUtil;
|
||||
|
||||
import com.jme3.math.FastMath;
|
||||
import org.newdawn.slick.Color;
|
||||
|
||||
/**
|
||||
* Created by minjaesong on 16-01-16.
|
||||
* Created by minjaesong on 16-03-10.
|
||||
*/
|
||||
public class HSV {
|
||||
private float H;
|
||||
private float S;
|
||||
private float V;
|
||||
|
||||
/**
|
||||
* Convert HSV parameters to RGB color.
|
||||
* @param h 0-359 Hue
|
||||
* @param s 0-255 Saturation
|
||||
* @param v 0-255 Value
|
||||
* @return org.newdawn.slick.Color
|
||||
* @link http://www.rapidtables.com/convert/color/hsv-to-rgb.htm
|
||||
*/
|
||||
public static Color toRGB(int h, int s, int v) {
|
||||
int H = h;
|
||||
if (H < 0 || H >= 360) {
|
||||
H %= 360;
|
||||
}
|
||||
|
||||
float S = s / 255f;
|
||||
float V = v / 255f;
|
||||
|
||||
float C = V * S;
|
||||
float X = C * (1 - FastMath.abs(
|
||||
(H / 60f) % 2 - 1
|
||||
));
|
||||
float m = V - C;
|
||||
|
||||
float R_prime = Float.NaN;
|
||||
float G_prime = Float.NaN;
|
||||
float B_prime = Float.NaN;
|
||||
|
||||
if (H < 60) {
|
||||
R_prime = C;
|
||||
G_prime = X;
|
||||
B_prime = 0;
|
||||
}
|
||||
else if (H < 120) {
|
||||
R_prime = X;
|
||||
G_prime = C;
|
||||
B_prime = 0;
|
||||
}
|
||||
else if (H < 180) {
|
||||
R_prime = 0;
|
||||
G_prime = C;
|
||||
B_prime = X;
|
||||
}
|
||||
else if (H < 240) {
|
||||
R_prime = 0;
|
||||
G_prime = X;
|
||||
B_prime = C;
|
||||
}
|
||||
else if (H < 300) {
|
||||
R_prime = X;
|
||||
G_prime = 0;
|
||||
B_prime = C;
|
||||
}
|
||||
else if (H < 360) {
|
||||
R_prime = C;
|
||||
G_prime = 0;
|
||||
B_prime = X;
|
||||
}
|
||||
|
||||
return new Color(
|
||||
(int) ((R_prime + m) * 255)
|
||||
, (int) ((G_prime + m) * 255)
|
||||
, (int) ((B_prime + m) * 255)
|
||||
);
|
||||
public HSV() {
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param h 0-359
|
||||
* @param s 0-1
|
||||
* @param v 0-1
|
||||
*/
|
||||
public HSV(float h, float s, float v) {
|
||||
H = h;
|
||||
S = s;
|
||||
V = v;
|
||||
}
|
||||
|
||||
public float getH() {
|
||||
return H;
|
||||
}
|
||||
|
||||
public void setH(float h) {
|
||||
H = h;
|
||||
}
|
||||
|
||||
public float getS() {
|
||||
return S;
|
||||
}
|
||||
|
||||
public void setS(float s) {
|
||||
S = s;
|
||||
}
|
||||
|
||||
public float getV() {
|
||||
return V;
|
||||
}
|
||||
|
||||
public void setV(float v) {
|
||||
V = v;
|
||||
}
|
||||
}
|
||||
|
||||
109
src/com/Torvald/ColourUtil/HSVUtil.java
Normal file
109
src/com/Torvald/ColourUtil/HSVUtil.java
Normal file
@@ -0,0 +1,109 @@
|
||||
package com.Torvald.ColourUtil;
|
||||
|
||||
import com.jme3.math.FastMath;
|
||||
import org.newdawn.slick.Color;
|
||||
|
||||
/**
|
||||
* Created by minjaesong on 16-01-16.
|
||||
*/
|
||||
public class HSVUtil {
|
||||
|
||||
/**
|
||||
* Convert HSV parameters to RGB color.
|
||||
* @param H 0-359 Hue
|
||||
* @param S 0-1 Saturation
|
||||
* @param V 0-1 Value
|
||||
* @return org.newdawn.slick.Color
|
||||
* @link http://www.rapidtables.com/convert/color/hsv-to-rgb.htm
|
||||
*/
|
||||
public static Color toRGB(float H, float S, float V) {
|
||||
H %= 360;
|
||||
|
||||
float C = V * S;
|
||||
float X = C * (1 - FastMath.abs(
|
||||
(H / 60f) % 2 - 1
|
||||
));
|
||||
float m = V - C;
|
||||
|
||||
float R_prime = Float.NaN;
|
||||
float G_prime = Float.NaN;
|
||||
float B_prime = Float.NaN;
|
||||
|
||||
if (H < 60) {
|
||||
R_prime = C;
|
||||
G_prime = X;
|
||||
B_prime = 0;
|
||||
}
|
||||
else if (H < 120) {
|
||||
R_prime = X;
|
||||
G_prime = C;
|
||||
B_prime = 0;
|
||||
}
|
||||
else if (H < 180) {
|
||||
R_prime = 0;
|
||||
G_prime = C;
|
||||
B_prime = X;
|
||||
}
|
||||
else if (H < 240) {
|
||||
R_prime = 0;
|
||||
G_prime = X;
|
||||
B_prime = C;
|
||||
}
|
||||
else if (H < 300) {
|
||||
R_prime = X;
|
||||
G_prime = 0;
|
||||
B_prime = C;
|
||||
}
|
||||
else if (H < 360) {
|
||||
R_prime = C;
|
||||
G_prime = 0;
|
||||
B_prime = X;
|
||||
}
|
||||
|
||||
return new Color(
|
||||
(int) ((R_prime + m) * 255)
|
||||
, (int) ((G_prime + m) * 255)
|
||||
, (int) ((B_prime + m) * 255)
|
||||
);
|
||||
}
|
||||
|
||||
public static Color toRGB(HSV hsv) {
|
||||
return toRGB(hsv.getH(), hsv.getS(), hsv.getV());
|
||||
}
|
||||
|
||||
public static HSV fromRGB(Color color) {
|
||||
float r = color.getRed() / 255f;
|
||||
float g = color.getGreen() / 255f;
|
||||
float b = color.getBlue() / 255f;
|
||||
|
||||
float rgbMin = FastMath.min(r, g, b);
|
||||
float rgbMax = FastMath.max(r, g, b);
|
||||
|
||||
float h;
|
||||
float s;
|
||||
float v = rgbMax;
|
||||
|
||||
float delta = rgbMax - rgbMin;
|
||||
|
||||
if (rgbMax != 0)
|
||||
s = delta / rgbMax;
|
||||
else {
|
||||
h = 0;
|
||||
s = 0;
|
||||
return new HSV(h, s, v);
|
||||
}
|
||||
|
||||
if (r == rgbMax)
|
||||
h = (g - b) / delta;
|
||||
else if (g == rgbMax)
|
||||
h = 2 + (b - r) / delta;
|
||||
else
|
||||
h = 4 + (r - g) / delta;
|
||||
|
||||
h *= 60;
|
||||
if (h < 0) h += 360;
|
||||
|
||||
return new HSV(h, s, v);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -112,24 +112,30 @@ public class GameFontBase implements Font {
|
||||
return hanIndex % JONG_COUNT;
|
||||
}
|
||||
|
||||
private int getHanChoseongShift(int hanIndex) {
|
||||
private int getHanChoseongRow(int hanIndex) {
|
||||
int jungseongIndex = getHanJungseong(hanIndex);
|
||||
Integer[] jungseongWide = {8, 12, 13, 17, 18, 21};
|
||||
Integer[] jungseongComplex = {9, 10, 11, 14, 15, 16, 22};
|
||||
int ret;
|
||||
|
||||
if (getHanJongseong(hanIndex) != 0)
|
||||
return (Arrays.asList(jungseongWide).contains(jungseongIndex))
|
||||
? 1 : 0;
|
||||
else
|
||||
return (Arrays.asList(jungseongWide).contains(jungseongIndex))
|
||||
? 1 : 0;
|
||||
if (Arrays.asList(jungseongWide).contains(jungseongIndex)) {
|
||||
ret = 2;
|
||||
}
|
||||
else if (Arrays.asList(jungseongComplex).contains(jungseongIndex)) {
|
||||
ret = 4;
|
||||
}
|
||||
else {
|
||||
ret = 0;
|
||||
}
|
||||
return (getHanJongseong(hanIndex) == 0) ? ret : ret + 1;
|
||||
}
|
||||
|
||||
private int getHanJungseongShift(int hanIndex) {
|
||||
return (getHanJongseong(hanIndex) == 0) ? 4 : 5;
|
||||
private int getHanJungseongRow(int hanIndex) {
|
||||
return (getHanJongseong(hanIndex) == 0) ? 6 : 7;
|
||||
}
|
||||
|
||||
private int getHanJongseongShift() {
|
||||
return 6;
|
||||
private int getHanJongseongRow() {
|
||||
return 8;
|
||||
}
|
||||
|
||||
private boolean isAsciiEF(char c) {
|
||||
@@ -356,9 +362,9 @@ public class GameFontBase implements Font {
|
||||
int indexJung = getHanJungseong(hIndex);
|
||||
int indexJong = getHanJongseong(hIndex);
|
||||
|
||||
int choRow = getHanChoseongShift(hIndex);
|
||||
int jungRow = getHanJungseongShift(hIndex);
|
||||
int jongRow = getHanJongseongShift();
|
||||
int choRow = getHanChoseongRow(hIndex);
|
||||
int jungRow = getHanJungseongRow(hIndex);
|
||||
int jongRow = getHanJongseongRow();
|
||||
|
||||
int glyphW = getWidth("" + ch);
|
||||
|
||||
|
||||
@@ -119,6 +119,12 @@ public class ActorWithBody implements Actor, Visible, Glowing {
|
||||
*/
|
||||
public final int INVINCIBILITY_TIME = 500;
|
||||
|
||||
/**
|
||||
* Will ignore fluid resistance if (submerged height / actor height) <= this var
|
||||
*/
|
||||
private final float FLUID_RESISTANCE_IGNORE_THRESHOLD_RATIO = 0.2f;
|
||||
private final float FLUID_RESISTANCE_APPLY_FULL_RATIO = 0.5f;
|
||||
|
||||
private GameMap map;
|
||||
|
||||
/**
|
||||
@@ -268,11 +274,11 @@ public class ActorWithBody implements Actor, Visible, Glowing {
|
||||
// order of the if-elseif chain is IMPORTANT
|
||||
if (isColliding(CONTACT_AREA_BOTTOM)) {
|
||||
adjustHitBottom();
|
||||
if (veloY != 0) veloY = -veloY * elasticity;
|
||||
elasticReflectY();
|
||||
grounded = true;
|
||||
}
|
||||
else if (isColliding(CONTACT_AREA_BOTTOM, 0, 1)) {
|
||||
if (veloY != 0) veloY = -veloY * elasticity;
|
||||
elasticReflectY();
|
||||
grounded = true;
|
||||
}
|
||||
else {
|
||||
@@ -285,10 +291,10 @@ public class ActorWithBody implements Actor, Visible, Glowing {
|
||||
// order of the if-elseif chain is IMPORTANT
|
||||
if (isColliding(CONTACT_AREA_TOP)) {
|
||||
adjustHitTop();
|
||||
if (veloY != 0) veloY = -veloY * elasticity;
|
||||
elasticReflectY();
|
||||
}
|
||||
else if (isColliding(CONTACT_AREA_TOP, 0, -1)) {
|
||||
if (veloY != 0) veloY = -veloY * elasticity; // for reversed gravity
|
||||
elasticReflectY(); // for reversed gravity
|
||||
}
|
||||
else {
|
||||
}
|
||||
@@ -333,33 +339,39 @@ public class ActorWithBody implements Actor, Visible, Glowing {
|
||||
private void updateHorizontalPos() {
|
||||
if (!isNoCollideWorld()) {
|
||||
// check right
|
||||
if (veloX > 0) {
|
||||
if (veloX >= 0.5) {
|
||||
// order of the if-elseif chain is IMPORTANT
|
||||
if (isColliding(CONTACT_AREA_RIGHT) && !isColliding(CONTACT_AREA_LEFT)) {
|
||||
adjustHitRight();
|
||||
if (veloX != 0) veloX = -veloX * elasticity;
|
||||
elasticReflectX();
|
||||
}
|
||||
else if (isColliding(CONTACT_AREA_RIGHT, 1, 0)
|
||||
&& !isColliding(CONTACT_AREA_LEFT, -1, 0)) {
|
||||
if (veloX != 0) veloX = -veloX * elasticity;
|
||||
elasticReflectX();
|
||||
}
|
||||
else {
|
||||
}
|
||||
}
|
||||
else { // fix for float-point rounding; veloX of zero should be treated as moving left
|
||||
else if (veloX <= 0.5) {
|
||||
System.out.println("collidingleft");
|
||||
// order of the if-elseif chain is IMPORTANT
|
||||
if (isColliding(CONTACT_AREA_LEFT) && !isColliding(CONTACT_AREA_RIGHT)) {
|
||||
adjustHitLeft();
|
||||
if (veloX != 0) veloX = -veloX * elasticity;
|
||||
elasticReflectX();
|
||||
}
|
||||
else if (isColliding(CONTACT_AREA_LEFT, -1, 0)
|
||||
&& !isColliding(CONTACT_AREA_RIGHT, 1, 0)) {
|
||||
if (veloX != 0) veloX = -veloX * elasticity;
|
||||
elasticReflectX();
|
||||
}
|
||||
else {
|
||||
}
|
||||
}
|
||||
|
||||
else {
|
||||
System.out.println("updatehorizontal - |velo| < 0.5");
|
||||
if (isColliding(CONTACT_AREA_LEFT) || isColliding(CONTACT_AREA_RIGHT)) {
|
||||
// elasticReflectX();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -399,6 +411,14 @@ public class ActorWithBody implements Actor, Visible, Glowing {
|
||||
nextHitbox.setPosition(newX, newY); // + 1; float-point rounding compensation (i think...)
|
||||
}
|
||||
|
||||
private void elasticReflectX() {
|
||||
if (veloX != 0) veloX = -veloX * elasticity;
|
||||
}
|
||||
|
||||
private void elasticReflectY() {
|
||||
if (veloY != 0) veloY = -veloY * elasticity;
|
||||
}
|
||||
|
||||
private boolean isColliding(int side) {
|
||||
return isColliding(side, 0, 0);
|
||||
}
|
||||
@@ -485,7 +505,6 @@ public class ActorWithBody implements Actor, Visible, Glowing {
|
||||
*/
|
||||
private void applyBuoyancy() {
|
||||
int fluidDensity = getTileDensity();
|
||||
int fluidResistance = getTileMvmtRstc();
|
||||
float submergedVolume = getSubmergedVolume();
|
||||
|
||||
if (!isPlayerNoClip() && !grounded) {
|
||||
@@ -493,24 +512,18 @@ public class ActorWithBody implements Actor, Visible, Glowing {
|
||||
veloY -= ((fluidDensity - this.density)
|
||||
* map.getGravitation() * submergedVolume
|
||||
* Math.pow(mass, -1)
|
||||
// * mvmtRstcToMultiplier(fluidResistance) // eliminate shoot-up
|
||||
* SI_TO_GAME_ACC);
|
||||
}
|
||||
}
|
||||
|
||||
private float getSubmergedVolume(){
|
||||
private float getSubmergedVolume() {
|
||||
float GAME_TO_SI_VOL = FastMath.pow((1f/METER), 3);
|
||||
|
||||
if( density > 0 ){
|
||||
return FastMath.clamp(
|
||||
(nextHitbox.getPointedY() - getFluidLevel()) // submerged height
|
||||
* nextHitbox.getWidth() * nextHitbox.getWidth()
|
||||
* GAME_TO_SI_VOL
|
||||
, 0
|
||||
, nextHitbox.getHeight()
|
||||
* nextHitbox.getWidth() * nextHitbox.getWidth()
|
||||
* GAME_TO_SI_VOL
|
||||
);
|
||||
return getSubmergedHeight()
|
||||
* nextHitbox.getWidth() * nextHitbox.getWidth()
|
||||
* GAME_TO_SI_VOL
|
||||
;
|
||||
//System.out.println("fluidHeight: "+fluidHeight+", submerged: "+submergedVolume);
|
||||
//submergedHeight / TILE_SIZE * 1^2 (pixel to meter)
|
||||
}
|
||||
@@ -519,7 +532,15 @@ public class ActorWithBody implements Actor, Visible, Glowing {
|
||||
}
|
||||
}
|
||||
|
||||
private int getFluidLevel(){
|
||||
private float getSubmergedHeight() {
|
||||
return FastMath.clamp(
|
||||
nextHitbox.getPointedY() - getFluidLevel()
|
||||
, 0
|
||||
, nextHitbox.getHeight()
|
||||
);
|
||||
}
|
||||
|
||||
private int getFluidLevel() {
|
||||
int tilePosXStart = Math.round(nextHitbox.getPosX() / TSIZE);
|
||||
int tilePosXEnd = Math.round(nextHitbox.getHitboxEnd().getX() / TSIZE);
|
||||
int tilePosY = Math.round(nextHitbox.getPosY() / TSIZE);
|
||||
@@ -635,15 +656,33 @@ public class ActorWithBody implements Actor, Visible, Glowing {
|
||||
|
||||
private void updateNextHitboxFromVelo() {
|
||||
float fluidResistance = mvmtRstcToMultiplier(getTileMvmtRstc());
|
||||
float submergedRatio = FastMath.clamp(
|
||||
getSubmergedHeight() / nextHitbox.getHeight()
|
||||
, 0f, 1f
|
||||
);
|
||||
|
||||
boolean applyResistance = (!isNoSubjectToFluidResistance()
|
||||
&& submergedRatio > FLUID_RESISTANCE_IGNORE_THRESHOLD_RATIO
|
||||
);
|
||||
float resistanceMulInterValueSize = FLUID_RESISTANCE_APPLY_FULL_RATIO - FLUID_RESISTANCE_IGNORE_THRESHOLD_RATIO;
|
||||
float resistanceMultiplier = FastMath.interpolateLinear(
|
||||
(submergedRatio - FLUID_RESISTANCE_IGNORE_THRESHOLD_RATIO)
|
||||
* FastMath.pow(resistanceMulInterValueSize, -1)
|
||||
, 0, 1
|
||||
);
|
||||
float adjustedResistance = FastMath.interpolateLinear(
|
||||
resistanceMultiplier
|
||||
, 1f, fluidResistance
|
||||
);
|
||||
|
||||
nextHitbox.set(
|
||||
Math.round(hitbox.getPosX()
|
||||
+ (veloX
|
||||
* (isNoSubjectToFluidResistance() ? 1 : fluidResistance)
|
||||
* (!applyResistance ? 1 : adjustedResistance)
|
||||
))
|
||||
, Math.round(hitbox.getPosY()
|
||||
+ (veloY
|
||||
* (isNoSubjectToFluidResistance() ? 1 : fluidResistance)
|
||||
* (!applyResistance ? 1 : adjustedResistance)
|
||||
))
|
||||
, Math.round(baseHitboxW * scale)
|
||||
, Math.round(baseHitboxH * scale)
|
||||
@@ -731,11 +770,6 @@ public class ActorWithBody implements Actor, Visible, Glowing {
|
||||
return referenceID;
|
||||
}
|
||||
|
||||
public float pointedPosX() { return hitbox.getPointedX(); }
|
||||
public float pointedPosY() { return hitbox.getPointedY(); }
|
||||
public float topLeftPosX() { return hitbox.getPosX(); }
|
||||
public float topLeftPosY() { return hitbox.getPosY(); }
|
||||
|
||||
private float clampW(float x) {
|
||||
if (x < TSIZE + nextHitbox.getWidth() / 2) {
|
||||
return TSIZE + nextHitbox.getWidth() / 2;
|
||||
|
||||
@@ -4,10 +4,10 @@ import com.Torvald.Rand.HQRNG;
|
||||
|
||||
public class FloatingIslandsPreset {
|
||||
|
||||
public static int presets = 5;
|
||||
public static final int PRESETS = 5;
|
||||
|
||||
static int[][] generatePreset(HQRNG random) {
|
||||
int index = random.nextInt(presets);
|
||||
int index = random.nextInt(PRESETS);
|
||||
return generatePreset(index, random);
|
||||
}
|
||||
|
||||
|
||||
@@ -7,6 +7,8 @@ import com.Torvald.Terrarum.TileProperties.TileNameCode;
|
||||
import com.jme3.math.FastMath;
|
||||
import com.sun.istack.internal.NotNull;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class MapGenerator {
|
||||
|
||||
@NotNull private static GameMap map;
|
||||
@@ -100,10 +102,10 @@ public class MapGenerator {
|
||||
* Todo: more perturbed overworld (harder to supra-navigate)
|
||||
* Todo: veined ore distribution (metals) -- use veined simplex noise
|
||||
* Todo: clustered gem distribution (Groups: [Ruby, Sapphire], Amethyst, Yellow topaz, emerald, diamond) -- use regular simplex noise
|
||||
* Todo: Lakes! Aquifers! Lava chamber!
|
||||
* Todo: desert areas (variants: SAND_DESERT, SAND_RED
|
||||
* Todo: Lakes! Aquifers! Lava chambers!
|
||||
* Todo: deserts (variants: SAND_DESERT, SAND_RED)
|
||||
* Todo: volcano(es?)
|
||||
* Todo: variants of beach (SAND_BEACH, SAND_BLACK, SAND_GREEN)
|
||||
* Done: variants of beach (SAND_BEACH, SAND_BLACK, SAND_GREEN)
|
||||
*/
|
||||
|
||||
carveCave(
|
||||
@@ -889,10 +891,12 @@ public class MapGenerator {
|
||||
int nIslands = random.nextInt(nIslandsMax - nIslandsMin) + nIslandsMin;
|
||||
int prevIndex = -1;
|
||||
|
||||
int[] tiles = {TileNameCode.AIR, TileNameCode.STONE, TileNameCode.DIRT, TileNameCode.GRASS};
|
||||
|
||||
for (int i = 0; i < nIslands; i++) {
|
||||
int currentIndex = random.nextInt(FloatingIslandsPreset.presets);
|
||||
int currentIndex = random.nextInt(FloatingIslandsPreset.PRESETS);
|
||||
while (currentIndex == prevIndex) {
|
||||
currentIndex = random.nextInt(FloatingIslandsPreset.presets);
|
||||
currentIndex = random.nextInt(FloatingIslandsPreset.PRESETS);
|
||||
}
|
||||
int[][] island = FloatingIslandsPreset.generatePreset(currentIndex, random);
|
||||
|
||||
@@ -902,8 +906,9 @@ public class MapGenerator {
|
||||
for (int j = 0; j < island.length; j++) {
|
||||
for (int k = 0; k < island[0].length; k++) {
|
||||
if (island[j][k] > 0) {
|
||||
map.getTerrainArray()[j + startingPosY][k + startingPosX]
|
||||
= (byte) island[j][k];
|
||||
map.setTileTerrain(k + startingPosX, j + startingPosY
|
||||
, tiles[island[j][k]]
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -975,6 +980,18 @@ public class MapGenerator {
|
||||
/* Post-process */
|
||||
|
||||
private static void fillOcean() {
|
||||
int[] thisSandList = {TileNameCode.SAND_BEACH, TileNameCode.SAND_BLACK, TileNameCode.SAND_GREEN
|
||||
, TileNameCode.SAND_BEACH, TileNameCode.SAND_BEACH, TileNameCode.SAND_BLACK
|
||||
};
|
||||
Random thisRand = new HQRNG(seed ^ random.nextLong());
|
||||
int thisSand = thisSandList[thisRand.nextInt(thisSandList.length)];
|
||||
|
||||
String thisSandStr = (thisSand == TileNameCode.SAND_BLACK) ? "black"
|
||||
: (thisSand == TileNameCode.SAND_GREEN) ? "green"
|
||||
: "white"
|
||||
;
|
||||
System.out.println("[MapGenerator] Beach sand type: " + thisSandStr);
|
||||
|
||||
for (int ix = 0; ix < OCEAN_WIDTH * 1.5; ix++) {
|
||||
//flooding
|
||||
if (ix < OCEAN_WIDTH) {
|
||||
@@ -1000,16 +1017,16 @@ public class MapGenerator {
|
||||
int terrainPoint = getTerrainHeightFromHeightMap(ix);
|
||||
|
||||
|
||||
map.setTileTerrain(ix, terrainPoint + iy, TileNameCode.SAND_BEACH);
|
||||
map.setTileTerrain(ix, terrainPoint + iy, thisSand);
|
||||
// clear grass and make the sheet thicker
|
||||
map.setTileTerrain(ix, terrainPoint + iy - 1, TileNameCode.SAND_BEACH);
|
||||
map.setTileTerrain(ix, terrainPoint + iy - 1, thisSand);
|
||||
}
|
||||
else if (worldOceanPosition == TYPE_OCEAN_RIGHT) {
|
||||
int terrainPoint = getTerrainHeightFromHeightMap(map.width - 1 - ix);
|
||||
|
||||
map.setTileTerrain(map.width - 1 - ix, terrainPoint + iy, TileNameCode.SAND_BEACH);
|
||||
map.setTileTerrain(map.width - 1 - ix, terrainPoint + iy, thisSand);
|
||||
// clear grass and make the sheet thicker
|
||||
map.setTileTerrain(map.width - 1 - ix, terrainPoint + iy - 1, TileNameCode.SAND_BEACH);
|
||||
map.setTileTerrain(map.width - 1 - ix, terrainPoint + iy - 1, thisSand);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -75,7 +75,7 @@ public class TilePropCodex {
|
||||
|
||||
prop.setOpacity((char) intVal(record, "opacity"));
|
||||
prop.setStrength(intVal(record, "strength"));
|
||||
prop.setDensity(intVal(record, "spcg"));
|
||||
prop.setDensity(intVal(record, "dsty"));
|
||||
prop.setLuminosity((char) intVal(record, "lumcolor"));
|
||||
prop.setDrop(intVal(record, "drop"));
|
||||
prop.setDropDamage(intVal(record, "ddmg"));
|
||||
|
||||
@@ -34,6 +34,7 @@
|
||||
|
||||
package com.jme3.math;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Random;
|
||||
|
||||
/**
|
||||
@@ -636,10 +637,10 @@ final public class FastMath {
|
||||
/**
|
||||
* Returns the determinant of a 4x4 matrix.
|
||||
*/
|
||||
public static float determinant(double m00, double m01, double m02,
|
||||
double m03, double m10, double m11, double m12, double m13,
|
||||
double m20, double m21, double m22, double m23, double m30,
|
||||
double m31, double m32, double m33) {
|
||||
public static float determinant(double m00, double m01, double m02, double m03,
|
||||
double m10, double m11, double m12, double m13,
|
||||
double m20, double m21, double m22, double m23,
|
||||
double m30, double m31, double m32, double m33) {
|
||||
|
||||
double det01 = m20 * m31 - m21 * m30;
|
||||
double det02 = m20 * m32 - m22 * m30;
|
||||
@@ -837,4 +838,16 @@ final public class FastMath {
|
||||
| ((((f & 0x7f800000) - 0x38000000) >> 13) & 0x7c00)
|
||||
| ((f >> 13) & 0x03ff));
|
||||
}
|
||||
|
||||
public static float min(float... f) {
|
||||
float[] sorted = f.clone();
|
||||
Arrays.sort(f.clone());
|
||||
return sorted[0];
|
||||
}
|
||||
|
||||
public static float max(float... f) {
|
||||
float[] sorted = f.clone();
|
||||
Arrays.sort(f.clone());
|
||||
return sorted[sorted.length - 1];
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user