From 117186c06b945b68cf324b1876012b0840be28b0 Mon Sep 17 00:00:00 2001 From: Anibus Date: Wed, 19 Mar 2025 01:13:27 +0300 Subject: [PATCH] Add unification races to db migration, add rgd samples --- src/main/resources/db/0.0.1/data/races.json | 315 +++++++++++++++++- .../service/InconConvertServiceTest.kt | 14 - ...ParserServiceTest.kt => ModDiffPrinter.kt} | 2 +- ...gdParserServiceTest.kt => RgdParserLab.kt} | 2 +- .../com/example/dowstats/service/Test.kt | 31 ++ .../service/UnificationResearchTest.kt | 216 ------------ .../rgd/space_marine/space_marine_ebps.rgd | Bin 0 -> 308446 bytes .../space_marine_sergeant_ebps.rgd | Bin 0 -> 357866 bytes .../space_marine_squad_tactical_sbps.rgd | Bin 0 -> 103625 bytes 9 files changed, 335 insertions(+), 245 deletions(-) delete mode 100644 src/test/kotlin/com/example/dowstats/service/InconConvertServiceTest.kt rename src/test/kotlin/com/example/dowstats/service/{ModParserServiceTest.kt => ModDiffPrinter.kt} (99%) rename src/test/kotlin/com/example/dowstats/service/{RgdParserServiceTest.kt => RgdParserLab.kt} (99%) create mode 100644 src/test/kotlin/com/example/dowstats/service/Test.kt delete mode 100644 src/test/kotlin/com/example/dowstats/service/UnificationResearchTest.kt create mode 100644 src/test/resources/rgd/space_marine/space_marine_ebps.rgd create mode 100644 src/test/resources/rgd/space_marine/space_marine_sergeant_ebps.rgd create mode 100644 src/test/resources/rgd/space_marine/space_marine_squad_tactical_sbps.rgd diff --git a/src/main/resources/db/0.0.1/data/races.json b/src/main/resources/db/0.0.1/data/races.json index 5fc84e6..57bf799 100644 --- a/src/main/resources/db/0.0.1/data/races.json +++ b/src/main/resources/db/0.0.1/data/races.json @@ -207,12 +207,12 @@ { "column": { "name": "id", - "value": "ynnari" + "value": "tyranids" } },{ "column": { "name": "name", - "value": "Ynnari" + "value": "Tyranids" } } ] @@ -224,12 +224,12 @@ { "column": { "name": "id", - "value": "ynnari" + "value": "thirteenth_company" } },{ "column": { "name": "name", - "value": "Ynnari" + "value": "13th Company (Space Wolves)" } } ] @@ -241,12 +241,12 @@ { "column": { "name": "id", - "value": "ynnari" + "value": "mechanicus" } },{ "column": { "name": "name", - "value": "Ynnari" + "value": "Adeptus Mechanicus Explorators" } } ] @@ -258,12 +258,12 @@ { "column": { "name": "id", - "value": "ynnari" + "value": "blood_angels" } },{ "column": { "name": "name", - "value": "Ynnari" + "value": "Blood Angels" } } ] @@ -275,12 +275,12 @@ { "column": { "name": "id", - "value": "ynnari" + "value": "black_templars" } },{ "column": { "name": "name", - "value": "Ynnari" + "value": "Black Templars" } } ] @@ -292,12 +292,148 @@ { "column": { "name": "id", - "value": "ynnari" + "value": "daemons" } },{ "column": { "name": "name", - "value": "Ynnari" + "value": "Chaos Daemons" + } + } + ] + } + },{ + "insert": { + "tableName": "races", + "columns": [ + { + "column": { + "name": "id", + "value": "darkangels" + } + },{ + "column": { + "name": "name", + "value": "Dark Angels" + } + } + ] + } + },{ + "insert": { + "tableName": "races", + "columns": [ + { + "column": { + "name": "id", + "value": "death_guard" + } + },{ + "column": { + "name": "name", + "value": "Death Guard" + } + } + ] + } + },{ + "insert": { + "tableName": "races", + "columns": [ + { + "column": { + "name": "id", + "value": "emperors_children" + } + },{ + "column": { + "name": "name", + "value": "Emperors Children" + } + } + ] + } + },{ + "insert": { + "tableName": "races", + "columns": [ + { + "column": { + "name": "id", + "value": "firstborn" + } + },{ + "column": { + "name": "name", + "value": "Vostroyan Firstborn" + } + } + ] + } + },{ + "insert": { + "tableName": "races", + "columns": [ + { + "column": { + "name": "id", + "value": "harlequin" + } + },{ + "column": { + "name": "name", + "value": "Harlequins" + } + } + ] + } + },{ + "insert": { + "tableName": "races", + "columns": [ + { + "column": { + "name": "id", + "value": "imperial_fists" + } + },{ + "column": { + "name": "name", + "value": "Imperial Fists Siege Vanguard" + } + } + ] + } + },{ + "insert": { + "tableName": "races", + "columns": [ + { + "column": { + "name": "id", + "value": "inquisition_daemonhunt" + } + },{ + "column": { + "name": "name", + "value": "Daemon Hunters" + } + } + ] + } + },{ + "insert": { + "tableName": "races", + "columns": [ + { + "column": { + "name": "id", + "value": "krieg" + } + },{ + "column": { + "name": "name", + "value": "Death Korps of Krieg" } } ] @@ -314,7 +450,160 @@ },{ "column": { "name": "name", - "value": "Renegade guard" + "value": "Renegade Guard" + } + } + ] + } + },{ + "insert": { + "tableName": "races", + "columns": [ + { + "column": { + "name": "id", + "value": "lotd" + } + },{ + "column": { + "name": "name", + "value": "Legion of the Damned" + } + } + ] + } + },{ + "insert": { + "tableName": "races", + "columns": [ + { + "column": { + "name": "id", + "value": "night_lords" + } + },{ + "column": { + "name": "name", + "value": "Night Lords" + } + } + ] + } + },{ + "insert": { + "tableName": "races", + "columns": [ + { + "column": { + "name": "id", + "value": "praetorian" + } + },{ + "column": { + "name": "name", + "value": "Praetorian Guard" + } + } + ] + } + },{ + "insert": { + "tableName": "races", + "columns": [ + { + "column": { + "name": "id", + "value": "salamanders" + } + },{ + "column": { + "name": "name", + "value": "Salamanders" + } + } + ] + } + },{ + "insert": { + "tableName": "races", + "columns": [ + { + "column": { + "name": "id", + "value": "thousand_sons" + } + },{ + "column": { + "name": "name", + "value": "Thousand Sons" + } + } + ] + } + },{ + "insert": { + "tableName": "races", + "columns": [ + { + "column": { + "name": "id", + "value": "enclaves" + } + },{ + "column": { + "name": "name", + "value": "Farsight Enclaves" + } + } + ] + } + },{ + "insert": { + "tableName": "races", + "columns": [ + { + "column": { + "name": "id", + "value": "fallenangels" + } + },{ + "column": { + "name": "name", + "value": "Fallen Angels" + } + } + ] + } + },{ + "insert": { + "tableName": "races", + "columns": [ + { + "column": { + "name": "id", + "value": "raven_guard" + } + },{ + "column": { + "name": "name", + "value": "Raven Guard" + } + } + ] + } + },{ + "insert": { + "tableName": "races", + "columns": [ + { + "column": { + "name": "id", + "value": "khm" + } + },{ + "column": { + "name": "name", + "value": "World Eaters" } } ] diff --git a/src/test/kotlin/com/example/dowstats/service/InconConvertServiceTest.kt b/src/test/kotlin/com/example/dowstats/service/InconConvertServiceTest.kt deleted file mode 100644 index efd767b..0000000 --- a/src/test/kotlin/com/example/dowstats/service/InconConvertServiceTest.kt +++ /dev/null @@ -1,14 +0,0 @@ -import com.dowstats.configuration.StorageConfig -import com.dowstats.service.w40k.IconsService -import org.junit.jupiter.api.Test - -class InconConvertServiceTest { - - @Test - fun convertIcon() { - - println(mapOf(1 to 3, 2 to 4) + mapOf(3 to 5, 5 to 6)) - - - } -} \ No newline at end of file diff --git a/src/test/kotlin/com/example/dowstats/service/ModParserServiceTest.kt b/src/test/kotlin/com/example/dowstats/service/ModDiffPrinter.kt similarity index 99% rename from src/test/kotlin/com/example/dowstats/service/ModParserServiceTest.kt rename to src/test/kotlin/com/example/dowstats/service/ModDiffPrinter.kt index a49f401..637a07a 100644 --- a/src/test/kotlin/com/example/dowstats/service/ModParserServiceTest.kt +++ b/src/test/kotlin/com/example/dowstats/service/ModDiffPrinter.kt @@ -10,7 +10,7 @@ import java.io.File import java.io.PrintWriter import java.nio.ByteBuffer -class ModParserServiceTest { +class ModDiffPrinter { val zeroByte: Byte = 0 diff --git a/src/test/kotlin/com/example/dowstats/service/RgdParserServiceTest.kt b/src/test/kotlin/com/example/dowstats/service/RgdParserLab.kt similarity index 99% rename from src/test/kotlin/com/example/dowstats/service/RgdParserServiceTest.kt rename to src/test/kotlin/com/example/dowstats/service/RgdParserLab.kt index 6039ea8..3efae37 100644 --- a/src/test/kotlin/com/example/dowstats/service/RgdParserServiceTest.kt +++ b/src/test/kotlin/com/example/dowstats/service/RgdParserLab.kt @@ -7,7 +7,7 @@ import java.math.RoundingMode import java.nio.ByteBuffer import java.nio.file.Paths -class RgdParserServiceTest { +class RgdParserLab { val zeroByte: Byte = 0 diff --git a/src/test/kotlin/com/example/dowstats/service/Test.kt b/src/test/kotlin/com/example/dowstats/service/Test.kt new file mode 100644 index 0000000..70d6688 --- /dev/null +++ b/src/test/kotlin/com/example/dowstats/service/Test.kt @@ -0,0 +1,31 @@ +import com.dowstats.data.rgd.RgdData +import org.junit.jupiter.api.Test +import java.io.DataInputStream +import java.io.File +import java.io.PrintWriter +import java.math.RoundingMode +import java.nio.ByteBuffer +import java.nio.file.Paths + +class Test { + + + + @Test + fun test() { + File("M:\\SteamLibrary\\steamapps\\common\\Dawn of War Soulstorm\\Unification").listFiles().forEach { + if(it.name.endsWith(".sga")) { + try { + File(it.path + "\\Data\\attrib\\ebps\\races").listFiles().forEach { + println(it.name + " - " + it.path) + } + } catch (e: Exception) { + + } + } + } + + } + + +} \ No newline at end of file diff --git a/src/test/kotlin/com/example/dowstats/service/UnificationResearchTest.kt b/src/test/kotlin/com/example/dowstats/service/UnificationResearchTest.kt deleted file mode 100644 index 5157cc7..0000000 --- a/src/test/kotlin/com/example/dowstats/service/UnificationResearchTest.kt +++ /dev/null @@ -1,216 +0,0 @@ -import com.dowstats.data.rgd.RgdData -import com.dowstats.data.rgd.RgdDataUtil.getDoubleByName -import com.dowstats.data.rgd.RgdDataUtil.getRgdTableByName -import com.dowstats.data.rgd.RgdDataUtil.getStringByName -import com.dowstats.service.w40k.RgdParserService -import com.dowstats.service.w40k.RgdService -import org.junit.jupiter.api.Test -import java.io.DataInputStream -import java.io.File -import java.nio.ByteBuffer - -class UnificationResearchTest { - - val zeroByte: Byte = 0 - - val rgdDictionary: MutableMap = mutableMapOf() - - val rgdParseService = RgdParserService() - - val rgdService = RgdService() - - val blackTemplars = "black_templars" - - - val racesWikiPaths = setOf(blackTemplars) - - fun readDictionary() { - File("src/test/resources/RGD_DIC.TXT").forEachLine { - if(it.isNotEmpty() && it[0] != '#'){ - val kv = it.split('=') - val key = kv.first().drop(2).decodeHex().getUIntAt(0).toInt() - val value = kv.last() - rgdDictionary[key] = value - } - } - } - - data class UnitAsSquad(val squadData: List?,val uintData: List?) - - - @Test - fun getAllUnits(): Map { - - return racesWikiPaths.map{racePath -> - - val rgdData42 = File("src/main/resources/static/mods/unification/attrib/sbps/races/$racePath").walkTopDown().map { - val rgdData = if(it.isFile && !it.name.contains("hg_dxp3") && !it.name.contains("npc")){ - rgdParseService.parseRgdFileStream(DataInputStream(it.inputStream())) - }else{ - null - } - it.name to rgdData - }.filter { it.second != null } - .toMap() - - val newUnits = File("src/main/resources/static/mods/unification/attrib/ebps/races/$racePath/troops").walkTopDown().map { - val rgdData = if(it.isFile && !it.name.contains("hg_dxp3") && !it.name.contains("npc")){ - rgdParseService.parseRgdFileStream(DataInputStream(it.inputStream())) - }else{ - null - } - it.name to rgdData - }.filter { it.second != null } - .toMap() - - rgdData42.map {newSquad -> - - val baseUnitPath = ((newSquad.value?.find { it.name == "squad_loadout_ext" }?.value as List) - .find { it.name == "trooper_base" }?.value as List) - .find { it.name == "type" }?.value as String - val baseUnitName = baseUnitPath.split("\\").last().replace(".lua", ".rgd") - - baseUnitName to UnitAsSquad(newSquad.value, newUnits[baseUnitName]) - }.toMap() - }.fold(emptyMap()){sum, map -> map + sum} - } - - - fun getWeaponRgdMap(): Map?> { - - return File("src/main/resources/static/mods/unification/attrib/weapon").walkTopDown().map { - val rgdData = if(it.isFile && !it.name.contains("hg_dxp3") && !it.name.contains("npc")){ - rgdParseService.parseRgdFileStream(DataInputStream(it.inputStream())) - } else { - null - } - it.name.replace(".rgd", "") to rgdData - }.toMap() - } - - @Test - fun getAllWeaponDamage() { - - val weapons = getWeaponRgdMap() - - - val weaponsByDeamonDmg = weapons.toList() - .sortedByDescending { (key, weaponRgd) -> - try { - val reloadTime: Double = weaponRgd?.getDoubleByName("reload_time")!! - val accuracy: Double = weaponRgd?.getDoubleByName("accuracy")!! - - val armourDamage = weaponRgd?.getRgdTableByName("area_effect") - ?.getRgdTableByName("weapon_damage") - ?.getRgdTableByName("armour_damage") - - val minDamage = armourDamage?.getDoubleByName("min_damage")!! - val maxDamage = armourDamage.getDoubleByName("max_damage")!! - val avgDamage = (minDamage + maxDamage) / 2 - - val weaponDmgMap: Map? = - armourDamage - ?.getRgdTableByName("armour_piercing_types")?.mapNotNull { armour_piercing -> - if (armour_piercing.name.contains("entry")) { - val entry = armour_piercing.value as List - val dmgType = entry.getRgdTableByName("armour_type")?.getStringByName("\$REF")?.replace("type_armour\\tp_","")?.replace(".lua","") - val dmgValue = entry.getDoubleByName("armour_piercing_value") - dmgType!! to dmgValue!! - } else null - }?.toMap()?.toSortedMap() - val dmgK = accuracy * (1/(reloadTime - reloadTime.mod(0.125))) - val piercingK = weaponDmgMap?.get("vehicle_low")!! / 100 - val totalDmg = piercingK * dmgK * avgDamage - val res = (Math.round(totalDmg * 100.0) / 100.00) - res - } catch(exception: Exception) { - 0.0 - } - } - .filter { it.second != null } - .toMap() - - print("") - weaponsByDeamonDmg.values.first()?.getRgdTableByName("area_effect") - ?.getRgdTableByName("weapon_damage") - ?.getRgdTableByName("armour_damage") - ?.getRgdTableByName("armour_piercing_types")?.mapNotNull { armour_piercing -> - if (armour_piercing.name.contains("entry")) { - val entry = armour_piercing.value as List - val dmgType = entry.getRgdTableByName("armour_type")?.getStringByName("\$REF")?.replace("type_armour\\tp_","")?.replace(".lua","") - val dmgValue = entry.getDoubleByName("armour_piercing_value") - dmgType!! to dmgValue!! - } else null - }?.toMap()?.toSortedMap()?.forEach { - print("") - } - print("") - - weaponsByDeamonDmg.forEach { (key, weaponRgd) -> - val reloadTime: Double = weaponRgd?.getDoubleByName("reload_time")!! - val accuracy: Double = weaponRgd.getDoubleByName("accuracy")!! - - val armourDamage = weaponRgd?.getRgdTableByName("area_effect") - ?.getRgdTableByName("weapon_damage") - ?.getRgdTableByName("armour_damage") - - val minDamage = armourDamage?.getDoubleByName("min_damage")!! - val maxDamage = armourDamage.getDoubleByName("max_damage")!! - val avgDamage = (minDamage + maxDamage) / 2 - - val weaponDmgMap: Map? = - armourDamage - ?.getRgdTableByName("armour_piercing_types")?.mapNotNull { armour_piercing -> - if (armour_piercing.name.contains("entry")) { - val entry = armour_piercing.value as List - val dmgType = entry.getRgdTableByName("armour_type")?.getStringByName("\$REF")?.replace("type_armour\\tp_","")?.replace(".lua","") - val dmgValue = entry.getDoubleByName("armour_piercing_value") - dmgType!! to dmgValue!! - } else null - }?.toMap()?.toSortedMap() - println("") - val dmgK = accuracy * (1/(reloadTime - reloadTime.mod(0.125))) - weaponDmgMap?.forEach { - val piercingK = it.value / 100 - val totalDmg = piercingK * dmgK * avgDamage - print("") - } - println() - println("") - } - println("
name${ it.key}
$key${ (Math.round(totalDmg * 100.0) / 100.00)}
") - } - - - private fun findStrategicPointCaptureRate(rgdDataList: List): Double? { - val capRgdData = rgdDataList.find { it.name == "squad_capture_strategic_point_ext" }?.value as List? - val canCapture = capRgdData?.find { it.name == "able_to_capture" }?.value == "[1]" - val captureRate = capRgdData?.find { it.name == "capture_rate" } - return if(canCapture){ - captureRate?.value as Double? - } else null - } - - private fun findVisionCaptureRate(rgdDataList: List): Double? { - val visionRgdData = rgdDataList.find { it.name == "sight_ext" }?.value as List? - return visionRgdData?.find { it.name == "sight_radius" }?.value as Double? - } - - private fun String.decodeHex(): ByteArray { - check(length % 2 == 0) { "Must have an even length" } - return chunked(2) - .map { it.toInt(16).toByte() } - .toByteArray() - } - - private fun ByteArray.getFloat(): Float { - val buffer = ByteBuffer.wrap(this) - return buffer.float - } - - private fun ByteArray.getUIntAt(idx: Int): UInt = - ((this[idx].toUInt() and 0xFFu) shl 24) or - ((this[idx + 1].toUInt() and 0xFFu) shl 16) or - ((this[idx + 2].toUInt() and 0xFFu) shl 8) or - (this[idx + 3].toUInt() and 0xFFu) -} \ No newline at end of file diff --git a/src/test/resources/rgd/space_marine/space_marine_ebps.rgd b/src/test/resources/rgd/space_marine/space_marine_ebps.rgd new file mode 100644 index 0000000000000000000000000000000000000000..50dae8dee7db9d10e12076ac53e7914b9db995d3 GIT binary patch literal 308446 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%0D!M+aE4Dti{f&5U>2Uyd3 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 QR&rE^9o`|*mh-Cr2Qw$}p#T5? literal 0 HcmV?d00001