diff --git a/out/production/Terrarum_renewed/com/Torvald/ColourUtil/HSV.class b/out/production/Terrarum_renewed/com/Torvald/ColourUtil/HSV.class index 61ea50dcd..8b4733e08 100644 Binary files a/out/production/Terrarum_renewed/com/Torvald/ColourUtil/HSV.class and b/out/production/Terrarum_renewed/com/Torvald/ColourUtil/HSV.class differ diff --git a/out/production/Terrarum_renewed/com/Torvald/ColourUtil/HSVUtil.class b/out/production/Terrarum_renewed/com/Torvald/ColourUtil/HSVUtil.class new file mode 100644 index 000000000..b43ccff97 Binary files /dev/null and b/out/production/Terrarum_renewed/com/Torvald/ColourUtil/HSVUtil.class differ diff --git a/out/production/Terrarum_renewed/com/Torvald/ImageFont/GameFontBase.class b/out/production/Terrarum_renewed/com/Torvald/ImageFont/GameFontBase.class index cf9b93492..f04354968 100644 Binary files a/out/production/Terrarum_renewed/com/Torvald/ImageFont/GameFontBase.class and b/out/production/Terrarum_renewed/com/Torvald/ImageFont/GameFontBase.class differ diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/Actors/ActorWithBody.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/Actors/ActorWithBody.class index 455a35f6d..d24eaab99 100644 Binary files a/out/production/Terrarum_renewed/com/Torvald/Terrarum/Actors/ActorWithBody.class and b/out/production/Terrarum_renewed/com/Torvald/Terrarum/Actors/ActorWithBody.class differ diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/MapDrawer/LightmapLantern.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/MapDrawer/LightmapLantern.class index 777855c05..166518efd 100644 Binary files a/out/production/Terrarum_renewed/com/Torvald/Terrarum/MapDrawer/LightmapLantern.class and b/out/production/Terrarum_renewed/com/Torvald/Terrarum/MapDrawer/LightmapLantern.class differ diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/MapDrawer/LightmapRenderer.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/MapDrawer/LightmapRenderer.class index d486ed244..ad27b36bb 100644 Binary files a/out/production/Terrarum_renewed/com/Torvald/Terrarum/MapDrawer/LightmapRenderer.class and b/out/production/Terrarum_renewed/com/Torvald/Terrarum/MapDrawer/LightmapRenderer.class differ diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/MapDrawer/MapCamera.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/MapDrawer/MapCamera.class index 0d100de8b..6fa4b2f78 100644 Binary files a/out/production/Terrarum_renewed/com/Torvald/Terrarum/MapDrawer/MapCamera.class and b/out/production/Terrarum_renewed/com/Torvald/Terrarum/MapDrawer/MapCamera.class differ diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/MapDrawer/MapDrawer.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/MapDrawer/MapDrawer.class index f262d126c..3fb634e00 100644 Binary files a/out/production/Terrarum_renewed/com/Torvald/Terrarum/MapDrawer/MapDrawer.class and b/out/production/Terrarum_renewed/com/Torvald/Terrarum/MapDrawer/MapDrawer.class differ diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/MapGenerator/FloatingIslandsPreset.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/MapGenerator/FloatingIslandsPreset.class index ab7e26b6b..0348ac082 100644 Binary files a/out/production/Terrarum_renewed/com/Torvald/Terrarum/MapGenerator/FloatingIslandsPreset.class and b/out/production/Terrarum_renewed/com/Torvald/Terrarum/MapGenerator/FloatingIslandsPreset.class differ diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/MapGenerator/MapGenerator.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/MapGenerator/MapGenerator.class index 5ea16d100..59eb50be6 100644 Binary files a/out/production/Terrarum_renewed/com/Torvald/Terrarum/MapGenerator/MapGenerator.class and b/out/production/Terrarum_renewed/com/Torvald/Terrarum/MapGenerator/MapGenerator.class differ diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/TileProperties/TileNameCode.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/TileProperties/TileNameCode.class index 3df30688f..1133f9e9a 100644 Binary files a/out/production/Terrarum_renewed/com/Torvald/Terrarum/TileProperties/TileNameCode.class and b/out/production/Terrarum_renewed/com/Torvald/Terrarum/TileProperties/TileNameCode.class differ diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/TileProperties/TileProp.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/TileProperties/TileProp.class index 75908862b..15189cb87 100644 Binary files a/out/production/Terrarum_renewed/com/Torvald/Terrarum/TileProperties/TileProp.class and b/out/production/Terrarum_renewed/com/Torvald/Terrarum/TileProperties/TileProp.class differ diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/TileProperties/TilePropCodex.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/TileProperties/TilePropCodex.class index 8ae39373c..f7663622c 100644 Binary files a/out/production/Terrarum_renewed/com/Torvald/Terrarum/TileProperties/TilePropCodex.class and b/out/production/Terrarum_renewed/com/Torvald/Terrarum/TileProperties/TilePropCodex.class differ diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/TileProperties/propdata.csv b/out/production/Terrarum_renewed/com/Torvald/Terrarum/TileProperties/propdata.csv index 4139d67a2..b520a8bb3 100644 --- a/out/production/Terrarum_renewed/com/Torvald/Terrarum/TileProperties/propdata.csv +++ b/out/production/Terrarum_renewed/com/Torvald/Terrarum/TileProperties/propdata.csv @@ -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. diff --git a/out/production/Terrarum_renewed/com/jme3/math/FastMath.class b/out/production/Terrarum_renewed/com/jme3/math/FastMath.class index 4ac4affc4..3f5728389 100644 Binary files a/out/production/Terrarum_renewed/com/jme3/math/FastMath.class and b/out/production/Terrarum_renewed/com/jme3/math/FastMath.class differ diff --git a/res/graphics/fonts/han_johab.png b/res/graphics/fonts/han_johab.png index aaac3480f..11bc3ca03 100644 Binary files a/res/graphics/fonts/han_johab.png and b/res/graphics/fonts/han_johab.png differ diff --git a/res/locales/polyglot.csv b/res/locales/polyglot.csv index 121e6ed11..f729ac9bd 100644 --- a/res/locales/polyglot.csv +++ b/res/locales/polyglot.csv @@ -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";"อีเมล";"Имейл";"כתובת-דואר" diff --git a/src/com/Torvald/ColourUtil/HSV.java b/src/com/Torvald/ColourUtil/HSV.java index fc30134e4..c4cc944eb 100644 --- a/src/com/Torvald/ColourUtil/HSV.java +++ b/src/com/Torvald/ColourUtil/HSV.java @@ -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; + } } diff --git a/src/com/Torvald/ColourUtil/HSVUtil.java b/src/com/Torvald/ColourUtil/HSVUtil.java new file mode 100644 index 000000000..14fcb2a87 --- /dev/null +++ b/src/com/Torvald/ColourUtil/HSVUtil.java @@ -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); + } + +} diff --git a/src/com/Torvald/ImageFont/GameFontBase.java b/src/com/Torvald/ImageFont/GameFontBase.java index de454e1c3..a41307476 100644 --- a/src/com/Torvald/ImageFont/GameFontBase.java +++ b/src/com/Torvald/ImageFont/GameFontBase.java @@ -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); diff --git a/src/com/Torvald/Terrarum/Actors/ActorWithBody.java b/src/com/Torvald/Terrarum/Actors/ActorWithBody.java index 37fe27fa7..36259a6db 100644 --- a/src/com/Torvald/Terrarum/Actors/ActorWithBody.java +++ b/src/com/Torvald/Terrarum/Actors/ActorWithBody.java @@ -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; diff --git a/src/com/Torvald/Terrarum/MapGenerator/FloatingIslandsPreset.java b/src/com/Torvald/Terrarum/MapGenerator/FloatingIslandsPreset.java index 49fe68071..72b7b2aee 100644 --- a/src/com/Torvald/Terrarum/MapGenerator/FloatingIslandsPreset.java +++ b/src/com/Torvald/Terrarum/MapGenerator/FloatingIslandsPreset.java @@ -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); } diff --git a/src/com/Torvald/Terrarum/MapGenerator/MapGenerator.java b/src/com/Torvald/Terrarum/MapGenerator/MapGenerator.java index 8a0b2db40..4cdf769a0 100644 --- a/src/com/Torvald/Terrarum/MapGenerator/MapGenerator.java +++ b/src/com/Torvald/Terrarum/MapGenerator/MapGenerator.java @@ -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); } } } diff --git a/src/com/Torvald/Terrarum/TileProperties/TilePropCodex.java b/src/com/Torvald/Terrarum/TileProperties/TilePropCodex.java index b418a5ab0..5729dc5f5 100644 --- a/src/com/Torvald/Terrarum/TileProperties/TilePropCodex.java +++ b/src/com/Torvald/Terrarum/TileProperties/TilePropCodex.java @@ -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")); diff --git a/src/com/jme3/math/FastMath.java b/src/com/jme3/math/FastMath.java index 46e1bce8e..c9d5a643e 100644 --- a/src/com/jme3/math/FastMath.java +++ b/src/com/jme3/math/FastMath.java @@ -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]; + } }