save the currentboss in tthe viewmodel 🎉
continuous-integration/drone/push Build is passing Details

viewmodel
Lucas Delanier 2 years ago
parent 35fd67cbcf
commit 640950bc50

@ -39,7 +39,6 @@ class BossFragment() : Fragment() {
private lateinit var image: ImageView private lateinit var image: ImageView
private lateinit var buttonCollect: TextView private lateinit var buttonCollect: TextView
private lateinit var recyclerView: RecyclerView private lateinit var recyclerView: RecyclerView
private lateinit var boss: Boss
val viewModel : MainViewModel by activityViewModels<MainViewModel>() val viewModel : MainViewModel by activityViewModels<MainViewModel>()
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
@ -56,8 +55,9 @@ class BossFragment() : Fragment() {
initializeViews(view) initializeViews(view)
// Set up boss // Set up boss
boss = Generator.generateBoss() if(viewModel.currentBoss == null)
setUpBoss(boss) viewModel.currentBoss = Generator.generateBoss()
setUpBoss(viewModel.currentBoss!!)
// Set up RecyclerView for boss loot // Set up RecyclerView for boss loot
setUpRecyclerView(view) setUpRecyclerView(view)
@ -104,7 +104,7 @@ class BossFragment() : Fragment() {
recyclerView = view.findViewById(R.id.recyclerviewBossLoot) recyclerView = view.findViewById(R.id.recyclerviewBossLoot)
with(recyclerView) { with(recyclerView) {
layoutManager = LinearLayoutManager(view.context) layoutManager = LinearLayoutManager(view.context)
adapter = AdapterBossLoot(boss.possibleLoot) adapter = AdapterBossLoot(viewModel.currentBoss?.possibleLoot!!)
} }
} }
private fun setUpActivityOrientation(){ private fun setUpActivityOrientation(){
@ -119,7 +119,7 @@ class BossFragment() : Fragment() {
toastView.visibility = View.VISIBLE toastView.visibility = View.VISIBLE
lootImage.setImageResource(item.type.image) lootImage.setImageResource(item.type.image)
lootName.text = item.type.name lootName.text = item.type.name
xpReward.text = boss.xpReward.toString() xpReward.text = viewModel.currentBoss?.xpReward.toString()
toastView.postDelayed({ toastView.postDelayed({
toastView.visibility = View.GONE toastView.visibility = View.GONE
}, 3000) }, 3000)
@ -133,35 +133,35 @@ class BossFragment() : Fragment() {
} }
override fun onSensorChanged(event: SensorEvent?) { override fun onSensorChanged(event: SensorEvent?) {
val acceleration = sqrt(event!!.values[0].pow(2) + event.values[1].pow(2) + event.values[2].pow(2)) val acceleration = sqrt(event!!.values[0].pow(2) + event.values[1].pow(2) + event.values[2].pow(2))
if (boss.life <= 0) { if (viewModel.currentBoss?.life!! <= 0) {
//Vibration to signal the death of the boss //Vibration to signal the death of the boss
val vibrator = context?.getSystemService(Context.VIBRATOR_SERVICE) as Vibrator val vibrator = context?.getSystemService(Context.VIBRATOR_SERVICE) as Vibrator
vibrator.vibrate(100) vibrator.vibrate(100)
// Generate a loot item and XP reward // Generate a loot item and XP reward
val item = Generator.generateLootBoss(boss.possibleLoot) val item = Generator.generateLootBoss(viewModel.currentBoss!!.possibleLoot)
currentPlayer.addItem(item) currentPlayer.addItem(item)
currentPlayer.gainXp(boss.xpReward) currentPlayer.gainXp(viewModel.currentBoss!!.xpReward)
// Show loot toast view for 3 seconds // Show loot toast view for 3 seconds
displayToast(view,item) displayToast(view,item)
// Spawn new boss and reset progress bar // Spawn new boss and reset progress bar
boss = Generator.generateBoss() viewModel.currentBoss = Generator.generateBoss()
setUpBoss(boss) setUpBoss(viewModel.currentBoss!!)
//Update displayed information //Update displayed information
setUpRecyclerView(view) setUpRecyclerView(view)
} else { } else {
if(acceleration > 20){ if(acceleration > 20){
boss.takeDamage(((acceleration / 80)+ currentPlayer.attack()/100).toDouble()) viewModel.currentBoss!!.takeDamage(((acceleration / 80)+ currentPlayer.attack()/100).toDouble())
} }
else{ else{
boss.takeDamage(currentPlayer.attack().toDouble()/100) viewModel.currentBoss!!.takeDamage(currentPlayer.attack().toDouble()/100)
} }
progressBar.progress = boss.life.toInt() progressBar.progress = viewModel.currentBoss!!.life.toInt()
} }
} }

@ -2,9 +2,11 @@ package com.example.shakecraft.viewmodel
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
import com.example.shakecraft.data.Stub import com.example.shakecraft.data.Stub
import com.example.shakecraft.model.Boss
import com.example.shakecraft.model.Player import com.example.shakecraft.model.Player
class MainViewModel : ViewModel() { class MainViewModel : ViewModel() {
var currentPlayer : Player = Stub().load() var currentPlayer : Player = Stub().load()
var currentBoss : Boss? = null
} }
Loading…
Cancel
Save