diff --git a/src/main/kotlin/com/dowstats/data/dto/controllers/JumpDto.kt b/src/main/kotlin/com/dowstats/data/dto/controllers/JumpDto.kt index c371242..3e9af42 100644 --- a/src/main/kotlin/com/dowstats/data/dto/controllers/JumpDto.kt +++ b/src/main/kotlin/com/dowstats/data/dto/controllers/JumpDto.kt @@ -15,5 +15,6 @@ data class JumpDto( val jumpTimeMax: Double?, val jumpTimeMin: Double?, val jumpMinHeight: Double?, + val chargeStartingFraction: Double?, val requirements: RequirementDto?, ) diff --git a/src/main/kotlin/com/dowstats/data/dto/controllers/UnitFullDto.kt b/src/main/kotlin/com/dowstats/data/dto/controllers/UnitFullDto.kt index 8cf4aa0..2827b25 100644 --- a/src/main/kotlin/com/dowstats/data/dto/controllers/UnitFullDto.kt +++ b/src/main/kotlin/com/dowstats/data/dto/controllers/UnitFullDto.kt @@ -39,6 +39,9 @@ data class UnitFullDto( val mass: Int?, val upTime: Double?, val moveSpeed: Int?, + val accelerationTime: Double?, + val decelerationTime: Double?, + val rotationRate: Double?, val sightRadius: Int?, val detectRadius: Int?, val reinforceCostRequisition: Double?, diff --git a/src/main/kotlin/com/dowstats/data/dto/controllers/building/BuildingFullDto.kt b/src/main/kotlin/com/dowstats/data/dto/controllers/building/BuildingFullDto.kt index be01cbf..6bc610b 100644 --- a/src/main/kotlin/com/dowstats/data/dto/controllers/building/BuildingFullDto.kt +++ b/src/main/kotlin/com/dowstats/data/dto/controllers/building/BuildingFullDto.kt @@ -41,4 +41,5 @@ data class BuildingFullDto( val requirements: RequirementDto?, val affectedResearches: Set, val hotkey: String?, + var buildingLimit: Int?, ) diff --git a/src/main/kotlin/com/dowstats/data/entities/building/Building.kt b/src/main/kotlin/com/dowstats/data/entities/building/Building.kt index 391b98c..06004c3 100644 --- a/src/main/kotlin/com/dowstats/data/entities/building/Building.kt +++ b/src/main/kotlin/com/dowstats/data/entities/building/Building.kt @@ -212,6 +212,7 @@ class Building { requirement, affectedResearches.map { it.toResearchShortDto() }.toSet(), uiHotkeyName, + buildingLimit, ) diff --git a/src/main/kotlin/com/dowstats/data/entities/unit/DowUnit.kt b/src/main/kotlin/com/dowstats/data/entities/unit/DowUnit.kt index 63181de..7866db1 100644 --- a/src/main/kotlin/com/dowstats/data/entities/unit/DowUnit.kt +++ b/src/main/kotlin/com/dowstats/data/entities/unit/DowUnit.kt @@ -69,6 +69,9 @@ class DowUnit { var mass: Int? = null var upTime: Double? = null var moveSpeed: Int? = null + var accelerationTime: Double? = null + var decelerationTime: Double? = null + var rotationRate: Double? = null var sightRadius: Int? = null var detectRadius: Int? = null var reinforceCostRequisition: Double? = null @@ -214,6 +217,9 @@ class DowUnit { mass, upTime, moveSpeed, + accelerationTime, + decelerationTime, + rotationRate, sightRadius, detectRadius, reinforceCostRequisition, diff --git a/src/main/kotlin/com/dowstats/data/entities/unit/Jump.kt b/src/main/kotlin/com/dowstats/data/entities/unit/Jump.kt index c9b3797..1630baa 100644 --- a/src/main/kotlin/com/dowstats/data/entities/unit/Jump.kt +++ b/src/main/kotlin/com/dowstats/data/entities/unit/Jump.kt @@ -30,6 +30,7 @@ class Jump { var jumpTimeMax: Double? = null var jumpTimeMin: Double? = null var jumpMinHeight: Double? = null + var chargeStartingFraction: Double? = null @OneToMany(mappedBy = "jump", cascade = [CascadeType.ALL]) var jumpRequirements: MutableSet = mutableSetOf() diff --git a/src/main/kotlin/com/dowstats/service/datamaps/DowUnitMappingService.kt b/src/main/kotlin/com/dowstats/service/datamaps/DowUnitMappingService.kt index bfb1456..ad03449 100644 --- a/src/main/kotlin/com/dowstats/service/datamaps/DowUnitMappingService.kt +++ b/src/main/kotlin/com/dowstats/service/datamaps/DowUnitMappingService.kt @@ -54,6 +54,7 @@ class DowUnitMappingService @Autowired constructor( jump.jumpTimeMax, jump.jumpTimeMin, jump.jumpMinHeight, + jump.chargeStartingFraction, requirementsMappingComponent.getRequirements(jump.jumpRequirements.toList(), unit.modId!!) ) } diff --git a/src/main/kotlin/com/dowstats/service/datamaps/WeaponResearchEffectMappingComponent.kt b/src/main/kotlin/com/dowstats/service/datamaps/WeaponResearchEffectMappingComponent.kt index 1ad0b98..157580a 100644 --- a/src/main/kotlin/com/dowstats/service/datamaps/WeaponResearchEffectMappingComponent.kt +++ b/src/main/kotlin/com/dowstats/service/datamaps/WeaponResearchEffectMappingComponent.kt @@ -111,7 +111,7 @@ class WeaponResearchEffectMappingComponent( * e.g. modifiers/max_damage_weapon_modifier.lua -> max_damage_weapon_modifier */ private fun extractRefName(reference: String): String = - reference.split("\\").first() + reference.split("\\").last() .replace(".lua", "") .replace(".rgd", "") } \ No newline at end of file diff --git a/src/main/kotlin/com/dowstats/service/w40k/UnitRgdExtractService.kt b/src/main/kotlin/com/dowstats/service/w40k/UnitRgdExtractService.kt index d776b08..e72d002 100644 --- a/src/main/kotlin/com/dowstats/service/w40k/UnitRgdExtractService.kt +++ b/src/main/kotlin/com/dowstats/service/w40k/UnitRgdExtractService.kt @@ -65,6 +65,12 @@ class UnitRgdExtractService @Autowired constructor( val upTime: Double?, ) + data class MovementParams( + val accelerationTime: Double?, + val decelerationTime: Double?, + val rotationRate: Double?, + ) + fun extractToUnitEntity( fileNameSquad: String, @@ -141,6 +147,10 @@ class UnitRgdExtractService @Autowired constructor( unit.unitMoraleBrakeModifiers = moraleData.unitMoraleBrakeModifiers.toMutableSet() unit.moveSpeed = getUnitSpeed(unitData)?.toInt() + val movementParams = getMovementParams(unitData) + unit.accelerationTime = movementParams.accelerationTime + unit.decelerationTime = movementParams.decelerationTime + unit.rotationRate = movementParams.rotationRate unit.sightRadius = getSightRadius(unitData)?.toInt() unit.detectRadius = getDetectRadius(unitData)?.toInt() @@ -318,6 +328,19 @@ class UnitRgdExtractService @Autowired constructor( .getRgdTableByName("moving_ext") ?.getDoubleByName("speed_max") + private fun getMovementParams(unitData: List): MovementParams { + val movingExt = unitData.getRgdTableByName("moving_ext") + val turningBehaviorTemplate = movingExt?.getStringByName("turning_behavior_template") + if (turningBehaviorTemplate == null || turningBehaviorTemplate == "default" || turningBehaviorTemplate == "infantry") { + return MovementParams(null, null, null) + } + return MovementParams( + movingExt.getDoubleByName("acceleration_time"), + movingExt.getDoubleByName("deceleration_time"), + movingExt.getDoubleByName("rotation_rate"), + ) + } + private fun getSightRadius(unitData: List): Double? = unitData .getRgdTableByName("sight_ext") ?.getDoubleByName("sight_radius") @@ -470,6 +493,7 @@ class UnitRgdExtractService @Autowired constructor( jump.jumpTimeMax = squadJumpExt.getDoubleByName("jump_time_max") jump.jumpTimeMin = squadJumpExt.getDoubleByName("jump_time_min") jump.jumpMinHeight = squadJumpExt.getDoubleByName("jump_min_height") + jump.chargeStartingFraction = squadJumpExt.getDoubleByName("charge_starting_fraction") // Parse jump requirements val requirements = squadJumpExt.getRgdTableByName("requirements") diff --git a/src/main/resources/db/0.0.6/schema/add_charge_starting_fraction_to_jumps.json b/src/main/resources/db/0.0.6/schema/add_charge_starting_fraction_to_jumps.json new file mode 100644 index 0000000..de47bdf --- /dev/null +++ b/src/main/resources/db/0.0.6/schema/add_charge_starting_fraction_to_jumps.json @@ -0,0 +1,25 @@ +{ + "databaseChangeLog": [ + { + "changeSet": { + "id": "Add charge_starting_fraction to jumps table", + "author": "anibus", + "changes": [ + { + "addColumn": { + "columns": [ + { + "column": { + "name": "charge_starting_fraction", + "type": "float" + } + } + ], + "tableName": "jumps" + } + } + ] + } + } + ] +} diff --git a/src/main/resources/db/0.0.6/schema/add_movement_params_to_units.json b/src/main/resources/db/0.0.6/schema/add_movement_params_to_units.json new file mode 100644 index 0000000..445c76c --- /dev/null +++ b/src/main/resources/db/0.0.6/schema/add_movement_params_to_units.json @@ -0,0 +1,37 @@ +{ + "databaseChangeLog": [ + { + "changeSet": { + "id": "Add movement params to units table", + "author": "anibus", + "changes": [ + { + "addColumn": { + "columns": [ + { + "column": { + "name": "acceleration_time", + "type": "number" + } + }, + { + "column": { + "name": "deceleration_time", + "type": "number" + } + }, + { + "column": { + "name": "rotation_rate", + "type": "number" + } + } + ], + "tableName": "units" + } + } + ] + } + } + ] +} diff --git a/src/main/resources/db/changelog-master.json b/src/main/resources/db/changelog-master.json index 05b535e..cb40af3 100644 --- a/src/main/resources/db/changelog-master.json +++ b/src/main/resources/db/changelog-master.json @@ -481,6 +481,16 @@ "include": { "file": "db/0.0.6/schema/add_index_to_researches.json" } + }, + { + "include": { + "file": "db/0.0.6/schema/add_charge_starting_fraction_to_jumps.json" + } + }, + { + "include": { + "file": "db/0.0.6/schema/add_movement_params_to_units.json" + } } ] }