diff --git a/src/main/kotlin/com/dowstats/controllers/BuildingsController.kt b/src/main/kotlin/com/dowstats/controllers/BuildingsController.kt index c4bc2ed..98f8998 100644 --- a/src/main/kotlin/com/dowstats/controllers/BuildingsController.kt +++ b/src/main/kotlin/com/dowstats/controllers/BuildingsController.kt @@ -1,5 +1,6 @@ package com.dowstats.controllers +import com.dowstats.data.dto.controllers.BuildingFullDto import com.dowstats.data.dto.controllers.RaceBuildings import com.dowstats.data.dto.controllers.RaceUnits import com.dowstats.data.entities.Building @@ -36,8 +37,8 @@ class BuildingsController @Autowired constructor( @GetMapping("/{buildingId}") - fun getById(@PathVariable buildingId: Long): Building { - return buildingRepository.findById(buildingId).get() + fun getById(@PathVariable buildingId: Long): BuildingFullDto { + return buildingRepository.findById(buildingId).get().toDto() } @DeleteMapping diff --git a/src/main/kotlin/com/dowstats/controllers/UnitsController.kt b/src/main/kotlin/com/dowstats/controllers/UnitsController.kt index 32a3e10..b4a7cb9 100644 --- a/src/main/kotlin/com/dowstats/controllers/UnitsController.kt +++ b/src/main/kotlin/com/dowstats/controllers/UnitsController.kt @@ -1,6 +1,7 @@ package com.dowstats.controllers import com.dowstats.data.dto.controllers.RaceUnits +import com.dowstats.data.dto.controllers.UnitFullDto import com.dowstats.data.entities.DowUnit import com.dowstats.data.repositories.UnitRepository import com.dowstats.service.datamaps.DowUnitMappingService @@ -32,8 +33,8 @@ class UnitsController @Autowired constructor( @GetMapping("/{unitId}") - fun getById(@PathVariable unitId: Long): DowUnit { - return unitsRepo.findById(unitId).get() + fun getById(@PathVariable unitId: Long): UnitFullDto { + return unitsRepo.findById(unitId).get().toDto() } @DeleteMapping diff --git a/src/main/kotlin/com/dowstats/data/dto/controllers/ArmorTypeDto.kt b/src/main/kotlin/com/dowstats/data/dto/controllers/ArmorTypeDto.kt new file mode 100644 index 0000000..01ba682 --- /dev/null +++ b/src/main/kotlin/com/dowstats/data/dto/controllers/ArmorTypeDto.kt @@ -0,0 +1,6 @@ +package com.dowstats.data.dto.controllers + +data class ArmorTypeDto( + val id: String, + val name: String?, +) diff --git a/src/main/kotlin/com/dowstats/data/dto/controllers/BuildingAddonDto.kt b/src/main/kotlin/com/dowstats/data/dto/controllers/BuildingAddonDto.kt new file mode 100644 index 0000000..f9046d4 --- /dev/null +++ b/src/main/kotlin/com/dowstats/data/dto/controllers/BuildingAddonDto.kt @@ -0,0 +1,15 @@ +package com.dowstats.data.dto.controllers + +data class BuildingAddonDto( + val id: Long?, + val name: String?, + val description: String?, + val filename: String?, + val addonCostRequisition: Double?, + val addonCostPower: Double?, + val addonCostPopulation: Double?, + val addonCostFaith: Double?, + val addonCostSouls: Double?, + val addonCostTime: Int?, + val icon: String?, +) diff --git a/src/main/kotlin/com/dowstats/data/dto/controllers/BuildingFullDto.kt b/src/main/kotlin/com/dowstats/data/dto/controllers/BuildingFullDto.kt new file mode 100644 index 0000000..a899d72 --- /dev/null +++ b/src/main/kotlin/com/dowstats/data/dto/controllers/BuildingFullDto.kt @@ -0,0 +1,26 @@ +package com.dowstats.data.dto.controllers + +data class BuildingFullDto( + var id: Long?, + var race: RaceDto?, + var armorType: ArmorTypeDto?, + var armorType2: ArmorTypeDto?, + var name: String?, + var description: String?, + var filename: String?, + var buildCostRequisition: Double?, + var buildCostPower: Double?, + var buildCostPopulation: Double?, + var buildCostFaith: Double?, + var buildCostSouls: Double?, + var buildCostTime: Int?, + var health: Int?, + var healthRegeneration: Double?, + var sightRadius: Int?, + var detectRadius: Int?, + var repairMax: Int?, + var icon: String?, + var modId: Long?, + var addons: MutableSet?, + val weapons: Set?, +) diff --git a/src/main/kotlin/com/dowstats/data/dto/controllers/BuildingDto.kt b/src/main/kotlin/com/dowstats/data/dto/controllers/BuildingShortDto.kt similarity index 61% rename from src/main/kotlin/com/dowstats/data/dto/controllers/BuildingDto.kt rename to src/main/kotlin/com/dowstats/data/dto/controllers/BuildingShortDto.kt index 81e2846..4545552 100644 --- a/src/main/kotlin/com/dowstats/data/dto/controllers/BuildingDto.kt +++ b/src/main/kotlin/com/dowstats/data/dto/controllers/BuildingShortDto.kt @@ -1,13 +1,11 @@ package com.dowstats.data.dto.controllers -import com.dowstats.data.entities.Race - data class RaceBuildings( - val race: Race, - val buildings: List, + val race: RaceDto, + val buildings: List, ) -data class BuildingDto( +data class BuildingShortDto( val name: String, val icon: String, val id: Long, diff --git a/src/main/kotlin/com/dowstats/data/dto/controllers/RaceDto.kt b/src/main/kotlin/com/dowstats/data/dto/controllers/RaceDto.kt new file mode 100644 index 0000000..0921d67 --- /dev/null +++ b/src/main/kotlin/com/dowstats/data/dto/controllers/RaceDto.kt @@ -0,0 +1,6 @@ +package com.dowstats.data.dto.controllers + +data class RaceDto( + val id: String, + val name: String?, +) diff --git a/src/main/kotlin/com/dowstats/data/dto/controllers/SergeantDto.kt b/src/main/kotlin/com/dowstats/data/dto/controllers/SergeantDto.kt new file mode 100644 index 0000000..c4619b2 --- /dev/null +++ b/src/main/kotlin/com/dowstats/data/dto/controllers/SergeantDto.kt @@ -0,0 +1,26 @@ +package com.dowstats.data.dto.controllers + + +data class SergeantDto( + val id: Long?, + val armorType: ArmorTypeDto?, + val armorType2: ArmorTypeDto?, + val name: String?, + val description: String?, + val filename: String, + val buildCostRequisition: Double?, + val buildCostPower: Double?, + val buildCostPopulation: Double?, + val buildCostFaith: Double?, + val buildCostSouls: Double?, + val buildCostTime: Int?, + val health: Int?, + val healthRegeneration: Double?, + val moraleDeathPenalty: Int?, + val mass: Int?, + val upTime: Double?, + val sightRadius: Int?, + val detectRadius: Int?, + val icon: String?, + val weapons: List?, +) diff --git a/src/main/kotlin/com/dowstats/data/dto/controllers/UnitFullDto.kt b/src/main/kotlin/com/dowstats/data/dto/controllers/UnitFullDto.kt new file mode 100644 index 0000000..29de9b0 --- /dev/null +++ b/src/main/kotlin/com/dowstats/data/dto/controllers/UnitFullDto.kt @@ -0,0 +1,45 @@ +package com.dowstats.data.dto.controllers + + +data class UnitFullDto( + val id: Long, + val race: RaceDto?, + val armorType: ArmorTypeDto?, + val armorType2: ArmorTypeDto?, + val name: String?, + val description: String?, + val filename: String, + val buildCostRequisition: Double?, + val buildCostPower: Double?, + val buildCostPopulation: Double?, + val buildCostFaith: Double?, + val buildCostSouls: Double?, + val buildCostTime: Int?, + val capInfantry: Int?, + val capSupport: Int?, + val squadStartSize: Int?, + val squadMaxSize: Int?, + val squadLimit: Int?, + val health: Int?, + val healthRegeneration: Double?, + val moraleDeathPenalty: Int?, + val moraleMax: Int?, + val moraleBroken: Int?, + val moraleRegeneration: Int?, + val mass: Int?, + val upTime: Double?, + val moveSpeed: Int?, + val sightRadius: Int?, + val detectRadius: Int?, + val reinforceCostRequisition: Int?, + val reinforceCostPower: Int?, + val reinforceCostPopulation: Int?, + val reinforceCostFaith: Int?, + val reinforceCostSouls: Int?, + val reinforceTime: Int?, + val maxSergeants: Int?, + val icon: String?, + val modId: Long, + val sergeants: Set?, + val weapons: Set?, +) \ No newline at end of file diff --git a/src/main/kotlin/com/dowstats/data/dto/controllers/UnitDto.kt b/src/main/kotlin/com/dowstats/data/dto/controllers/UnitShortDto.kt similarity index 52% rename from src/main/kotlin/com/dowstats/data/dto/controllers/UnitDto.kt rename to src/main/kotlin/com/dowstats/data/dto/controllers/UnitShortDto.kt index 5ac5d7f..4366b28 100644 --- a/src/main/kotlin/com/dowstats/data/dto/controllers/UnitDto.kt +++ b/src/main/kotlin/com/dowstats/data/dto/controllers/UnitShortDto.kt @@ -1,18 +1,17 @@ package com.dowstats.data.dto.controllers -import com.dowstats.data.entities.Race data class RaceUnits( - val race: Race, - val infantry: List, - val tech: List, - val support: List, + val race: RaceDto, + val infantry: List, + val tech: List, + val support: List, ) -data class UnitDto( +data class UnitShortDto( val name: String, val icon: String, val id: Long, val armourTypeName: String, val canDetect: Boolean, -) \ No newline at end of file +) diff --git a/src/main/kotlin/com/dowstats/data/dto/controllers/WeaponArmorPiercingDto.kt b/src/main/kotlin/com/dowstats/data/dto/controllers/WeaponArmorPiercingDto.kt new file mode 100644 index 0000000..9d129b9 --- /dev/null +++ b/src/main/kotlin/com/dowstats/data/dto/controllers/WeaponArmorPiercingDto.kt @@ -0,0 +1,8 @@ +package com.dowstats.data.dto.controllers + +import java.math.BigDecimal + +data class WeaponArmorPiercingDto( + val armorType: ArmorTypeDto?, + val piercingValue: BigDecimal, +) diff --git a/src/main/kotlin/com/dowstats/data/dto/controllers/WeaponDto.kt b/src/main/kotlin/com/dowstats/data/dto/controllers/WeaponDto.kt new file mode 100644 index 0000000..2c28781 --- /dev/null +++ b/src/main/kotlin/com/dowstats/data/dto/controllers/WeaponDto.kt @@ -0,0 +1,31 @@ +package com.dowstats.data.dto.controllers + +data class WeaponDto( + val id: Long?, + val filename: String, + val name: String?, + val description: String?, + val costRequisition: Int?, + val costPower: Int?, + val costTimeSeconds: Int?, + val accuracy: Double?, + val reloadTime: Double?, + val minRange: Double?, + val maxRange: Double?, + val setupTime: Double?, + val accuracyReductionMoving: Double?, + val minDamage: Double?, + val maxDamage: Double?, + val minDamageValue: Double?, + val moraleDamage: Double?, + val damageRadius: Double?, + val throwForceMin: Double?, + val throwForceMax: Double?, + val isMeleeWeapon: Boolean, + val canAttackAir: Boolean, + val canAttackGround: Boolean, + val icon: String?, + val haveEquipButton: Boolean, + val modId: Long?, + val weaponArmorPiercing: List +) diff --git a/src/main/kotlin/com/dowstats/data/dto/controllers/WeaponSlotDto.kt b/src/main/kotlin/com/dowstats/data/dto/controllers/WeaponSlotDto.kt new file mode 100644 index 0000000..6d391d5 --- /dev/null +++ b/src/main/kotlin/com/dowstats/data/dto/controllers/WeaponSlotDto.kt @@ -0,0 +1,7 @@ +package com.dowstats.data.dto.controllers + +data class WeaponSlotDto( + val hardpoint: Int, + val hardpointOrder: Int, + val weapon: WeaponDto, +) diff --git a/src/main/kotlin/com/dowstats/data/entities/ArmorType.kt b/src/main/kotlin/com/dowstats/data/entities/ArmorType.kt index 6be45fe..43c36af 100644 --- a/src/main/kotlin/com/dowstats/data/entities/ArmorType.kt +++ b/src/main/kotlin/com/dowstats/data/entities/ArmorType.kt @@ -1,5 +1,6 @@ package com.dowstats.data.entities +import com.dowstats.data.dto.controllers.ArmorTypeDto import jakarta.persistence.* @@ -11,4 +12,9 @@ class ArmorType { @GeneratedValue(strategy = GenerationType.AUTO) var id: String? = null var name: String? = null + + fun toDto() = ArmorTypeDto( + id!!, + name + ) } diff --git a/src/main/kotlin/com/dowstats/data/entities/Building.kt b/src/main/kotlin/com/dowstats/data/entities/Building.kt index d744b36..52936c3 100644 --- a/src/main/kotlin/com/dowstats/data/entities/Building.kt +++ b/src/main/kotlin/com/dowstats/data/entities/Building.kt @@ -1,5 +1,6 @@ package com.dowstats.data.entities +import com.dowstats.data.dto.controllers.BuildingFullDto import jakarta.persistence.* @@ -46,5 +47,31 @@ class Building { @OneToMany(mappedBy = "building", cascade = [CascadeType.ALL]) var weapons: MutableSet? = null + fun toDto(): BuildingFullDto = + BuildingFullDto( + id!!, + race?.toDto(), + armorType?.toDto(), + armorType2?.toDto(), + name, + description, + filename!!, + buildCostRequisition, + buildCostPower, + buildCostPopulation, + buildCostFaith, + buildCostSouls, + buildCostTime, + health, + healthRegeneration, + sightRadius, + detectRadius, + repairMax, + icon, + modId!!, + mutableSetOf(), + weapons?.map { it.toWeaponSlotDto() }?.toSet(), + ) + } diff --git a/src/main/kotlin/com/dowstats/data/entities/BuildingWeapon.kt b/src/main/kotlin/com/dowstats/data/entities/BuildingWeapon.kt index 6e5d25e..92024eb 100644 --- a/src/main/kotlin/com/dowstats/data/entities/BuildingWeapon.kt +++ b/src/main/kotlin/com/dowstats/data/entities/BuildingWeapon.kt @@ -1,5 +1,6 @@ package com.dowstats.data.entities +import com.dowstats.data.dto.controllers.WeaponSlotDto import com.fasterxml.jackson.annotation.JsonIgnore import jakarta.persistence.* import java.io.Serializable @@ -39,4 +40,10 @@ class BuildingWeapon { @JoinColumn(name = "weapon_id") var weapon: Weapon? = null + fun toWeaponSlotDto() = WeaponSlotDto( + buildingWeaponKey!!.hardpoint, + buildingWeaponKey!!.hardpointOrder, + weapon?.toDto()!! + ) + } diff --git a/src/main/kotlin/com/dowstats/data/entities/DowUnit.kt b/src/main/kotlin/com/dowstats/data/entities/DowUnit.kt index 3e2d857..5548df9 100644 --- a/src/main/kotlin/com/dowstats/data/entities/DowUnit.kt +++ b/src/main/kotlin/com/dowstats/data/entities/DowUnit.kt @@ -1,5 +1,6 @@ package com.dowstats.data.entities +import com.dowstats.data.dto.controllers.UnitFullDto import jakarta.persistence.* @@ -52,6 +53,7 @@ class DowUnit { var reinforceCostPower: Int? = null var reinforceCostPopulation: Int? = null var reinforceCostFaith: Int? = null + var reinforceCostSouls: Int? = null var reinforceTime: Int? = null var maxSergeants: Int? = null var icon: String? = null @@ -64,4 +66,47 @@ class DowUnit { var weapons: MutableSet? = null + fun toDto(): UnitFullDto = + UnitFullDto( + id!!, + race?.toDto(), + armorType?.toDto(), + armorType2?.toDto(), + name, + description, + filename!!, + buildCostRequisition, + buildCostPower, + buildCostPopulation, + buildCostFaith, + buildCostSouls, + buildCostTime, + capInfantry, + capSupport, + squadStartSize, + squadMaxSize, + squadLimit, + health, + healthRegeneration, + moraleDeathPenalty, + moraleMax, + moraleBroken, + moraleRegeneration, + mass, + upTime, + moveSpeed, + sightRadius, + detectRadius, + reinforceCostRequisition, + reinforceCostPower, + reinforceCostPopulation, + reinforceCostFaith, + reinforceCostSouls, + reinforceTime, + maxSergeants, + icon, + modId!!, + sergeants?.map { it.toDto() }?.toSet(), + weapons?.map { it.toWeaponSlotDto() }?.toSet() + ) } diff --git a/src/main/kotlin/com/dowstats/data/entities/Race.kt b/src/main/kotlin/com/dowstats/data/entities/Race.kt index 4ed36a3..809024c 100644 --- a/src/main/kotlin/com/dowstats/data/entities/Race.kt +++ b/src/main/kotlin/com/dowstats/data/entities/Race.kt @@ -1,5 +1,6 @@ package com.dowstats.data.entities +import com.dowstats.data.dto.controllers.RaceDto import jakarta.persistence.* @@ -11,4 +12,10 @@ class Race { var id: String? = null var name: String? = null + fun toDto(): RaceDto = + RaceDto( + id!!, + name, + ) + } diff --git a/src/main/kotlin/com/dowstats/data/entities/Sergant.kt b/src/main/kotlin/com/dowstats/data/entities/Sergant.kt index 6ba0937..7e98ef2 100644 --- a/src/main/kotlin/com/dowstats/data/entities/Sergant.kt +++ b/src/main/kotlin/com/dowstats/data/entities/Sergant.kt @@ -1,5 +1,6 @@ package com.dowstats.data.entities +import com.dowstats.data.dto.controllers.SergeantDto import com.fasterxml.jackson.annotation.JsonIgnore import jakarta.persistence.* @@ -46,5 +47,28 @@ class Sergeant { @OneToMany(mappedBy = "sergeant", cascade = [CascadeType.ALL]) var weapons: MutableSet? = null - + fun toDto(): SergeantDto = + SergeantDto( + id!!, + armorType?.toDto(), + armorType2?.toDto(), + name, + description, + filename!!, + buildCostRequisition, + buildCostPower, + buildCostPopulation, + buildCostFaith, + buildCostSouls, + buildCostTime, + health, + healthRegeneration, + moraleDeathPenalty, + mass, + upTime, + sightRadius, + detectRadius, + icon, + weapons?.map { it.toWeaponSlotDto() } + ) } diff --git a/src/main/kotlin/com/dowstats/data/entities/SergantWeapon.kt b/src/main/kotlin/com/dowstats/data/entities/SergantWeapon.kt index 505d059..48ecec7 100644 --- a/src/main/kotlin/com/dowstats/data/entities/SergantWeapon.kt +++ b/src/main/kotlin/com/dowstats/data/entities/SergantWeapon.kt @@ -1,5 +1,6 @@ package com.dowstats.data.entities +import com.dowstats.data.dto.controllers.WeaponSlotDto import com.fasterxml.jackson.annotation.JsonIgnore import java.io.Serializable import jakarta.persistence.* @@ -38,4 +39,10 @@ class SergeantWeapon { @MapsId("weaponId") @JoinColumn(name = "weapon_id") var weapon: Weapon? = null + + fun toWeaponSlotDto() = WeaponSlotDto( + sergeantWeaponKey!!.hardpoint, + sergeantWeaponKey!!.hardpointOrder, + weapon?.toDto()!! + ) } diff --git a/src/main/kotlin/com/dowstats/data/entities/UnitWeapon.kt b/src/main/kotlin/com/dowstats/data/entities/UnitWeapon.kt index 1a85d53..bfe15c9 100644 --- a/src/main/kotlin/com/dowstats/data/entities/UnitWeapon.kt +++ b/src/main/kotlin/com/dowstats/data/entities/UnitWeapon.kt @@ -1,5 +1,6 @@ package com.dowstats.data.entities +import com.dowstats.data.dto.controllers.WeaponSlotDto import com.fasterxml.jackson.annotation.JsonIgnore import java.io.Serializable import jakarta.persistence.* @@ -40,4 +41,10 @@ class UnitWeapon { @JoinColumn(name = "weapon_id") var weapon: Weapon? = null + fun toWeaponSlotDto() = WeaponSlotDto( + unitWeaponKey!!.hardpoint, + unitWeaponKey!!.hardpointOrder, + weapon?.toDto()!! + ) + } diff --git a/src/main/kotlin/com/dowstats/data/entities/Weapon.kt b/src/main/kotlin/com/dowstats/data/entities/Weapon.kt index 85d4892..40c5747 100644 --- a/src/main/kotlin/com/dowstats/data/entities/Weapon.kt +++ b/src/main/kotlin/com/dowstats/data/entities/Weapon.kt @@ -1,5 +1,6 @@ package com.dowstats.data.entities +import com.dowstats.data.dto.controllers.WeaponDto import jakarta.persistence.* @@ -34,7 +35,6 @@ class Weapon { var canAttackGround: Boolean = true var icon: String? = null var haveEquipButton: Boolean = true - var hotkeyName: String? = null var modId: Long? = null @Transient @@ -45,4 +45,34 @@ class Weapon { @OneToMany(mappedBy="weapon", fetch = FetchType.EAGER, cascade = [(CascadeType.ALL)]) var weaponPiercings: List = listOf() + + fun toDto() = WeaponDto( + id!!, + filename!!, + name, + description, + costRequisition, + costPower, + costTimeSeconds, + accuracy, + reloadTime, + minRange, + maxRange, + setupTime, + accuracyReductionMoving, + minDamage, + maxDamage, + minDamageValue, + moraleDamage, + damageRadius, + throwForceMin, + throwForceMax, + isMeleeWeapon, + canAttackAir, + canAttackGround, + icon, + haveEquipButton, + modId, + weaponPiercings.map { it.toDto() } + ) } diff --git a/src/main/kotlin/com/dowstats/data/entities/WeaponDamage.kt b/src/main/kotlin/com/dowstats/data/entities/WeaponDamage.kt index 9cbd1e3..befeb64 100644 --- a/src/main/kotlin/com/dowstats/data/entities/WeaponDamage.kt +++ b/src/main/kotlin/com/dowstats/data/entities/WeaponDamage.kt @@ -1,5 +1,6 @@ package com.dowstats.data.entities +import com.dowstats.data.dto.controllers.WeaponArmorPiercingDto import com.fasterxml.jackson.annotation.JsonIgnore import java.math.BigDecimal import jakarta.persistence.* @@ -23,4 +24,9 @@ class WeaponArmorPiercing { var armorType: ArmorType? = null var piercingValue: BigDecimal? = null + + fun toDto() = WeaponArmorPiercingDto( + armorType?.toDto(), + piercingValue?:BigDecimal.ZERO, + ) } diff --git a/src/main/kotlin/com/dowstats/data/repositories/BuildingRepository.kt b/src/main/kotlin/com/dowstats/data/repositories/BuildingRepository.kt index 989c651..460a5c7 100644 --- a/src/main/kotlin/com/dowstats/data/repositories/BuildingRepository.kt +++ b/src/main/kotlin/com/dowstats/data/repositories/BuildingRepository.kt @@ -14,6 +14,7 @@ interface BuildingRepository : CrudRepository{ left join fetch ArmorType a2 on b.armorType2.id = a2.id where b.modId = :modId and (:race is null or b.race = :race) + order by b.race.id desc """) fun findByModIdAndRace(modId: Long, race: Race?): List } \ No newline at end of file diff --git a/src/main/kotlin/com/dowstats/data/repositories/UnitRepository.kt b/src/main/kotlin/com/dowstats/data/repositories/UnitRepository.kt index 9d35ea6..e66a350 100644 --- a/src/main/kotlin/com/dowstats/data/repositories/UnitRepository.kt +++ b/src/main/kotlin/com/dowstats/data/repositories/UnitRepository.kt @@ -14,6 +14,7 @@ interface UnitRepository : CrudRepository { left join fetch ArmorType a2 on d.armorType2.id = a2.id where d.modId = :modId and (:race is null or d.race = :race) + order by d.race.id desc """) fun findByModIdAndRace(modId: Long, race: Race?): List diff --git a/src/main/kotlin/com/dowstats/service/datamaps/DowBuildingMappingService.kt b/src/main/kotlin/com/dowstats/service/datamaps/DowBuildingMappingService.kt index 698cd91..0f62555 100644 --- a/src/main/kotlin/com/dowstats/service/datamaps/DowBuildingMappingService.kt +++ b/src/main/kotlin/com/dowstats/service/datamaps/DowBuildingMappingService.kt @@ -1,15 +1,10 @@ package com.dowstats.service.datamaps -import com.dowstats.data.dto.controllers.BuildingDto +import com.dowstats.data.dto.controllers.BuildingShortDto import com.dowstats.data.dto.controllers.RaceBuildings -import com.dowstats.data.dto.controllers.RaceUnits -import com.dowstats.data.dto.controllers.UnitDto import com.dowstats.data.entities.Building -import com.dowstats.data.entities.DowUnit -import com.dowstats.data.entities.Race import com.dowstats.data.repositories.BuildingRepository import com.dowstats.data.repositories.RaceRepository -import com.dowstats.data.repositories.UnitRepository import org.springframework.beans.factory.annotation.Autowired import org.springframework.stereotype.Service @@ -21,23 +16,22 @@ class DowBuildingMappingService @Autowired constructor( fun findBuildingsByMod(modId: Long): List { return getAllBuildings(modId).groupBy { it.race }.mapNotNull {raceUnits -> - RaceBuildings(raceUnits.key ?: throw Exception("Race is null"), raceUnits.value.toBuildingDto()) + RaceBuildings(raceUnits.key?.toDto() ?: throw Exception("Race is null"), raceUnits.value.toBuildingDto()) } } fun findBuildingsByModAndRace(modId: Long, race: String): RaceBuildings { val buildings = getAllBuildings(modId, race) val raceEntity = race.let{ raceRepository.findById(race) ?: throw Exception("Race $race not found") } - return RaceBuildings(raceEntity, buildings.toBuildingDto()) + return RaceBuildings(raceEntity.toDto(), buildings.toBuildingDto()) } - - private fun List.toBuildingDto(): List = + private fun List.toBuildingDto(): List = this.mapNotNull { val name = it.name ?: it.filename val icon = it.icon - if (name == null || icon == null) null else BuildingDto(name, icon, it.id!!, + if (name == null || icon == null) null else BuildingShortDto(name, icon, it.id!!, it.armorType?.name!!, (it.detectRadius ?: 0) > 0) } @@ -61,5 +55,6 @@ class DowBuildingMappingService @Autowired constructor( && it.filename?.contains("tau_squad_slave_murdered") != true && it.filename?.contains("space_marine_single_player_only_drop_pod_building_2.rgd") != true && it.filename?.contains("space_marine_single_player_only_drop_pod_building.rgd") != true + && it.filename?.contains("space_marine_drop_pod_building.rgd") != true } } \ No newline at end of file diff --git a/src/main/kotlin/com/dowstats/service/datamaps/DowUnitMappingService.kt b/src/main/kotlin/com/dowstats/service/datamaps/DowUnitMappingService.kt index 3af257f..e06e0b6 100644 --- a/src/main/kotlin/com/dowstats/service/datamaps/DowUnitMappingService.kt +++ b/src/main/kotlin/com/dowstats/service/datamaps/DowUnitMappingService.kt @@ -1,7 +1,7 @@ package com.dowstats.service.datamaps import com.dowstats.data.dto.controllers.RaceUnits -import com.dowstats.data.dto.controllers.UnitDto +import com.dowstats.data.dto.controllers.UnitShortDto import com.dowstats.data.entities.DowUnit import com.dowstats.data.entities.Race import com.dowstats.data.repositories.RaceRepository @@ -43,15 +43,15 @@ class DowUnitMappingService @Autowired constructor( } .toUnitDto() - return RaceUnits(race, infantry, tech, support) + return RaceUnits(race.toDto(), infantry, tech, support) } - private fun List.toUnitDto(): List = + private fun List.toUnitDto(): List = this.mapNotNull { val name = it.name ?: it.filename val icon = it.icon - if (name == null || icon == null) null else UnitDto(name, icon, it.id!!, + if (name == null || icon == null) null else UnitShortDto(name, icon, it.id!!, it.armorType?.name!!, (it.detectRadius ?: 0) > 0) } diff --git a/src/main/kotlin/com/dowstats/service/w40k/UnitRgdExtractService.kt b/src/main/kotlin/com/dowstats/service/w40k/UnitRgdExtractService.kt index 6c7d88e..c3e6f6f 100644 --- a/src/main/kotlin/com/dowstats/service/w40k/UnitRgdExtractService.kt +++ b/src/main/kotlin/com/dowstats/service/w40k/UnitRgdExtractService.kt @@ -119,6 +119,7 @@ class UnitRgdExtractService @Autowired constructor( unit.reinforceCostPower = getReinforcePower(reinforceCostData) unit.reinforceCostPopulation = getReinforcePopulation(reinforceCostData) unit.reinforceCostFaith = getReinforceFaith(reinforceCostData) + unit.reinforceCostSouls = getReinforceSouls(reinforceCostData) unit.reinforceTime = getReinforceTime(reinforceData) val sergeantsData = getSergeantsData(squadData) @@ -319,6 +320,9 @@ class UnitRgdExtractService @Autowired constructor( private fun getReinforceFaith(reinforceData: List?): Int? = reinforceData ?.getIntByName("faith") + private fun getReinforceSouls(reinforceData: List?): Int? = reinforceData + ?.getIntByName("souls") + private fun getReinforceTime(reinforceData: List?): Int? = reinforceData ?.getIntByName("time_seconds") diff --git a/src/main/kotlin/com/dowstats/service/w40k/WeaponRgdExtractService.kt b/src/main/kotlin/com/dowstats/service/w40k/WeaponRgdExtractService.kt index a70d3bc..d472129 100644 --- a/src/main/kotlin/com/dowstats/service/w40k/WeaponRgdExtractService.kt +++ b/src/main/kotlin/com/dowstats/service/w40k/WeaponRgdExtractService.kt @@ -63,7 +63,6 @@ class WeaponRgdExtractService @Autowired constructor( weapon.icon = weaponUiData.iconPath weapon.description = weaponUiData.description weapon.haveEquipButton = weaponUiData.haveEquipButton - weapon.hotkeyName = weaponData.getStringByName("ui_hotkey_name") val cost = getCost(weaponData) weapon.costRequisition = cost.requisition ?: 0 diff --git a/src/main/resources/db/0.0.1/schema/units.json b/src/main/resources/db/0.0.1/schema/units.json index de6eccb..e1b80d0 100644 --- a/src/main/resources/db/0.0.1/schema/units.json +++ b/src/main/resources/db/0.0.1/schema/units.json @@ -190,6 +190,11 @@ "name": "reinforce_cost_faith", "type": "int" } + },{ + "column": { + "name": "reinforce_cost_souls", + "type": "number" + } },{ "column": { "name": "reinforce_time", diff --git a/src/main/resources/db/0.0.1/schema/weapons.json b/src/main/resources/db/0.0.1/schema/weapons.json index 7bb1d8d..019a020 100644 --- a/src/main/resources/db/0.0.1/schema/weapons.json +++ b/src/main/resources/db/0.0.1/schema/weapons.json @@ -203,12 +203,6 @@ "type": "varchar(128)" } }, - { - "column": { - "name": "hotkey_name", - "type": "varchar(64)" - } - }, { "column": { "name": "mod_id",