package com.dowstats.data.dto.controllers

import com.dowstats.data.dto.controllers.building.BuildingAddonShortDto
import com.dowstats.data.dto.controllers.building.BuildingShortDto
import com.dowstats.data.dto.controllers.research.ResearchShortDto

data class RequirementDto (
    val requirementBuildings: Set<BuildingShortDto>,
    val requirementBuildingsEither: Set<BuildingShortDto>,
    val requirementResearches: Set<RequirementResearchDto>,
    val requirementSquads: Set<RequirementSquadsDto>,
    val requirementResearchesEither: Set<RequirementResearchDto>,
    val requireAddon: BuildingAddonShortDto?,
    val requirementsGlobalAddons: Set<BuildingAddonShortDto>?,
    val requiredTotalPop: Int?,
    val limitByBuilding: RequirementLimitByBuildingDto?,
    val mobBonus: RequirementMobBonusDto?,
    val requirementStructureExclusive: BuildingShortDto?,
    val requirementAddonExclusive: BuildingAddonShortDto?,
    val requiredOwnership: Set<String>,
    val replaceWhenDone: Boolean = false,
)

data class RequirementResearchDto(
    val researchShortDto: ResearchShortDto,
    val researchMustNotBeComplete: Boolean,
)

data class RequirementSquadsDto(
    val squad: EntityCompressDto,
    val count: Int,
)

data class RequirementLimitByBuildingDto(
    val building: BuildingShortDto,
    val limit: Int,
)

data class RequirementMobBonusDto(
    val mobvalueRequired: Double,
    val proximityRequired: Int,
)