package com.dowstats.data.dto.controllers

import com.dowstats.data.dto.controllers.ability.AbilityShortDto
import com.dowstats.data.dto.controllers.building.BuildingAddonShortDto
import com.dowstats.data.dto.controllers.research.ResearchShortDto
import com.dowstats.data.entities.ability.Ability


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: Double?,
    val faithIncome: Double?,
    val powerIncome: Double?,
    val requisitionIncome: Double?,
    val mobValue: Double?,
    val capInfantry: Int?,
    val capSupport: Int?,
    val squadStartSize: Int?,
    val squadMaxSize: Int?,
    val squadLimit: Int?,
    val health: Int?,
    val armour: Double?,
    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: Double?,
    val reinforceCostPower: Double?,
    val reinforceCostPopulation: Double?,
    val reinforceCostFaith: Double?,
    val reinforceCostSouls: Double?,
    val reinforceTime: Double?,
    val repairMax: Int?,
    val repairSpeed: Int?,
    val repairCostPercent: Int?,
    val maxSergeants: Int?,
    val icon: String?,
    val modId: Long,
    val deathExplosions: Set<DeathExplosionDto>,
    val sergeants: Set<SergeantDto>?,
    val weapons: Set<WeaponSlotDto>?,
    val abilities: Set<AbilityShortDto>?,
    val haveReinforceMenu: Boolean,
    val affectedResearches: Set<ResearchShortDto>,
    val affectedAddons: Set<BuildingAddonShortDto>,
    val modifiers: List<ModifierDto>,
    val moraleBrakeModifiers: List<ModifierDto>,
    var affectedData: AffectedDataDto,
    val requirements: RequirementDto?,
    val hotkey: String?,
    val jumps: JumpDto?,
)