package ru.dbotthepony.kstarbound.defs.player import com.google.common.collect.ImmutableList import com.google.common.collect.ImmutableMap import com.google.common.collect.ImmutableSet import com.google.gson.JsonObject import ru.dbotthepony.kstarbound.Registry import ru.dbotthepony.kstarbound.defs.AssetReference import ru.dbotthepony.kstarbound.defs.Species import ru.dbotthepony.kstarbound.util.SBPattern import ru.dbotthepony.kstarbound.defs.animation.AnimationDefinition import ru.dbotthepony.kstarbound.defs.item.api.IItemDefinition import ru.dbotthepony.kstarbound.json.builder.JsonFactory import ru.dbotthepony.kvector.util2d.AABB import ru.dbotthepony.kvector.vector.RGBAColor import ru.dbotthepony.kvector.vector.Vector2d @JsonFactory data class PlayerDefinition( val defaultHumanoidIdentity: JsonObject, val blueprintUnlock: SBPattern, val blueprintAlreadyKnown: SBPattern, val collectableUnlock: SBPattern, val species: ImmutableSet>, val nametagColor: RGBAColor, val ageItemsEvery: Int, val defaultItems: ImmutableSet>, val defaultBlueprints: BlueprintLearnList, val defaultCodexes: ImmutableMap>>, val metaBoundBox: AABB, val movementParameters: PlayerMovementParameters, val zeroGMovementParameters: PlayerMovementParameters, val statusControllerSettings: StatusControllerSettings, val foodLowThreshold: Double, val foodLowStatusEffects: ImmutableList = ImmutableList.of(), val foodEmptyStatusEffects: ImmutableList = ImmutableList.of(), val inCinematicStatusEffects: ImmutableList = ImmutableList.of(), val footstepTiming: Double, val footstepSensor: Vector2d, val vaporTrailTime: Double, val terminalVelocityDifference: Double, val initialBeamGunRadius: Double, val previewGlowBorder: Double, val objectPreviewInnerAlpha: Double, val objectPreviewOuterAlpha: Double, val beamGunConfig: MatterManipulatorConfig, val underwaterSensor: Vector2d = Vector2d(0.0, 0.0), val underwaterMinWaterLevel: Double, val splashConfig: SplashConfig, val effectsAnimator: AssetReference, val teleportInTime: Double, val teleportOutTime: Double, val deployInTime: Double, val deployOutTime: Double, val teleportInStatusEffects: ImmutableList, val companionsConfig: CompanionsConfig, val deploymentConfig: DeploymentConfig, val genericScriptContexts: ImmutableMap, val inventory: InventoryConfig, val inventoryFilters: ImmutableMap, )