diff --git a/ShakeAndCraft/app/src/main/java/com/example/shakecraft/data/DataBase.kt b/ShakeAndCraft/app/src/main/java/com/example/shakecraft/data/DataBase.kt index 3817a7b..0719398 100644 --- a/ShakeAndCraft/app/src/main/java/com/example/shakecraft/data/DataBase.kt +++ b/ShakeAndCraft/app/src/main/java/com/example/shakecraft/data/DataBase.kt @@ -1,8 +1,28 @@ package com.example.shakecraft.data import androidx.room.Database +import androidx.room.Room +import androidx.room.RoomDatabase import com.example.shakecraft.model.Player +import android.content.Context @Database(entities = [Player::class],version = 1) -abstract class DataBase { +abstract class DataBase: RoomDatabase() { + abstract fun playerDao(): PlayerDao + companion object{ + private var INSTANCE : DataBase? = null + fun getInstance(context: Context): DataBase{ + return INSTANCE ?: synchronized(this){ + val instance = Room.databaseBuilder( + context.applicationContext, + DataBase::class.java, + "player_database" + ) + .fallbackToDestructiveMigration() + .build() + INSTANCE = instance + instance + } + } + } } \ No newline at end of file diff --git a/ShakeAndCraft/app/src/main/java/com/example/shakecraft/data/PlayerDao.kt b/ShakeAndCraft/app/src/main/java/com/example/shakecraft/data/PlayerDao.kt index 6aeaf8a..b29c208 100644 --- a/ShakeAndCraft/app/src/main/java/com/example/shakecraft/data/PlayerDao.kt +++ b/ShakeAndCraft/app/src/main/java/com/example/shakecraft/data/PlayerDao.kt @@ -1,7 +1,6 @@ package com.example.shakecraft.data import androidx.room.Query -import com.example.shakecraft.model.Boss import com.example.shakecraft.model.Player import kotlinx.coroutines.flow.Flow import java.util.List diff --git a/ShakeAndCraft/app/src/main/java/com/example/shakecraft/BossFragment.kt b/ShakeAndCraft/app/src/main/java/com/example/shakecraft/fragment/BossFragment.kt similarity index 97% rename from ShakeAndCraft/app/src/main/java/com/example/shakecraft/BossFragment.kt rename to ShakeAndCraft/app/src/main/java/com/example/shakecraft/fragment/BossFragment.kt index 573c7e9..65e0e67 100644 --- a/ShakeAndCraft/app/src/main/java/com/example/shakecraft/BossFragment.kt +++ b/ShakeAndCraft/app/src/main/java/com/example/shakecraft/fragment/BossFragment.kt @@ -1,4 +1,4 @@ -package com.example.shakecraft +package com.example.shakecraft.fragment import android.content.Context import android.content.pm.ActivityInfo import android.hardware.Sensor @@ -19,6 +19,8 @@ import android.widget.TextView import androidx.navigation.fragment.findNavController import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView +import com.example.shakecraft.MainActivity +import com.example.shakecraft.R import com.example.shakecraft.model.Boss import com.example.shakecraft.model.Generator import com.example.shakecraft.model.Item @@ -139,7 +141,7 @@ class BossFragment() : Fragment() { // Generate a loot item and XP reward val item = Generator.generateLootBoss(boss.possibleLoot) - currentPlayer.addItem(item) + currentPlayer.inventory.addItem(item) currentPlayer.gainXp(boss.xpReward) // Show loot toast view for 3 seconds diff --git a/ShakeAndCraft/app/src/main/java/com/example/shakecraft/CollectFragment.kt b/ShakeAndCraft/app/src/main/java/com/example/shakecraft/fragment/CollectFragment.kt similarity index 96% rename from ShakeAndCraft/app/src/main/java/com/example/shakecraft/CollectFragment.kt rename to ShakeAndCraft/app/src/main/java/com/example/shakecraft/fragment/CollectFragment.kt index bbb8ab6..674a72b 100644 --- a/ShakeAndCraft/app/src/main/java/com/example/shakecraft/CollectFragment.kt +++ b/ShakeAndCraft/app/src/main/java/com/example/shakecraft/fragment/CollectFragment.kt @@ -1,4 +1,4 @@ -package com.example.shakecraft +package com.example.shakecraft.fragment import android.content.Context @@ -18,6 +18,8 @@ import android.widget.ProgressBar import android.widget.TextView import androidx.navigation.fragment.findNavController +import com.example.shakecraft.MainActivity +import com.example.shakecraft.R import com.example.shakecraft.model.Generator import com.example.shakecraft.model.Item @@ -101,7 +103,7 @@ class CollectFragment() : Fragment() { // Generate a resource item and XP reward val item = Generator.generateLootCollection() - currentPlayer.addItem(item) + currentPlayer.inventory.addItem(item) currentPlayer.gainXp(item.type.xpReward) //reset to 0 the progress bar diff --git a/ShakeAndCraft/app/src/main/java/com/example/shakecraft/CraftFragment.kt b/ShakeAndCraft/app/src/main/java/com/example/shakecraft/fragment/CraftFragment.kt similarity index 92% rename from ShakeAndCraft/app/src/main/java/com/example/shakecraft/CraftFragment.kt rename to ShakeAndCraft/app/src/main/java/com/example/shakecraft/fragment/CraftFragment.kt index ad53829..4ed95e2 100644 --- a/ShakeAndCraft/app/src/main/java/com/example/shakecraft/CraftFragment.kt +++ b/ShakeAndCraft/app/src/main/java/com/example/shakecraft/fragment/CraftFragment.kt @@ -1,4 +1,4 @@ -package com.example.shakecraft +package com.example.shakecraft.fragment import android.os.Bundle import androidx.fragment.app.Fragment @@ -11,6 +11,8 @@ import android.widget.TextView import androidx.navigation.fragment.findNavController import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView +import com.example.shakecraft.MainActivity +import com.example.shakecraft.R import com.example.shakecraft.model.Player import com.example.shakecraft.model.Recipe import com.example.shakecraft.model.RecipeManager @@ -74,11 +76,11 @@ class CraftFragment : Fragment() { name = view.findViewById(R.id.item_name) image.setImageResource(recipe.item.type.image) name.text = recipe.item.type.name - buttonForge.isEnabled = RecipeManager.isCraftable(recipe,currentPlayer) - numberCraftable.text = RecipeManager.HowManyCraftable(recipe,currentPlayer).toString() + buttonForge.isEnabled = RecipeManager.isCraftable(recipe,currentPlayer.inventory) + numberCraftable.text = RecipeManager.HowManyCraftable(recipe,currentPlayer.inventory).toString() buttonForge.setOnClickListener{ - currentPlayer.craft(recipe) + currentPlayer.inventory.craft(recipe) initializeViews(view, currentPlayer) setUpRecyclerView(view, currentPlayer) } diff --git a/ShakeAndCraft/app/src/main/java/com/example/shakecraft/ForgeFragment.kt b/ShakeAndCraft/app/src/main/java/com/example/shakecraft/fragment/ForgeFragment.kt similarity index 97% rename from ShakeAndCraft/app/src/main/java/com/example/shakecraft/ForgeFragment.kt rename to ShakeAndCraft/app/src/main/java/com/example/shakecraft/fragment/ForgeFragment.kt index 39aa1cc..a5daf3b 100644 --- a/ShakeAndCraft/app/src/main/java/com/example/shakecraft/ForgeFragment.kt +++ b/ShakeAndCraft/app/src/main/java/com/example/shakecraft/fragment/ForgeFragment.kt @@ -1,4 +1,4 @@ -package com.example.shakecraft +package com.example.shakecraft.fragment import android.os.Bundle import androidx.fragment.app.Fragment @@ -10,6 +10,7 @@ import androidx.core.os.bundleOf import androidx.navigation.fragment.findNavController import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView +import com.example.shakecraft.R import com.example.shakecraft.model.Recipe import com.example.shakecraft.model.RecipeManager import com.example.shakecraft.view.adapter.AdapterRecipe diff --git a/ShakeAndCraft/app/src/main/java/com/example/shakecraft/HomeFragment.kt b/ShakeAndCraft/app/src/main/java/com/example/shakecraft/fragment/HomeFragment.kt similarity index 78% rename from ShakeAndCraft/app/src/main/java/com/example/shakecraft/HomeFragment.kt rename to ShakeAndCraft/app/src/main/java/com/example/shakecraft/fragment/HomeFragment.kt index 4a37742..5e4c2af 100644 --- a/ShakeAndCraft/app/src/main/java/com/example/shakecraft/HomeFragment.kt +++ b/ShakeAndCraft/app/src/main/java/com/example/shakecraft/fragment/HomeFragment.kt @@ -1,4 +1,4 @@ -package com.example.shakecraft +package com.example.shakecraft.fragment import android.os.Bundle import androidx.fragment.app.Fragment @@ -11,6 +11,8 @@ import android.widget.TextView import androidx.constraintlayout.widget.ConstraintLayout import androidx.navigation.NavOptions import androidx.navigation.fragment.findNavController +import com.example.shakecraft.MainActivity +import com.example.shakecraft.R import com.example.shakecraft.model.Player @@ -52,15 +54,21 @@ class HomeFragment : Fragment() { playermage = view.findViewById(R.id.playerImage) buttonCollect = view.findViewById(R.id.buttonCollect) buttonCollect.setOnClickListener{ - findNavController().navigate(R.id.action_homeFragment_to_collectFragment, null, NavOptions.Builder().setPopUpTo(R.id.homeFragment, false).build()) + findNavController().navigate( + R.id.action_homeFragment_to_collectFragment, null, NavOptions.Builder().setPopUpTo( + R.id.homeFragment, false).build()) } buttonBoss = view.findViewById(R.id.buttonBoss) buttonBoss.setOnClickListener{ - findNavController().navigate(R.id.action_homeFragment_to_bossFragment, null, NavOptions.Builder().setPopUpTo(R.id.homeFragment, false).build()) + findNavController().navigate( + R.id.action_homeFragment_to_bossFragment, null, NavOptions.Builder().setPopUpTo( + R.id.homeFragment, false).build()) } buttonForge = view.findViewById(R.id.buttonForge) buttonForge.setOnClickListener{ - findNavController().navigate(R.id.action_homeFragment_to_forgeFragment, null, NavOptions.Builder().setPopUpTo(R.id.homeFragment, false).build()) + findNavController().navigate( + R.id.action_homeFragment_to_forgeFragment, null, NavOptions.Builder().setPopUpTo( + R.id.homeFragment, false).build()) } pseudo.text = currentPlayer.pseudo level.text = currentPlayer.level.toString() diff --git a/ShakeAndCraft/app/src/main/java/com/example/shakecraft/InventoryFragment.kt b/ShakeAndCraft/app/src/main/java/com/example/shakecraft/fragment/InventoryFragment.kt similarity index 86% rename from ShakeAndCraft/app/src/main/java/com/example/shakecraft/InventoryFragment.kt rename to ShakeAndCraft/app/src/main/java/com/example/shakecraft/fragment/InventoryFragment.kt index f886ce0..44fc644 100644 --- a/ShakeAndCraft/app/src/main/java/com/example/shakecraft/InventoryFragment.kt +++ b/ShakeAndCraft/app/src/main/java/com/example/shakecraft/fragment/InventoryFragment.kt @@ -1,4 +1,4 @@ -package com.example.shakecraft +package com.example.shakecraft.fragment import android.os.Bundle import androidx.fragment.app.Fragment @@ -7,6 +7,8 @@ import android.view.View import android.view.ViewGroup import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView +import com.example.shakecraft.MainActivity +import com.example.shakecraft.R import com.example.shakecraft.model.Player import com.example.shakecraft.view.adapter.AdapterInventory @@ -35,7 +37,7 @@ class InventoryFragment() : Fragment( ) { recyclerView = view.findViewById(R.id.recyclerviewInventory) with(recyclerView) { layoutManager = LinearLayoutManager(view.context) - adapter = AdapterInventory(currentPlayer.items) + adapter = AdapterInventory(currentPlayer.inventory.items) } } diff --git a/ShakeAndCraft/app/src/main/java/com/example/shakecraft/PlusFragment.kt b/ShakeAndCraft/app/src/main/java/com/example/shakecraft/fragment/PlusFragment.kt similarity index 94% rename from ShakeAndCraft/app/src/main/java/com/example/shakecraft/PlusFragment.kt rename to ShakeAndCraft/app/src/main/java/com/example/shakecraft/fragment/PlusFragment.kt index dec6917..310103d 100644 --- a/ShakeAndCraft/app/src/main/java/com/example/shakecraft/PlusFragment.kt +++ b/ShakeAndCraft/app/src/main/java/com/example/shakecraft/fragment/PlusFragment.kt @@ -1,4 +1,4 @@ -package com.example.shakecraft +package com.example.shakecraft.fragment import android.content.Intent import android.net.Uri @@ -8,6 +8,7 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.LinearLayout +import com.example.shakecraft.R class PlusFragment : Fragment() { private lateinit var buttonWiki : LinearLayout 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 index 788c537..7b77fc1 100644 --- a/ShakeAndCraft/app/src/main/java/com/example/shakecraft/model/Inventory.kt +++ b/ShakeAndCraft/app/src/main/java/com/example/shakecraft/model/Inventory.kt @@ -1,6 +1,6 @@ package com.example.shakecraft.model -class Inventory { +class Inventory() { var items: MutableList = mutableListOf() fun addItem(item: Item) { @@ -14,8 +14,8 @@ class Inventory { } fun hasItem(item: Item) : Boolean{ - for (inventoryitem in items){ - if(inventoryitem.type.name == item.type.name && inventoryitem.stack >= item.stack){ + for (inventoryItem in items){ + if(inventoryItem.type.name == item.type.name && inventoryItem.stack >= item.stack){ return true } } 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 5a03372..cd155b2 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,9 +1,6 @@ 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){ - } \ No newline at end of file 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 7ff071e..ba2a07d 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 @@ -2,10 +2,8 @@ package com.example.shakecraft.model import androidx.room.ColumnInfo import androidx.room.Entity -import androidx.room.ForeignKey import androidx.room.PrimaryKey import com.example.shakecraft.R -import com.example.shakecraft.model.Generator.Companion.generateTreasure @Entity(tableName="Player") class Player() { @@ -21,6 +19,7 @@ class Player() { val image: Int = R.drawable.player_image @ColumnInfo(index = true) var rank: String = "Beginner" + val inventory: Inventory= Inventory() fun changeRank(){ diff --git a/ShakeAndCraft/app/src/main/res/layout/fragment_boss.xml b/ShakeAndCraft/app/src/main/res/layout/fragment_boss.xml index 47403a4..f5bc66c 100644 --- a/ShakeAndCraft/app/src/main/res/layout/fragment_boss.xml +++ b/ShakeAndCraft/app/src/main/res/layout/fragment_boss.xml @@ -6,7 +6,7 @@ android:layout_height="match_parent" android:background="@drawable/backgroundboss" android:scaleType="center" - tools:context=".BossFragment"> + tools:context=".fragment.BossFragment"> + tools:context=".fragment.CollectFragment"> + tools:context=".fragment.CollectFragment"> + tools:context=".fragment.CollectFragment"> + tools:context=".fragment.InventoryFragment"> + tools:context=".fragment.PlusFragment">