diff --git a/ShakeAndCraft/app/src/main/java/com/example/shakecraft/model/Inventory.kt b/ShakeAndCraft/app/src/main/java/com/example/shakecraft/model/Inventory.kt new file mode 100644 index 0000000..788c537 --- /dev/null +++ b/ShakeAndCraft/app/src/main/java/com/example/shakecraft/model/Inventory.kt @@ -0,0 +1,46 @@ +package com.example.shakecraft.model + +class Inventory { + var items: MutableList = mutableListOf() + + fun addItem(item: Item) { + val findItem = items.find { it.type.name == item.type.name } + + if(findItem!= null){ + println("findItem n: "+findItem.stack+" item nb:"+item.stack) + findItem.stack += item.stack + } + else{items.add(Item(type = item.type, stack = item.stack))} + } + + fun hasItem(item: Item) : Boolean{ + for (inventoryitem in items){ + if(inventoryitem.type.name == item.type.name && inventoryitem.stack >= item.stack){ + return true + } + } + return false + } + + + fun craft(recipe: Recipe) : Boolean{ + println("test") + for (ingredient in recipe.ingredients) { + val searchedItem = items.find { it.type.name == ingredient.type.name } + if(searchedItem != null) { + searchedItem.stack -= ingredient.stack + if (searchedItem.stack == 0){ + items.remove(searchedItem) + } + println(ingredient.type.name) + if (recipe.item.type.name == "Open Treasure"){ + addItem(Generator.generateTreasure()) + return true + } + } + } + println("item:"+recipe.item.stack) + addItem(recipe.item) + return true + } +} \ No newline at end of file diff --git a/ShakeAndCraft/app/src/main/java/com/example/shakecraft/model/Item.kt b/ShakeAndCraft/app/src/main/java/com/example/shakecraft/model/Item.kt index 04577af..d127e62 100644 --- a/ShakeAndCraft/app/src/main/java/com/example/shakecraft/model/Item.kt +++ b/ShakeAndCraft/app/src/main/java/com/example/shakecraft/model/Item.kt @@ -2,7 +2,14 @@ package com.example.shakecraft.model import android.os.Parcel import android.os.Parcelable - +import androidx.room.Entity +import androidx.room.ForeignKey + +@Entity(tableName = "Item", foreignKeys = [ForeignKey( + entity = ItemType::class, parentColumns = arrayOf("name"), + childColumns = arrayOf("itemtype"), + onUpdate = ForeignKey.CASCADE, + onDelete = ForeignKey.CASCADE)]) class Item( val type: ItemType, var stack: Int = 1, diff --git a/ShakeAndCraft/app/src/main/java/com/example/shakecraft/model/ItemType.kt b/ShakeAndCraft/app/src/main/java/com/example/shakecraft/model/ItemType.kt index 80f56bb..5a03372 100644 --- a/ShakeAndCraft/app/src/main/java/com/example/shakecraft/model/ItemType.kt +++ b/ShakeAndCraft/app/src/main/java/com/example/shakecraft/model/ItemType.kt @@ -1,5 +1,8 @@ package com.example.shakecraft.model +import androidx.room.Entity +import androidx.room.ForeignKey + class ItemType (val name : String,val image : Int,val rarity : Int, val xpReward : Int){ 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 f18f9c0..7ff071e 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 @@ -20,7 +20,6 @@ class Player() { @ColumnInfo(name = "image") val image: Int = R.drawable.player_image @ColumnInfo(index = true) - var items: MutableList = mutableListOf() var rank: String = "Beginner" @@ -38,15 +37,7 @@ class Player() { else -> {"Divine"} } } - fun addItem(item: Item) { - val findItem = items.find { it.type.name == item.type.name } - if(findItem!= null){ - println("findItem n: "+findItem.stack+" item nb:"+item.stack) - findItem.stack += item.stack - } - else{items.add(Item(type = item.type, stack = item.stack))} - } fun gainXp(xp: Int) { this.xp += xp @@ -57,35 +48,4 @@ class Player() { } } - - fun hasItem(item: Item) : Boolean{ - for (playeritem in items){ - if(playeritem.type.name == item.type.name && playeritem.stack >= item.stack){ - return true - } - } - return false - } - - fun craft(recipe: Recipe) : Boolean{ - println("test") - for (ingredient in recipe.ingredients) { - val searchedItem = items.find { it.type.name == ingredient.type.name } - if(searchedItem != null) { - searchedItem.stack -= ingredient.stack - if (searchedItem.stack == 0){ - items.remove(searchedItem) - } - println(ingredient.type.name) - if (recipe.item.type.name == "Open Treasure"){ - addItem(generateTreasure()) - return true - } - } - } - println("item:"+recipe.item.stack) - addItem(recipe.item) - return true - } - } \ No newline at end of file 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 03e98cf..39b9794 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 @@ -68,23 +68,23 @@ class RecipeManager { - fun isCraftable(recipe: Recipe, player: Player): Boolean{ + fun isCraftable(recipe: Recipe, inventory: Inventory): Boolean{ for (ingredient in recipe.ingredients) { - if (!player.hasItem(ingredient)) { + if (!inventory.hasItem(ingredient)) { return false } } return true } - fun HowManyCraftable(recipe: Recipe, player: Player): Int{ + fun HowManyCraftable(recipe: Recipe, inventory: Inventory): Int{ val divisedList = mutableListOf() - if(isCraftable(recipe,player)==false) + if(isCraftable(recipe,inventory)==false) return 0 else{ for(element in recipe.ingredients){ println("cc") - val itemSearch = player.items.find { it.type.name == element.type.name } + val itemSearch = inventory.items.find { it.type.name == element.type.name } if(itemSearch!= null) divisedList.add(itemSearch.stack / element.stack) }