diff --git a/ShakeAndCraft/app/src/main/java/com/example/shakecraft/CollectFragment.kt b/ShakeAndCraft/app/src/main/java/com/example/shakecraft/CollectFragment.kt index b6e0464..c861150 100644 --- a/ShakeAndCraft/app/src/main/java/com/example/shakecraft/CollectFragment.kt +++ b/ShakeAndCraft/app/src/main/java/com/example/shakecraft/CollectFragment.kt @@ -17,7 +17,6 @@ import android.widget.ImageView import android.widget.ProgressBar import android.widget.TextView import androidx.fragment.app.activityViewModels -import androidx.lifecycle.Observer import androidx.navigation.fragment.findNavController @@ -54,12 +53,7 @@ class CollectFragment() : Fragment() { initializeViews(view) // Set up accelerometer listener - - viewModel.currentPlayer.observe(viewLifecycleOwner, Observer { - setUpAccelerometerListener(view, it) - }) - - + viewModel.currentPlayer.value?.let { setUpAccelerometerListener(view, it) } // Set up activity orientation setUpActivityOrientation() @@ -109,7 +103,7 @@ class CollectFragment() : Fragment() { // Generate a resource item and XP reward val item = Generator.generateLootCollection() - currentPlayer.addItem(item) + viewModel.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/CraftFragment.kt index b6430f2..50c82e1 100644 --- a/ShakeAndCraft/app/src/main/java/com/example/shakecraft/CraftFragment.kt +++ b/ShakeAndCraft/app/src/main/java/com/example/shakecraft/CraftFragment.kt @@ -93,7 +93,7 @@ class CraftFragment : Fragment() { viewModel.craft(recipe) } buttonForgeMax.setOnClickListener{ - currentPlayer.craft(recipe, RecipeManager.HowManyCraftable(recipe, currentPlayer)) + viewModel.craft(recipe, RecipeManager.HowManyCraftable(recipe, currentPlayer)) } diff --git a/ShakeAndCraft/app/src/main/java/com/example/shakecraft/InventoryFragment.kt b/ShakeAndCraft/app/src/main/java/com/example/shakecraft/InventoryFragment.kt index dce71f8..5204ffe 100644 --- a/ShakeAndCraft/app/src/main/java/com/example/shakecraft/InventoryFragment.kt +++ b/ShakeAndCraft/app/src/main/java/com/example/shakecraft/InventoryFragment.kt @@ -6,7 +6,6 @@ import android.view.View import android.view.ViewGroup import android.widget.Toast import androidx.fragment.app.activityViewModels -import androidx.lifecycle.Observer import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.example.shakecraft.model.Tool @@ -24,18 +23,15 @@ class InventoryFragment() : Fragment( ), AdapterInventory.OnItemLongClickListene } override fun onItemLongClick(position: Int) { - viewModel.currentPlayer.observe(viewLifecycleOwner, Observer { - if (it.items[position] is Tool) { - val text = if (it.equipeItem(it.items[position]) ) " was well equipped" else " has been well unequipped" - Toast.makeText( - context, - it.items[position].type.name + text, - Toast.LENGTH_SHORT - ).show() - setUpRecyclerView(view?.parent as ViewGroup, this) - } - }) - + if (viewModel.currentPlayer.value!!.items[position] is Tool) { + val text = if (viewModel.equipeItem(viewModel.currentPlayer.value!!.items[position]) ) " was well equipped" else " has been well unequipped" + Toast.makeText( + context, + viewModel.currentPlayer.value!!.items[position].type.name + text, + Toast.LENGTH_SHORT + ).show() + setUpRecyclerView(view?.parent as ViewGroup, this) + } } override fun onCreateView( @@ -50,18 +46,15 @@ class InventoryFragment() : Fragment( ), AdapterInventory.OnItemLongClickListene return view } private fun setUpRecyclerView(view: View,listener: AdapterInventory.OnItemLongClickListener ) { - recyclerView = view.findViewById(R.id.recyclerviewInventory) - viewModel.currentPlayer.observe(viewLifecycleOwner, Observer { - with(recyclerView) { - layoutManager = LinearLayoutManager(view.context) - adapter = AdapterInventory( - it.items, - listener, + with(recyclerView) { + layoutManager = LinearLayoutManager(view.context) + adapter = viewModel.currentPlayer.value?.let { + AdapterInventory(viewModel.currentPlayer.value!!.items, listener , it ) } - }) + } } diff --git a/ShakeAndCraft/app/src/main/java/com/example/shakecraft/viewmodel/MainViewModel.kt b/ShakeAndCraft/app/src/main/java/com/example/shakecraft/viewmodel/MainViewModel.kt index c66e0ef..16eecbc 100644 --- a/ShakeAndCraft/app/src/main/java/com/example/shakecraft/viewmodel/MainViewModel.kt +++ b/ShakeAndCraft/app/src/main/java/com/example/shakecraft/viewmodel/MainViewModel.kt @@ -4,6 +4,7 @@ import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import com.example.shakecraft.data.Stub import com.example.shakecraft.model.Boss +import com.example.shakecraft.model.Item import com.example.shakecraft.model.Recipe class MainViewModel : ViewModel() { @@ -14,8 +15,25 @@ class MainViewModel : ViewModel() { lateinit var currentBoss : Boss val isBossInitialized get() = this::currentBoss.isInitialized - fun craft(recipe : Recipe){ - currentPlayer.value?.craft(recipe) + fun craft(recipe : Recipe, count : Int = 1){ + currentPlayer.value?.craft(recipe, count) currentPlayer.value = currentPlayer.value } + + fun addItem(item: Item) { + currentPlayer.value?.addItem(item) + currentPlayer.value = currentPlayer.value + + } + + fun gainXp(xpReward: Int) { + currentPlayer.value?.gainXp(xpReward) + currentPlayer.value = currentPlayer.value + } + + fun equipeItem(item: Item): Boolean { + currentPlayer.value?.equipeItem(item) + currentPlayer.value = currentPlayer.value + return true + } } \ No newline at end of file