ajout de class invetory + avancer de persistance

persistance
Théo RENAUD 2 years ago
parent e1f661f44d
commit 0b20d7745c

@ -0,0 +1,46 @@
package com.example.shakecraft.model
class Inventory {
var items: MutableList<Item> = 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
}
}

@ -2,7 +2,14 @@ package com.example.shakecraft.model
import android.os.Parcel import android.os.Parcel
import android.os.Parcelable 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( class Item(
val type: ItemType, val type: ItemType,
var stack: Int = 1, var stack: Int = 1,

@ -1,5 +1,8 @@
package com.example.shakecraft.model 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){ class ItemType (val name : String,val image : Int,val rarity : Int, val xpReward : Int){

@ -20,7 +20,6 @@ class Player() {
@ColumnInfo(name = "image") @ColumnInfo(name = "image")
val image: Int = R.drawable.player_image val image: Int = R.drawable.player_image
@ColumnInfo(index = true) @ColumnInfo(index = true)
var items: MutableList<Item> = mutableListOf()
var rank: String = "Beginner" var rank: String = "Beginner"
@ -38,15 +37,7 @@ class Player() {
else -> {"Divine"} 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) { fun gainXp(xp: Int) {
this.xp += xp 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
}
} }

@ -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) { for (ingredient in recipe.ingredients) {
if (!player.hasItem(ingredient)) { if (!inventory.hasItem(ingredient)) {
return false return false
} }
} }
return true return true
} }
fun HowManyCraftable(recipe: Recipe, player: Player): Int{ fun HowManyCraftable(recipe: Recipe, inventory: Inventory): Int{
val divisedList = mutableListOf<Int>() val divisedList = mutableListOf<Int>()
if(isCraftable(recipe,player)==false) if(isCraftable(recipe,inventory)==false)
return 0 return 0
else{ else{
for(element in recipe.ingredients){ for(element in recipe.ingredients){
println("cc") 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) if(itemSearch!= null)
divisedList.add(itemSearch.stack / element.stack) divisedList.add(itemSearch.stack / element.stack)
} }

Loading…
Cancel
Save