From e0db3f5eb9b075365de8da45f66abc670570cf99 Mon Sep 17 00:00:00 2001 From: "theo.renaud" Date: Fri, 17 Mar 2023 17:31:52 +0100 Subject: [PATCH] tresure png need to be change and drop open treasure in inventory --- ShakeAndCraft/.idea/vcs.xml | 2 +- .../java/com/example/shakecraft/data/Stub.kt | 2 ++ .../com/example/shakecraft/model/Generator.kt | 18 ++++++++++++++++++ .../example/shakecraft/model/ItemManager.kt | 3 ++- .../com/example/shakecraft/model/Player.kt | 5 +++++ .../example/shakecraft/model/RecipeManager.kt | 6 +++++- 6 files changed, 33 insertions(+), 3 deletions(-) diff --git a/ShakeAndCraft/.idea/vcs.xml b/ShakeAndCraft/.idea/vcs.xml index 5a0857d..6c0b863 100644 --- a/ShakeAndCraft/.idea/vcs.xml +++ b/ShakeAndCraft/.idea/vcs.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/ShakeAndCraft/app/src/main/java/com/example/shakecraft/data/Stub.kt b/ShakeAndCraft/app/src/main/java/com/example/shakecraft/data/Stub.kt index 7265d3d..b8f301f 100644 --- a/ShakeAndCraft/app/src/main/java/com/example/shakecraft/data/Stub.kt +++ b/ShakeAndCraft/app/src/main/java/com/example/shakecraft/data/Stub.kt @@ -12,6 +12,8 @@ class Stub { val items : MutableList = mutableListOf() items.add(Item(type = ITEMS.BEECH_LOG.itemtype, stack = 30)) items.add(Item(type = ITEMS.BRONZE_INGOT.itemtype, stack = 30)) + items.add(Item(type = ITEMS.TREASURE.itemtype, stack = 2)) + items.add(Item(type = ITEMS.TREASURE_KEY.itemtype, stack = 1)) currentPlayer.items = items return currentPlayer diff --git a/ShakeAndCraft/app/src/main/java/com/example/shakecraft/model/Generator.kt b/ShakeAndCraft/app/src/main/java/com/example/shakecraft/model/Generator.kt index bbf352c..b58d24f 100644 --- a/ShakeAndCraft/app/src/main/java/com/example/shakecraft/model/Generator.kt +++ b/ShakeAndCraft/app/src/main/java/com/example/shakecraft/model/Generator.kt @@ -80,5 +80,23 @@ class Generator { // Si aucun élément n'a été choisi, retourner le dernier élément de la liste return possibleBoss.last().first } + + fun generateTreasure(): Item{ + val possibleTreasure: List> = listOf( + Pair(Item(type= ITEMS.TREASURE_KEY.itemtype), 0.5), + Pair(Item(type = ITEMS.MONSTER_BONES.itemtype), 0.5), + ) + val rand = Random.nextDouble() + + var cumulativeProb = 0.0 + for (element in possibleTreasure) { + cumulativeProb += element.second + if (rand < cumulativeProb) { + return element.first + } + } + // Si aucun élément n'a été choisi, retourner le dernier élément de la liste + return possibleTreasure.last().first + } } } \ No newline at end of file diff --git a/ShakeAndCraft/app/src/main/java/com/example/shakecraft/model/ItemManager.kt b/ShakeAndCraft/app/src/main/java/com/example/shakecraft/model/ItemManager.kt index 24ac7c5..ef8b1c7 100644 --- a/ShakeAndCraft/app/src/main/java/com/example/shakecraft/model/ItemManager.kt +++ b/ShakeAndCraft/app/src/main/java/com/example/shakecraft/model/ItemManager.kt @@ -21,13 +21,14 @@ class ItemManager { IRON_ORE(ItemType(name = "Iron Ore", image = R.drawable.iron_ore, rarity = 2, xpReward = 25)), IRON_INGOT(ItemType(name = "Iron Ingot", image = R.drawable.iron_ingot, rarity = 1, xpReward = 0)), + OPEN_TREASURE(ItemType(name = "Open Treasure", image = R.drawable.open_treasure, rarity = 3, xpReward = 50)), // Lootable items MONSTER_BONES(ItemType(name = "Monster Bones", image = R.drawable.monster_bones, rarity = 1, xpReward = 10)), MONSTER_EYE(ItemType(name = "Monster Eye", image = R.drawable.monster_eyes, rarity = 2, xpReward = 20)), TREASURE_KEY(ItemType(name = "Treasure Key", image = R.drawable.treasure_key, rarity = 2, xpReward = 20)), - + TREASURE(ItemType(name = "Treasure", image = R.drawable.treasure, rarity = 3, xpReward = 20)), } } diff --git a/ShakeAndCraft/app/src/main/java/com/example/shakecraft/model/Player.kt b/ShakeAndCraft/app/src/main/java/com/example/shakecraft/model/Player.kt index 2949d97..84ee508 100644 --- a/ShakeAndCraft/app/src/main/java/com/example/shakecraft/model/Player.kt +++ b/ShakeAndCraft/app/src/main/java/com/example/shakecraft/model/Player.kt @@ -1,6 +1,7 @@ package com.example.shakecraft.model import com.example.shakecraft.R +import com.example.shakecraft.model.Generator.Companion.generateTreasure class Player(val pseudo: String, var xp: Int = 0) { var level: Int = 1 @@ -61,6 +62,10 @@ class Player(val pseudo: String, var xp: Int = 0) { if (searchedItem.stack == 0){ items.remove(searchedItem) } + if (recipe.item.type.name == "OPEN_TREASURE"){ + addItem(generateTreasure()) + return true + } } } println("item:"+recipe.item.stack) diff --git a/ShakeAndCraft/app/src/main/java/com/example/shakecraft/model/RecipeManager.kt b/ShakeAndCraft/app/src/main/java/com/example/shakecraft/model/RecipeManager.kt index a823462..03e98cf 100644 --- a/ShakeAndCraft/app/src/main/java/com/example/shakecraft/model/RecipeManager.kt +++ b/ShakeAndCraft/app/src/main/java/com/example/shakecraft/model/RecipeManager.kt @@ -21,7 +21,11 @@ class RecipeManager { Item(type = ITEMS.WOODEN_STICK.itemtype, stack = 2), Item(type = ITEMS.WOODEN_PLANK.itemtype, stack = 2) ), "Objects"), - + Recipe( + Item(type = ITEMS.OPEN_TREASURE.itemtype, stack = 1),listOf( + Item(type = ITEMS.TREASURE.itemtype, stack = 1), + Item(type = ITEMS.TREASURE_KEY.itemtype, stack = 1) + ), "Objects"), ) val recipeListTools : List = listOf(