package com.craigvg.lichun_android.domain.models import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import java.util.UUID /** * Monetization models for energy refills and time skips * Ported from iOS EnergyRefillTier.swift and TimeSkipTier.swift */ @Serializable data class EnergyRefillTier( val id: String = UUID.randomUUID().toString(), val type: String, // "small", "medium", "full", "unlimited_24h" val energy: Int, val diamonds: Int ) { val displayName: String get() = when (type) { "small" -> "Small Refill" "medium" -> "Medium Refill" "full" -> "Full Refill" "unlimited_24h" -> "Unlimited 24h" else -> type } val description: String get() = when (type) { "unlimited_24h" -> "Unlimited energy for 24 hours" else -> "+$energy energy" } val icon: String get() = when (type) { "small" -> "zap" "medium" -> "zap" "full" -> "zap" "unlimited_24h" -> "infinity" else -> "zap" } } @Serializable data class TimeSkipTier( val id: String = UUID.randomUUID().toString(), val type: String, // "1hour", "1day", "1week", "next_event" val durationSeconds: Double? = null, val diamonds: Int ) { val displayName: String get() = when (type) { "1hour" -> "1 Hour" "1day" -> "1 Day" "1week" -> "1 Week" "next_event" -> "Next Event" else -> type } val description: String get() = when (type) { "1hour" -> "Skip ahead 1 hour" "1day" -> "Skip ahead 1 day" "1week" -> "Skip ahead 1 week" "next_event" -> "Skip to next major event" else -> "" } val icon: String get() = when (type) { "1hour" -> "clock" "1day" -> "calendar" "1week" -> "calendar" "next_event" -> "target" else -> "fast-forward" } } @Serializable data class TimeSkipSummary( val diamonds: Int, val newTime: String, val durationHours: Double, val events: List, val statChanges: StatChanges ) { @Serializable data class StatChanges( val money: Double, val energy: Int, val health: Int, val happiness: Int ) } @Serializable data class TimeSkipEvent( val id: String = UUID.randomUUID().toString(), val type: String, val description: String, @SerialName("money_earned") val moneyEarned: Double? = null, @SerialName("smarts_gained") val smartsGained: Int? = null )