API overhaul, convert Toy Plugins to Listeners
This commit is contained in:
+1217
-1207
File diff suppressed because it is too large
Load Diff
@@ -3,52 +3,48 @@ import rs09.game.system.SystemLogger
|
||||
import java.util.*
|
||||
import kotlin.system.exitProcess
|
||||
|
||||
object DialUtils {
|
||||
//Number of chars per line. Line is split at the nearest whole word that doesn't exceed this length. This should remain constant once a perfect value is found
|
||||
const val LINE_SIZE = 52.0
|
||||
|
||||
//Number of chars per line. Line is split at the nearest whole word that doesn't exceed this length. This should remain constant once a perfect value is found
|
||||
const val LINE_SIZE = 52.0
|
||||
/**
|
||||
* Automatically split a single continuous string into multiple comma-separated lines.
|
||||
* Should this not work out for any reason, you should fallback to standard npc and player methods for dialogue.
|
||||
*/
|
||||
fun splitLines(message: String): Array<String>{
|
||||
val chars = message.split("").toTypedArray().size.toDouble()
|
||||
val words = message.split(" ").toTypedArray()
|
||||
val lines = Math.ceil(chars / LINE_SIZE).toInt()
|
||||
|
||||
@JvmStatic
|
||||
/**
|
||||
* Automatically split a single continuous string into multiple comma-separated lines.
|
||||
* Should this not work out for any reason, you should fallback to standard npc and player methods for dialogue.
|
||||
*/
|
||||
fun splitLines(message: String): Array<String>{
|
||||
val chars = message.split("").toTypedArray().size.toDouble()
|
||||
val words = message.split(" ").toTypedArray()
|
||||
val lines = Math.ceil(chars / LINE_SIZE).toInt()
|
||||
|
||||
if(lines > 4){
|
||||
SystemLogger.logErr("INVALID NUM LINES. NUM CHARS: $chars")
|
||||
}
|
||||
|
||||
val messages = ArrayList<String>()
|
||||
|
||||
var index = 0
|
||||
|
||||
for (msg in 0 until lines) {
|
||||
var length = 0
|
||||
val line = StringBuilder()
|
||||
while (length <= LINE_SIZE && !(index == words.size)) {
|
||||
var currentWord = ""
|
||||
try {
|
||||
currentWord = words[index] + if (length + words[index].length + 1 <= LINE_SIZE) " " else ""
|
||||
} catch (e: Exception){
|
||||
SystemLogger.logWarn("INDEX: $index WORDSIZE: ${words.size}")
|
||||
for(word in words.indices){
|
||||
SystemLogger.logErr("Word $word: ${words[word]}")
|
||||
}
|
||||
exitProcess(0)
|
||||
}
|
||||
length += currentWord.length
|
||||
if (length <= LINE_SIZE) {
|
||||
line.append(currentWord)
|
||||
++index
|
||||
}
|
||||
}
|
||||
messages.add(line.toString())
|
||||
}
|
||||
|
||||
return messages.toTypedArray()
|
||||
if(lines > 4){
|
||||
SystemLogger.logErr("INVALID NUM LINES. NUM CHARS: $chars")
|
||||
}
|
||||
|
||||
val messages = ArrayList<String>()
|
||||
|
||||
var index = 0
|
||||
|
||||
for (msg in 0 until lines) {
|
||||
var length = 0
|
||||
val line = StringBuilder()
|
||||
while (length <= LINE_SIZE && !(index == words.size)) {
|
||||
var currentWord = ""
|
||||
try {
|
||||
currentWord = words[index] + if (length + words[index].length + 1 <= LINE_SIZE) " " else ""
|
||||
} catch (e: Exception){
|
||||
SystemLogger.logWarn("INDEX: $index WORDSIZE: ${words.size}")
|
||||
for(word in words.indices){
|
||||
SystemLogger.logErr("Word $word: ${words[word]}")
|
||||
}
|
||||
exitProcess(0)
|
||||
}
|
||||
length += currentWord.length
|
||||
if (length <= LINE_SIZE) {
|
||||
line.append(currentWord)
|
||||
++index
|
||||
}
|
||||
}
|
||||
messages.add(line.toString())
|
||||
}
|
||||
|
||||
return messages.toTypedArray()
|
||||
}
|
||||
Reference in New Issue
Block a user