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:
Song Minjae
2016-04-16 01:03:19 +09:00
parent f0d2415906
commit 7c6d232ba6
15 changed files with 114 additions and 36 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 983 B

After

Width:  |  Height:  |  Size: 986 B

View File

@@ -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" "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_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 키를 사용해 메시지를 스크롤할 수 있습니다." "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_3";;"Utility keys:";"Touches utilitaires:";;;;;;;;;;;;;;;"技能キー";;;"기능 키:"
"HELP_OTF_MAIN_4";;"• F3: basic information";"• F3: informations de base";;;;;;;;;;;;;;;;;;"• F3: 기본 정보" "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: (디버그용) 광원 블렌딩 켜고 끄기" "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: 부드러운 광원 켜고 끄기" "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_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_2";;"• Reset screen zoom to 1.";"• Réinitialisez le zoom de lécran à 1.";;;;;;;;;;;;;;;"• スクリーンのズームを1倍にリセットしてください。";;;"• 화면 줌을 1로 돌려주세요. "
"HELP_OTF_SLOW_3";;"• Turn off the basic information window.";"• Désactivez la fenêtre dinformations.";;;;;;;;;;;;;;;;;;"• 기본 정보 창을 꺼 주세요." "HELP_OTF_SLOW_3";;"• Close the basic information window.";"• Désactivez la fenêtre dinformations.";;;;;;;;;;;;;;;"• 情報ウィンドウをとじてください。";;;"• 기본 정보 창을 꺼 주세요."
"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_4";;"• Turn off smooth lighting. You can do it now by pressing F8.";"• Désactivez éclairage lisse en utilisant F8.";;;;;;;;;;;;;;;"• F8で、すべすべの光源をオフしてください。";;;"• 부드러운 광원 효과를 꺼 주세요. F8을 사용할 수 있습니다."
1 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
2 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”를 입력해 보세요.
3 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 키를 사용해 메시지를 스크롤할 수 있습니다.
4 HELP_OTF_MAIN_3 Utility keys: Touches utilitaires: 技能キー 기능 키:
5 HELP_OTF_MAIN_4 • F3: basic information • F3: informations de base • F3: 基本的な情報 • F3: 기본 정보
6 HELP_OTF_MAIN_5 • F7: (debug) toggle light blending • F7: (déboguer) basculer fusion de lumière • F7: (デバッグ)光源のブレンドON/OFF • F7: (디버그용) 광원 블렌딩 켜고 끄기
7 HELP_OTF_MAIN_6 • F8: toggle smooth lighting • F8: basculer éclairage lisse • F8: すべすべの光源ON/OFF • F8: 부드러운 광원 켜고 끄기
8 HELP_OTF_SLOW_1 If your game runs slowly: Si votre jeu tourne lentement : ゲームの実行がおそければ 게임이 느리게 돌아간다면
9 HELP_OTF_SLOW_2 • Reset screen zoom to 1. • Réinitialisez le zoom de l‘écran à 1. • スクリーンのズームを1倍にリセットしてください。 • 화면 줌을 1로 돌려주세요.
10 HELP_OTF_SLOW_3 • Turn off the basic information window. • Close the basic information window. • Désactivez la fenêtre d‘informations. • 情報ウィンドウをとじてください。 • 기본 정보 창을 꺼 주세요.
11 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을 사용할 수 있습니다.
12
13
14

View File

@@ -156,9 +156,7 @@ constructor() : Font {
override fun getLineHeight() = H override fun getLineHeight() = H
override fun drawString(x: Float, y: Float, s: String) { override fun drawString(x: Float, y: Float, s: String) = drawString(x, y, s, Color.white)
drawString(x, y, s, Color.white)
}
override fun drawString(x: Float, y: Float, s: String, color: Color) { override fun drawString(x: Float, y: Float, s: String, color: Color) {
GL11.glEnable(GL11.GL_BLEND) GL11.glEnable(GL11.GL_BLEND)
@@ -364,10 +362,13 @@ constructor() : Font {
)*/ )*/
sheetKey[prevInstance].getSubImage(sheetX, sheetY).draw( 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 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 Math.round(y).toFloat() + (if (prevInstance == SHEET_CJK_PUNCT) -1
else if (prevInstance == SHEET_FW_UNI) (H - H_HANGUL) / 2 else if (prevInstance == SHEET_FW_UNI) (H - H_HANGUL) / 2
else 0).toFloat(), else 0).toFloat(),
color color
) )
} }

View 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
}

View File

