Initial commit

This commit is contained in:
2026-08-23 15:51:15 -04:00
commit 92c14dfc81
62 changed files with 2685 additions and 0 deletions
+21
View File
@@ -0,0 +1,21 @@
plugins {
kotlin("multiplatform")
alias(libs.plugins.kotlin.serialization)
}
repositories {
mavenCentral()
}
kotlin {
jvm()
sourceSets {
commonMain.dependencies {
implementation(libs.kotlinx.serialization)
implementation(libs.kotlinx.datetime)
}
jvmMain.dependencies {}
}
}
@@ -0,0 +1,22 @@
package dev.geekback.dopewars.shared
// import io.ktor.openapi.JsonSchema
import kotlinx.serialization.Serializable
import kotlin.random.Random
@Serializable
enum class Drug {
WEED,
COCAINE,
HASH,
ACID,
HEROIN,
MUSHROOMS,
METH;
companion object {
fun all() = listOf(WEED, COCAINE, HASH, ACID, HEROIN, MUSHROOMS, METH)
fun random() = Drug.WEED
}
}
@@ -0,0 +1,15 @@
package dev.geekback.dopewars.shared
import kotlinx.serialization.Serializable
import kotlin.random.Random
@Serializable
data class DrugInfo(
val drug: Drug,
val minValue: Float,
val maxValue: Float,
) {
fun newPrice(): Float {
return Random.nextFloat() * (this.maxValue - this.minValue)
}
}
@@ -0,0 +1,15 @@
package dev.geekback.dopewars.shared
object Drugs {
val all = listOf(
DrugInfo(Drug.WEED, 300.0f, 1000.0f),
DrugInfo(Drug.ACID, 1000.0f, 4500.0f),
DrugInfo(Drug.COCAINE, 15000.0f, 30000.0f),
DrugInfo(Drug.HASH, 5000.0f, 14000.0f),
DrugInfo(Drug.MUSHROOMS, 500.0f, 2500.0f),
DrugInfo(Drug.METH, 2000.0f, 9000.0f),
DrugInfo(Drug.HEROIN, minValue = 4000.0f, 9500.0f)
)
fun random() = all.random()
}
@@ -0,0 +1,9 @@
package dev.geekback.dopewars.shared
import kotlinx.serialization.Serializable
@Serializable
data class InventoryItem(
val drug: Drug,
var quantity: Int
)
@@ -0,0 +1,8 @@
package dev.geekback.dopewars.shared
import kotlinx.serialization.Serializable
@Serializable
data class Location(
var name: String
)
@@ -0,0 +1,13 @@
package dev.geekback.dopewars.shared
object Locations {
val all = listOf(
Location("Brooklyn"),
Location("Bronx"),
Location("Queens"),
Location("Statten Island"),
)
fun random() = all.random()
}
@@ -0,0 +1,12 @@
package dev.geekback.dopewars.shared
import kotlinx.serialization.Serializable
@Serializable
data class Market(
val location: Location,
val prices: Map<Drug, Float>
) {
companion object {
}
}
@@ -0,0 +1,27 @@
package dev.geekback.dopewars.shared
import kotlinx.serialization.Serializable
import kotlin.time.Clock
@Serializable
data class Player(
val id: String,
val name: String,
var cash: Float = 2000f,
var debt: Float = 5500f,
var health: Int = 100,
var location: Location = Location("Brooklyn"),
var day: Int = 1,
val inventory: MutableList<InventoryItem> = mutableListOf(),
var lastMarket: Market? = null,
val lastActionTime: Long = Clock.System.now().epochSeconds
) {
companion object {
fun new(): Player {
return Player(
id = "",
name = "Default Player",
)
}
}
}
@@ -0,0 +1,3 @@
package dev.geekback.dopewars.shared
const val DRUG_MAX_PRICE: Float = 100_000f;
@@ -0,0 +1,9 @@
package dev.geekback.dopewars.shared.api
import dev.geekback.dopewars.shared.Location
import kotlinx.serialization.Serializable
@Serializable
data class MarketRequest(
val location: Location
)
@@ -0,0 +1,9 @@
package dev.geekback.dopewars.shared.api
import dev.geekback.dopewars.shared.Market
import kotlinx.serialization.Serializable
@Serializable
data class MarketResult(
val market: Market) {
}
@@ -0,0 +1,8 @@
package dev.geekback.dopewars.shared.api
import kotlinx.serialization.Serializable
@Serializable
data class PlayerNameUpdateRequest(
val newName: String
)
@@ -0,0 +1,7 @@
package dev.geekback.dopewars.shared.api
import dev.geekback.dopewars.shared.Player
import kotlinx.serialization.Serializable
@Serializable
data class PlayerNameUpdateResponse(val updatedPlayer: Player)
@@ -0,0 +1,10 @@
package dev.geekback.dopewars.shared.api
import kotlinx.serialization.Serializable
@Serializable
enum class TradeAction {
BUY,
SELL
}
@@ -0,0 +1,13 @@
package dev.geekback.dopewars.shared.api
import dev.geekback.dopewars.shared.Drug
import kotlinx.serialization.Serializable
@Serializable
data class TradeRequest(
val action: TradeAction,
val drug: Drug,
val quantity: Int
)
@@ -0,0 +1,9 @@
package dev.geekback.dopewars.shared.api
import dev.geekback.dopewars.shared.Location
import kotlinx.serialization.Serializable
@Serializable
data class TravelRequest(
val destination: Location
)
@@ -0,0 +1,12 @@
package dev.geekback.dopewars.shared.api
import dev.geekback.dopewars.shared.Location
import dev.geekback.dopewars.shared.Market
import kotlinx.serialization.Serializable
@Serializable
data class TravelResult(
val location: Location,
val day: Int,
val market: Market
)