mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-03-07 20:31:51 +09:00
Actor reference ID on debug window, RefID is now Int, added Japanese on help page
Former-commit-id: 3519b8746d611c4badd65f01644ba05e41d10d04 Former-commit-id: 45bb407c2d932e5d70aab9c9eb4f3ef55ce68d27
This commit is contained in:
Binary file not shown.
|
Before Width: | Height: | Size: 983 B After Width: | Height: | Size: 986 B |
@@ -1,14 +1,14 @@
|
||||
"STRING_ID";"IETF language tag(s) without dash";"enUS";"frFR";"esES";"deDE";"itIT";"ptBR";"ptPT";"ruRU";"elGR";"trTR";"daDK";"noNB";"svSE";"nlNL";"plPL";"fiFI";"jaJP";"zhCN";"zhTW";"koKR";"csCZ";"huHU";"roRO";"thTH";"bgBG";"heIL";"jakanaJP";"isIC"
|
||||
|
||||
"HELP_OTF_MAIN_1";;"Type “help slow” for the ways to make the game run faster.";"Tapez « help slow » si votre jeu fonctionne lentement.";;;;;;;;;;;;;;;;;;"게임이 느리게 돌아간다면 “help slow”를 입력해 보세요."
|
||||
"HELP_OTF_MAIN_2";;"Press PageUp/PageDown to scroll the messages.";"Appuyez sur PageUp/PageDown pour faire défiler les messages.";;;;;;;;;;;;;;;;;;"PageUp/PageDown 키를 사용해 메시지를 스크롤할 수 있습니다."
|
||||
"HELP_OTF_MAIN_3";;"Utility keys:";"Touches utilitaires:";;;;;;;;;;;;;;;;;;"기능 키:"
|
||||
"HELP_OTF_MAIN_4";;"• F3: basic information";"• F3: informations de base";;;;;;;;;;;;;;;;;;"• F3: 기본 정보"
|
||||
"HELP_OTF_MAIN_5";;"• F7: (debug) toggle light blending";"• F7: (déboguer) basculer fusion de lumière";;;;;;;;;;;;;;;;;;"• F7: (디버그용) 광원 블렌딩 켜고 끄기"
|
||||
"HELP_OTF_MAIN_6";;"• F8: toggle smooth lighting";"• F8: basculer éclairage lisse";;;;;;;;;;;;;;;;;;"• F8: 부드러운 광원 켜고 끄기"
|
||||
"HELP_OTF_MAIN_1";;"Type “help slow” for the ways to make the game run faster.";"Tapez « help slow » si votre jeu fonctionne lentement.";;;;;;;;;;;;;;;"ゲームの実行がおそければ「help slow」を入力してください。";;;"게임이 느리게 돌아간다면 “help slow”를 입력해 보세요."
|
||||
"HELP_OTF_MAIN_2";;"Press PageUp/PageDown to scroll the messages.";"Appuyez sur PageUp/PageDown pour faire défiler les messages.";;;;;;;;;;;;;;;"PageUp/PageDownを使ってメッセージのスクロールができます。";;;"PageUp/PageDown 키를 사용해 메시지를 스크롤할 수 있습니다."
|
||||
"HELP_OTF_MAIN_3";;"Utility keys:";"Touches utilitaires:";;;;;;;;;;;;;;;"技能キー";;;"기능 키:"
|
||||
"HELP_OTF_MAIN_4";;"• F3: basic information";"• F3: informations de base";;;;;;;;;;;;;;;"• F3: 基本的な情報";;;"• F3: 기본 정보"
|
||||
"HELP_OTF_MAIN_5";;"• F7: (debug) toggle light blending";"• F7: (déboguer) basculer fusion de lumière";;;;;;;;;;;;;;;"• F7: (デバッグ)光源のブレンドON/OFF";;;"• F7: (디버그용) 광원 블렌딩 켜고 끄기"
|
||||
"HELP_OTF_MAIN_6";;"• F8: toggle smooth lighting";"• F8: basculer éclairage lisse";;;;;;;;;;;;;;;"• F8: すべすべの光源ON/OFF";;;"• F8: 부드러운 광원 켜고 끄기"
|
||||
|
||||
"HELP_OTF_SLOW_1";;"If your game runs slowly:";"Si votre jeu tourne lentement :";;;;;;;;;;;;;;;;;"";"게임이 느리게 돌아간다면"
|
||||
"HELP_OTF_SLOW_2";;"• Reset screen zoom to 1.";"• Réinitialisez le zoom de l‘écran à 1.";;;;;;;;;;;;;;;;;;"• 화면 줌을 1로 돌려주세요. "
|
||||
"HELP_OTF_SLOW_3";;"• Turn off the basic information window.";"• Désactivez la fenêtre d‘informations.";;;;;;;;;;;;;;;;;;"• 기본 정보 창을 꺼 주세요."
|
||||
"HELP_OTF_SLOW_4";;"• Turn off smooth lighting. You can do it now by pressing F8.";"• Désactivez éclairage lisse en utilisant F8.";;;;;;;;;;;;;;;;;;"• 부드러운 광원 효과를 꺼 주세요. F8을 사용할 수 있습니다."
|
||||
"HELP_OTF_SLOW_1";;"If your game runs slowly:";"Si votre jeu tourne lentement :";;;;;;;;;;;;;;;"ゲームの実行がおそければ";;;"게임이 느리게 돌아간다면"
|
||||
"HELP_OTF_SLOW_2";;"• Reset screen zoom to 1.";"• Réinitialisez le zoom de l‘écran à 1.";;;;;;;;;;;;;;;"• スクリーンのズームを1倍にリセットしてください。";;;"• 화면 줌을 1로 돌려주세요. "
|
||||
"HELP_OTF_SLOW_3";;"• Close the basic information window.";"• Désactivez la fenêtre d‘informations.";;;;;;;;;;;;;;;"• 情報ウィンドウをとじてください。";;;"• 기본 정보 창을 꺼 주세요."
|
||||
"HELP_OTF_SLOW_4";;"• Turn off smooth lighting. You can do it now by pressing F8.";"• Désactivez éclairage lisse en utilisant F8.";;;;;;;;;;;;;;;"• F8で、すべすべの光源をオフしてください。";;;"• 부드러운 광원 효과를 꺼 주세요. F8을 사용할 수 있습니다."
|
||||
|
||||
|
||||
|
@@ -156,9 +156,7 @@ constructor() : Font {
|
||||
|
||||
override fun getLineHeight() = H
|
||||
|
||||
override fun drawString(x: Float, y: Float, s: String) {
|
||||
drawString(x, y, s, Color.white)
|
||||
}
|
||||
override fun drawString(x: Float, y: Float, s: String) = drawString(x, y, s, Color.white)
|
||||
|
||||
override fun drawString(x: Float, y: Float, s: String, color: Color) {
|
||||
GL11.glEnable(GL11.GL_BLEND)
|
||||
@@ -364,10 +362,13 @@ constructor() : Font {
|
||||
)*/
|
||||
sheetKey[prevInstance].getSubImage(sheetX, sheetY).draw(
|
||||
Math.round(x + getWidthSubstr(s, i + 1) - glyphW).toFloat() // Interchar: pull punct right next to hangul to the left
|
||||
+ if (i > 0 && isHangul(s[i - 1])) -3f else 0f,
|
||||
+ if (i > 0 && isHangul(s[i - 1])) -3f
|
||||
else 0f,
|
||||
|
||||
Math.round(y).toFloat() + (if (prevInstance == SHEET_CJK_PUNCT) -1
|
||||
else if (prevInstance == SHEET_FW_UNI) (H - H_HANGUL) / 2
|
||||
else 0).toFloat(),
|
||||
|
||||
color
|
||||
)
|
||||
}
|
||||
|
||||
50
src/net/torvald/imagefont/SmallNumbers.kt
Normal file
50
src/net/torvald/imagefont/SmallNumbers.kt
Normal file
@@ -0,0 +1,50 @@
|
||||
package net.torvald.imagefont
|
||||
|
||||
import org.newdawn.slick.Color
|
||||
import org.newdawn.slick.Font
|
||||
import org.newdawn.slick.SpriteSheet
|
||||
|
||||
/**
|
||||
* Created by minjaesong on 16-04-15.
|
||||
*/
|
||||
class SmallNumbers : Font {
|
||||
|
||||
internal val fontSheet: SpriteSheet
|
||||
|
||||
internal val W = 8
|
||||
internal val H = 8
|
||||
|
||||
private val chars = arrayOf('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '-')
|
||||
|
||||
init {
|
||||
fontSheet = SpriteSheet("./res/graphics/fonts/numeric_small.png", W, H)
|
||||
}
|
||||
|
||||
override fun getHeight(str: String): Int = H
|
||||
|
||||
override fun getWidth(str: String): Int = str.length * W
|
||||
|
||||
override fun getLineHeight(): Int = H
|
||||
|
||||
override fun drawString(x: Float, y: Float, text: String) = drawString(x, y, text, Color.white)
|
||||
|
||||
override fun drawString(x: Float, y: Float, text: String, col: Color) {
|
||||
for (i in 0..text.length - 1) {
|
||||
val index = charToSpriteNum(text.codePointAt(i))
|
||||
if (index != null) {
|
||||
fontSheet.getSubImage(index, 0).draw(
|
||||
x + i * W, y, col
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun drawString(x: Float, y: Float, text: String, col: Color, startIndex: Int, endIndex: Int) {
|
||||
throw UnsupportedOperationException()
|
||||
}
|
||||
|
||||
private fun charToSpriteNum(ch: Int): Int? =
|
||||
if (ch in '0'.toInt()..'9'.toInt()) ch - '0'.toInt()
|
||||
else if (ch == '-'.toInt()) 10
|
||||
else null
|
||||
}
|
||||
@@ -172,18 +172,20 @@ constructor() : BasicGameState() {
|
||||
override fun render(gc: GameContainer, sbg: StateBasedGame, g: Graphics) {
|
||||
setBlendNormal()
|
||||
|
||||
// determine if lightmap blending should be done
|
||||
Terrarum.gameConfig["smoothlighting"] = KeyToggler.isOn(KEY_LIGHTMAP_SMOOTH)
|
||||
|
||||
// set antialias as on
|
||||
if (!g.isAntiAlias) g.isAntiAlias = true
|
||||
|
||||
drawSkybox(g)
|
||||
|
||||
// compensate for zoom. UIs have to be treated specially! (see UIHandler)
|
||||
g.translate(
|
||||
-MapCamera.cameraX * screenZoom, -MapCamera.cameraY * screenZoom)
|
||||
g.translate(-MapCamera.cameraX * screenZoom, -MapCamera.cameraY * screenZoom)
|
||||
|
||||
MapCamera.renderBehind(gc, g)
|
||||
|
||||
// draw actors
|
||||
actorContainer.forEach { actor -> if (actor is Visible) actor.drawBody(gc, g) }
|
||||
player.drawBody(gc, g)
|
||||
|
||||
@@ -201,9 +203,27 @@ constructor() : BasicGameState() {
|
||||
|
||||
setBlendNormal()
|
||||
|
||||
// draw actor glows
|
||||
actorContainer.forEach { actor -> if (actor is Glowing) actor.drawGlow(gc, g) }
|
||||
player.drawGlow(gc, g)
|
||||
|
||||
// draw reference ID if debugWindow is open
|
||||
if (debugWindow.isVisible) {
|
||||
actorContainer.forEach { actor ->
|
||||
if (actor is Visible) {
|
||||
g.color = Color.white
|
||||
g.font = Terrarum.smallNumbers
|
||||
g.drawString(
|
||||
actor.referenceID.toString(),
|
||||
actor.hitbox.posX,
|
||||
actor.hitbox.pointedY + 4
|
||||
)
|
||||
g.font = Terrarum.gameFont
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// draw UIs
|
||||
uiContainer.forEach { ui -> ui.render(gc, g) }
|
||||
debugWindow.render(gc, g)
|
||||
consoleHandler.render(gc, g)
|
||||
@@ -287,14 +307,14 @@ constructor() : BasicGameState() {
|
||||
/**
|
||||
* actorContainer extensions
|
||||
*/
|
||||
fun hasActor(ID: Long): Boolean {
|
||||
fun hasActor(ID: Int): Boolean {
|
||||
for (actor in actorContainer) {
|
||||
if (actor.referenceID == ID) return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
fun removeActor(ID: Long) {
|
||||
fun removeActor(ID: Int) {
|
||||
for (actor in actorContainer) {
|
||||
if (actor.referenceID == ID)
|
||||
actorContainer.remove(actor)
|
||||
@@ -307,7 +327,7 @@ constructor() : BasicGameState() {
|
||||
return true
|
||||
}
|
||||
|
||||
fun getActor(ID: Long): Actor {
|
||||
fun getActor(ID: Int): Actor {
|
||||
for (actor in actorContainer) {
|
||||
if (actor.referenceID == ID)
|
||||
return actor
|
||||
|
||||
@@ -3,6 +3,7 @@ package net.torvald.terrarum
|
||||
import net.torvald.imagefont.GameFontWhite
|
||||
import net.torvald.JsonFetcher
|
||||
import net.torvald.JsonWriter
|
||||
import net.torvald.imagefont.SmallNumbers
|
||||
import org.lwjgl.input.Controllers
|
||||
import org.lwjgl.opengl.GL11
|
||||
import org.newdawn.slick.*
|
||||
@@ -46,6 +47,7 @@ constructor(gamename: String) : StateBasedGame(gamename) {
|
||||
@Throws(SlickException::class)
|
||||
override fun initStatesList(gc: GameContainer) {
|
||||
gameFont = GameFontWhite()
|
||||
smallNumbers = SmallNumbers()
|
||||
|
||||
hasController = gc.input.controllerCount > 0
|
||||
if (hasController) {
|
||||
@@ -100,6 +102,9 @@ constructor(gamename: String) : StateBasedGame(gamename) {
|
||||
var gameLocale = "" // locale override
|
||||
|
||||
lateinit var gameFont: Font
|
||||
private set
|
||||
lateinit var smallNumbers: Font
|
||||
private set
|
||||
|
||||
val SCENE_ID_HOME = 1
|
||||
val SCENE_ID_GAME = 3
|
||||
|
||||
@@ -11,9 +11,9 @@ interface Actor {
|
||||
|
||||
/**
|
||||
* Valid RefID is equal to or greater than 32768.
|
||||
* @return Reference ID. (32768-0x7FFF_FFFF_FFFF_FFFF)
|
||||
* @return Reference ID. (32768-0xFFFF_FFFF)
|
||||
*/
|
||||
var referenceID: Long
|
||||
var referenceID: Int
|
||||
|
||||
var actorValue: ActorValue
|
||||
}
|
||||
@@ -23,7 +23,7 @@ class ActorInventory() {
|
||||
/**
|
||||
* <ReferenceID, Amounts>
|
||||
*/
|
||||
private val itemList: HashMap<Long, Int> = HashMap()
|
||||
private val itemList: HashMap<Int, Int> = HashMap()
|
||||
|
||||
/**
|
||||
* Default constructor with no encumbrance.
|
||||
@@ -74,7 +74,7 @@ class ActorInventory() {
|
||||
* Get reference to the itemList
|
||||
* @return
|
||||
*/
|
||||
fun getItemList(): Map<Long, Int>? {
|
||||
fun getItemList(): Map<Int, Int>? {
|
||||
return itemList
|
||||
}
|
||||
|
||||
@@ -83,8 +83,8 @@ class ActorInventory() {
|
||||
* @return
|
||||
*/
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
fun getCopyOfItemList(): Map<Long, Int>? {
|
||||
return itemList.clone() as Map<Long, Int>
|
||||
fun getCopyOfItemList(): Map<Int, Int>? {
|
||||
return itemList.clone() as Map<Int, Int>
|
||||
}
|
||||
|
||||
fun getTotalWeight(): Float {
|
||||
|
||||
@@ -53,11 +53,11 @@ open class ActorWithBody constructor() : Actor, Visible, Glowing {
|
||||
internal var baseSpriteWidth: Int = 0
|
||||
internal var baseSpriteHeight: Int = 0
|
||||
|
||||
override var referenceID: Long = 0L
|
||||
override var referenceID: Int = 0
|
||||
/**
|
||||
* Positions: top-left point
|
||||
*/
|
||||
val hitbox = Hitbox(0f,0f,0f,0f)
|
||||
override val hitbox = Hitbox(0f,0f,0f,0f)
|
||||
@Transient val nextHitbox = Hitbox(0f,0f,0f,0f)
|
||||
|
||||
/**
|
||||
@@ -137,7 +137,7 @@ open class ActorWithBody constructor() : Actor, Visible, Glowing {
|
||||
|
||||
init {
|
||||
do {
|
||||
referenceID = HQRNG().nextLong() // set new ID
|
||||
referenceID = HQRNG().nextInt() // set new ID
|
||||
} while (Terrarum.game.hasActor(referenceID)) // check for collision
|
||||
|
||||
map = Terrarum.game.map
|
||||
|
||||
@@ -15,7 +15,7 @@ open class NPCIntelligentBase : ActorWithBody()
|
||||
, AIControlled, Pocketed, CanBeAnItem, Factionable, LandHolder {
|
||||
|
||||
override var itemData: InventoryItem = object : InventoryItem {
|
||||
override var itemID = HQRNG().nextLong()
|
||||
override var itemID = HQRNG().nextInt()
|
||||
|
||||
override var mass: Float
|
||||
get() = actorValue.get("mass") as Float
|
||||
@@ -55,7 +55,7 @@ open class NPCIntelligentBase : ActorWithBody()
|
||||
|
||||
private val factionSet = HashSet<Faction>()
|
||||
|
||||
override var referenceID: Long = HQRNG().nextLong()
|
||||
override var referenceID: Int = HQRNG().nextInt()
|
||||
|
||||
override var faction: HashSet<Faction> = HashSet()
|
||||
|
||||
|
||||
@@ -79,7 +79,7 @@ class Player : ActorWithBody, Controllable, Pocketed, Factionable, Luminous, Lan
|
||||
@Transient internal const val WALK_STOP_ACCEL = 0.32f
|
||||
@Transient internal const val WALK_ACCEL_BASE = 0.32f
|
||||
|
||||
@Transient const val PLAYER_REF_ID: Long = 0x51621D
|
||||
@Transient const val PLAYER_REF_ID: Int = 0x51621D
|
||||
@Transient const val BASE_HEIGHT = 40
|
||||
}
|
||||
|
||||
|
||||
@@ -7,6 +7,8 @@ import org.newdawn.slick.Graphics
|
||||
* Created by minjaesong on 16-03-14.
|
||||
*/
|
||||
interface Visible {
|
||||
val hitbox: Hitbox
|
||||
|
||||
fun drawBody(gc: GameContainer, g: Graphics)
|
||||
|
||||
fun updateBodySprite(gc: GameContainer, delta: Int)
|
||||
|
||||
@@ -12,7 +12,7 @@ interface InventoryItem {
|
||||
* 4097-32767: Various items
|
||||
* >=32768: Actor RefID
|
||||
*/
|
||||
var itemID: Long
|
||||
var itemID: Int
|
||||
|
||||
/**
|
||||
* Weight of the item, Float
|
||||
|
||||
@@ -8,12 +8,12 @@ import org.newdawn.slick.GameContainer
|
||||
*/
|
||||
class TileAsItem(tileNum: Int) : InventoryItem {
|
||||
|
||||
override var itemID: Long = -1
|
||||
override var itemID: Int = 0
|
||||
override var mass: Float = 0f
|
||||
override var scale: Float = 1f
|
||||
|
||||
init {
|
||||
itemID = tileNum.toLong()
|
||||
itemID = tileNum
|
||||
mass = TilePropCodex.getProp(tileNum).density / 1000f
|
||||
}
|
||||
|
||||
|
||||
@@ -29,9 +29,9 @@ object ItemPropCodex {
|
||||
|
||||
}
|
||||
|
||||
fun getItem(code: Long): InventoryItem {
|
||||
fun getItem(code: Int): InventoryItem {
|
||||
if (code < ITEM_UNIQUE_MAX)
|
||||
return itemCodex[(code and 0xFFFFFFFF).toInt()]
|
||||
return itemCodex[code]
|
||||
else {
|
||||
for (actor in Terrarum.game.actorContainer) {
|
||||
if (actor is CanBeAnItem && actor.referenceID == code)
|
||||
|
||||
Reference in New Issue
Block a user