@@ -172,18 +172,20 @@ constructor() : BasicGameState() {
override fun render(gc: GameContainer, sbg: StateBasedGame, g: Graphics) { override fun render(gc: GameContainer, sbg: StateBasedGame, g: Graphics) {
setBlendNormal() setBlendNormal()
// determine if lightmap blending should be done
Terrarum.gameConfig["smoothlighting"] = KeyToggler.isOn(KEY_LIGHTMAP_SMOOTH) Terrarum.gameConfig["smoothlighting"] = KeyToggler.isOn(KEY_LIGHTMAP_SMOOTH)
// set antialias as on
if (!g.isAntiAlias) g.isAntiAlias = true if (!g.isAntiAlias) g.isAntiAlias = true
drawSkybox(g) drawSkybox(g)
// compensate for zoom. UIs have to be treated specially! (see UIHandler) // compensate for zoom. UIs have to be treated specially! (see UIHandler)
g.translate( g.translate(-MapCamera.cameraX * screenZoom, -MapCamera.cameraY * screenZoom)
-MapCamera.cameraX * screenZoom, -MapCamera.cameraY * screenZoom)
MapCamera.renderBehind(gc, g) MapCamera.renderBehind(gc, g)
// draw actors
actorContainer.forEach { actor -> if (actor is Visible) actor.drawBody(gc, g) } actorContainer.forEach { actor -> if (actor is Visible) actor.drawBody(gc, g) }
player.drawBody(gc, g) player.drawBody(gc, g)
@@ -201,9 +203,27 @@ constructor() : BasicGameState() {
setBlendNormal() setBlendNormal()
// draw actor glows
actorContainer.forEach { actor -> if (actor is Glowing) actor.drawGlow(gc, g) } actorContainer.forEach { actor -> if (actor is Glowing) actor.drawGlow(gc, g) }
player.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) } uiContainer.forEach { ui -> ui.render(gc, g) }
debugWindow.render(gc, g) debugWindow.render(gc, g)
consoleHandler.render(gc, g) consoleHandler.render(gc, g)
@@ -287,14 +307,14 @@ constructor() : BasicGameState() {
/** /**
* actorContainer extensions * actorContainer extensions
*/ */
fun hasActor(ID: Long): Boolean { fun hasActor(ID: Int): Boolean {
for (actor in actorContainer) { for (actor in actorContainer) {
if (actor.referenceID == ID) return true if (actor.referenceID == ID) return true
} }
return false return false
} }
fun removeActor(ID: Long) { fun removeActor(ID: Int) {
for (actor in actorContainer) { for (actor in actorContainer) {
if (actor.referenceID == ID) if (actor.referenceID == ID)
actorContainer.remove(actor) actorContainer.remove(actor)
@@ -307,7 +327,7 @@ constructor() : BasicGameState() {
return true return true
} }
fun getActor(ID: Long): Actor { fun getActor(ID: Int): Actor {
for (actor in actorContainer) { for (actor in actorContainer) {
if (actor.referenceID == ID) if (actor.referenceID == ID)
return actor return actor

View File

@@ -3,6 +3,7 @@ package net.torvald.terrarum
import net.torvald.imagefont.GameFontWhite import net.torvald.imagefont.GameFontWhite
import net.torvald.JsonFetcher import net.torvald.JsonFetcher
import net.torvald.JsonWriter import net.torvald.JsonWriter
import net.torvald.imagefont.SmallNumbers
import org.lwjgl.input.Controllers import org.lwjgl.input.Controllers
import org.lwjgl.opengl.GL11 import org.lwjgl.opengl.GL11
import org.newdawn.slick.* import org.newdawn.slick.*
@@ -46,6 +47,7 @@ constructor(gamename: String) : StateBasedGame(gamename) {
@Throws(SlickException::class) @Throws(SlickException::class)
override fun initStatesList(gc: GameContainer) { override fun initStatesList(gc: GameContainer) {
gameFont = GameFontWhite() gameFont = GameFontWhite()
smallNumbers = SmallNumbers()
hasController = gc.input.controllerCount > 0 hasController = gc.input.controllerCount > 0
if (hasController) { if (hasController) {
@@ -100,6 +102,9 @@ constructor(gamename: String) : StateBasedGame(gamename) {
var gameLocale = "" // locale override var gameLocale = "" // locale override
lateinit var gameFont: Font lateinit var gameFont: Font
private set
lateinit var smallNumbers: Font
private set
val SCENE_ID_HOME = 1 val SCENE_ID_HOME = 1
val SCENE_ID_GAME = 3 val SCENE_ID_GAME = 3

View File

@@ -11,9 +11,9 @@ interface Actor {
/** /**
* Valid RefID is equal to or greater than 32768. * 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 var actorValue: ActorValue
} }

View File

@@ -23,7 +23,7 @@ class ActorInventory() {
/** /**
* <ReferenceID, Amounts> * <ReferenceID, Amounts>
*/ */
private val itemList: HashMap<Long, Int> = HashMap() private val itemList: HashMap<Int, Int> = HashMap()
/** /**
* Default constructor with no encumbrance. * Default constructor with no encumbrance.
@@ -74,7 +74,7 @@ class ActorInventory() {
* Get reference to the itemList * Get reference to the itemList
* @return * @return
*/ */
fun getItemList(): Map<Long, Int>? { fun getItemList(): Map<Int, Int>? {
return itemList return itemList
} }
@@ -83,8 +83,8 @@ class ActorInventory() {
* @return * @return
*/ */
@Suppress("UNCHECKED_CAST") @Suppress("UNCHECKED_CAST")
fun getCopyOfItemList(): Map<Long, Int>? { fun getCopyOfItemList(): Map<Int, Int>? {
return itemList.clone() as Map<Long, Int> return itemList.clone() as Map<Int, Int>
} }
fun getTotalWeight(): Float { fun getTotalWeight(): Float {

View File

@@ -53,11 +53,11 @@ open class ActorWithBody constructor() : Actor, Visible, Glowing {
internal var baseSpriteWidth: Int = 0 internal var baseSpriteWidth: Int = 0
internal var baseSpriteHeight: Int = 0 internal var baseSpriteHeight: Int = 0
override var referenceID: Long = 0L override var referenceID: Int = 0
/** /**
* Positions: top-left point * 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) @Transient val nextHitbox = Hitbox(0f,0f,0f,0f)
/** /**
@@ -137,7 +137,7 @@ open class ActorWithBody constructor() : Actor, Visible, Glowing {
init { init {
do { do {
referenceID = HQRNG().nextLong() // set new ID referenceID = HQRNG().nextInt() // set new ID
} while (Terrarum.game.hasActor(referenceID)) // check for collision } while (Terrarum.game.hasActor(referenceID)) // check for collision
map = Terrarum.game.map map = Terrarum.game.map

View File

@@ -15,7 +15,7 @@ open class NPCIntelligentBase : ActorWithBody()
, AIControlled, Pocketed, CanBeAnItem, Factionable, LandHolder { , AIControlled, Pocketed, CanBeAnItem, Factionable, LandHolder {
override var itemData: InventoryItem = object : InventoryItem { override var itemData: InventoryItem = object : InventoryItem {
override var itemID = HQRNG().nextLong() override var itemID = HQRNG().nextInt()
override var mass: Float override var mass: Float
get() = actorValue.get("mass") as Float get() = actorValue.get("mass") as Float
@@ -55,7 +55,7 @@ open class NPCIntelligentBase : ActorWithBody()
private val factionSet = HashSet<Faction>() private val factionSet = HashSet<Faction>()
override var referenceID: Long = HQRNG().nextLong() override var referenceID: Int = HQRNG().nextInt()
override var faction: HashSet<Faction> = HashSet() override var faction: HashSet<Faction> = HashSet()

View File

@@ -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_STOP_ACCEL = 0.32f
@Transient internal const val WALK_ACCEL_BASE = 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 @Transient const val BASE_HEIGHT = 40
} }

View File

@@ -7,6 +7,8 @@ import org.newdawn.slick.Graphics
* Created by minjaesong on 16-03-14. * Created by minjaesong on 16-03-14.
*/ */
interface Visible { interface Visible {
val hitbox: Hitbox
fun drawBody(gc: GameContainer, g: Graphics) fun drawBody(gc: GameContainer, g: Graphics)
fun updateBodySprite(gc: GameContainer, delta: Int) fun updateBodySprite(gc: GameContainer, delta: Int)

View File

@@ -12,7 +12,7 @@ interface InventoryItem {
* 4097-32767: Various items * 4097-32767: Various items
* >=32768: Actor RefID * >=32768: Actor RefID
*/ */
var itemID: Long var itemID: Int
/** /**
* Weight of the item, Float * Weight of the item, Float

View File

@@ -8,12 +8,12 @@ import org.newdawn.slick.GameContainer
*/ */
class TileAsItem(tileNum: Int) : InventoryItem { class TileAsItem(tileNum: Int) : InventoryItem {
override var itemID: Long = -1 override var itemID: Int = 0
override var mass: Float = 0f override var mass: Float = 0f
override var scale: Float = 1f override var scale: Float = 1f
init { init {
itemID = tileNum.toLong() itemID = tileNum
mass = TilePropCodex.getProp(tileNum).density / 1000f mass = TilePropCodex.getProp(tileNum).density / 1000f
} }

View File

@@ -29,9 +29,9 @@ object ItemPropCodex {
} }
fun getItem(code: Long): InventoryItem { fun getItem(code: Int): InventoryItem {
if (code < ITEM_UNIQUE_MAX) if (code < ITEM_UNIQUE_MAX)
return itemCodex[(code and 0xFFFFFFFF).toInt()] return itemCodex[code]
else { else {
for (actor in Terrarum.game.actorContainer) { for (actor in Terrarum.game.actorContainer) {
if (actor is CanBeAnItem && actor.referenceID == code) if (actor is CanBeAnItem && actor.referenceID == code)