diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml
deleted file mode 100644
index fd2a24b..0000000
--- a/.idea/deploymentTargetDropDown.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 2cf014d..3737add 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -41,6 +41,8 @@ dependencies {
implementation 'com.google.android.material:material:1.5.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
implementation 'com.google.ar.sceneform:filament-android:1.17.1'
+ implementation 'androidx.navigation:navigation-fragment-ktx:2.5.3'
+ implementation 'androidx.navigation:navigation-ui-ktx:2.5.3'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
diff --git a/app/src/main/java/com/example/shakecraft/BossFragment.kt b/app/src/main/java/com/example/shakecraft/BossFragment.kt
index 357e326..966fc59 100644
--- a/app/src/main/java/com/example/shakecraft/BossFragment.kt
+++ b/app/src/main/java/com/example/shakecraft/BossFragment.kt
@@ -1,35 +1,117 @@
package com.example.shakecraft
+import android.annotation.SuppressLint
+import android.content.Context
+import android.content.pm.ActivityInfo
+import android.hardware.Sensor
+import android.hardware.SensorEvent
+import android.hardware.SensorEventListener
import android.hardware.SensorManager
import android.os.Bundle
+import android.os.Vibrator
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import android.widget.ImageView
+import android.widget.ProgressBar
+import com.example.shakecraft.data.Stub
+import com.example.shakecraft.model.Boss
+import com.example.shakecraft.model.Generator
+import com.example.shakecraft.model.Player
+import kotlin.math.pow
+import kotlin.math.sqrt
-// TODO: Rename parameter arguments, choose names that match
-// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
-private const val ARG_PARAM1 = "param1"
-private const val ARG_PARAM2 = "param2"
-/**
- * A simple [Fragment] subclass.
- * Use the [BossFragment.newInstance] factory method to
- * create an instance of this fragment.
- */
-class BossFragment : Fragment() {
+class BossFragment(var player: Player) : Fragment() {
+
+ var stubdata = Stub().load();
+ private lateinit var sensorManager: SensorManager
+ private lateinit var accelerometer: Sensor
+ private lateinit var accelerometerEventListener: SensorEventListener
+ private lateinit var progressBar: ProgressBar
+ private lateinit var image: ImageView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
+
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
- // Inflate the layout for this fragment
- return inflater.inflate(R.layout.fragment_boss, container, false)
+ // Récupérez une référence à la ProgressBar dans la vue
+ val view = inflater.inflate(R.layout.fragment_boss, container, false)
+
+ progressBar = view.findViewById(R.id.progressBar)
+ image = view.findViewById(R.id.imageBoss)
+ sensorManager = requireActivity().getSystemService(Context.SENSOR_SERVICE) as SensorManager
+ accelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER)
+ var boss = Generator.generateBoss();
+ progressBar.max = boss.maxlife;
+ progressBar.progress = boss.life;
+ image.setImageResource(boss.image)
+
+
+ // Créez un écouteur de capteur d'accéléromètre pour écouter les secousses
+ accelerometerEventListener = object : SensorEventListener {
+ override fun onAccuracyChanged(sensor: Sensor?, accuracy: Int) {
+ // Ne faites rien ici
+ }
+
+ @SuppressLint("ServiceCast")
+ override fun onSensorChanged(event: SensorEvent?) {
+ val acceleration = sqrt(
+ event!!.values[0].pow(2) + event.values[1].pow(2) + event.values[2].pow(2)
+ )
+ if(boss.life <= 0){
+ val item = Generator.generateLootBoss(boss.possibleLoot);
+ println(item);
+ player.addItem(item);
+ boss = Generator.generateBoss();
+ println(boss);
+ image.setImageResource(boss.image)
+ val vibrator = context?.getSystemService(Context.VIBRATOR_SERVICE) as Vibrator
+ vibrator.vibrate(100)
+
+
+
+
+
+ }
+ if (acceleration > 40) {
+ // Le téléphone a été secoué, mettre à jour la barre de chargement ici
+ boss.takeDamage((acceleration/80).toInt());
+ progressBar.progress = boss.life;
+ }
+ }
+ }
+
+ // Enregistrez l'écouteur de capteur d'accéléromètre
+ sensorManager.registerListener(
+ accelerometerEventListener,
+ accelerometer,
+ SensorManager.SENSOR_DELAY_GAME
+ )
+
+
+ // Retournez la vue de fragment
+ return view
+ }
+ override fun onActivityCreated(savedInstanceState: Bundle?) {
+ super.onActivityCreated(savedInstanceState)
+
+ val activity = requireActivity()
+ activity.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
}
+ override fun onDestroy() {
+ super.onDestroy()
+ // Désenregistrez l'écouteur de capteur d'accéléromètre lorsque le fragment est détruit
+ sensorManager.unregisterListener(accelerometerEventListener)
+ val activity = requireActivity()
+ activity.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/shakecraft/CollectFragment.kt b/app/src/main/java/com/example/shakecraft/CollectFragment.kt
index 28d0a7c..4aa3024 100644
--- a/app/src/main/java/com/example/shakecraft/CollectFragment.kt
+++ b/app/src/main/java/com/example/shakecraft/CollectFragment.kt
@@ -2,7 +2,6 @@ package com.example.shakecraft
import android.annotation.SuppressLint
import android.content.Context
-import android.content.Context.SENSOR_SERVICE
import android.content.pm.ActivityInfo
import android.hardware.Sensor
import android.hardware.SensorEvent
@@ -14,17 +13,12 @@ import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
-import android.view.animation.AlphaAnimation
import android.widget.ImageView
import android.widget.ProgressBar
import android.widget.TextView
-import androidx.core.content.ContextCompat.getSystemService
-import androidx.recyclerview.widget.LinearLayoutManager
-import androidx.recyclerview.widget.RecyclerView
import com.example.shakecraft.data.Stub
-import com.example.shakecraft.model.GeneratorLoot
+import com.example.shakecraft.model.Generator
import com.example.shakecraft.model.Player
-import com.example.shakecraft.view.adapter.AdapterInventory
import kotlin.math.pow
import kotlin.math.sqrt
@@ -40,6 +34,8 @@ class CollectFragment(var player: Player) : Fragment() {
super.onCreate(savedInstanceState)
+
+
}
override fun onCreateView(
@@ -65,32 +61,31 @@ class CollectFragment(var player: Player) : Fragment() {
event!!.values[0].pow(2) + event.values[1].pow(2) + event.values[2].pow(2)
)
if(progressBar.progress == 100){
+ val item = Generator.generateLootCollection();
+ println(item);
+
+ player.addItem(item);
+ progressBar.progress = 0;
val vibrator = context?.getSystemService(Context.VIBRATOR_SERVICE) as Vibrator
vibrator.vibrate(100)
- val item = GeneratorLoot.generateLootCollection();
- println(item);
val maVue = view.findViewById(R.id.toast)
val image = maVue.findViewById(R.id.imageViewLoot)
val name = maVue.findViewById(R.id.nameLoot)
val xp = maVue.findViewById(R.id.xpRewarded)
maVue.visibility = View.VISIBLE
- val fadeIn = AlphaAnimation(0f, 1f)
- fadeIn.duration = 200
- maVue.startAnimation(fadeIn)
+ image.setImageResource(item.image)
+ name.text = item.name
maVue.postDelayed({
maVue.visibility = View.GONE
- image.setImageResource(item.image)
- name.text = item.name
}, 3000)
- player.addItem(item);
- progressBar.progress = 0;
+
}
if (acceleration > 40) {
// Le téléphone a été secoué, mettre à jour la barre de chargement ici
diff --git a/app/src/main/java/com/example/shakecraft/model/Boss.kt b/app/src/main/java/com/example/shakecraft/model/Boss.kt
new file mode 100644
index 0000000..599b28f
--- /dev/null
+++ b/app/src/main/java/com/example/shakecraft/model/Boss.kt
@@ -0,0 +1,19 @@
+package com.example.shakecraft.model
+
+import com.example.shakecraft.R
+
+class Boss (
+ var name: String,
+ var life: Int,
+ var maxlife: Int,
+ var image: Int,
+){
+ val possibleLoot: List> = listOf(
+ Pair(Item(name = "Monster Bones", rarity = 0, stack = 1, R.drawable.monster_bones), 0.7),
+ Pair(Item(name = "Monster Eye", rarity = 0, stack = 1, R.drawable.monster_bones), 0.25),
+ Pair(Item(name = "Treasure Key", rarity = 0, stack = 1, R.drawable.treasure_key), 0.05),
+ )
+ fun takeDamage(strength: Int) {
+ this.life -= strength;
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/shakecraft/model/Generator.kt b/app/src/main/java/com/example/shakecraft/model/Generator.kt
new file mode 100644
index 0000000..99cb0c9
--- /dev/null
+++ b/app/src/main/java/com/example/shakecraft/model/Generator.kt
@@ -0,0 +1,65 @@
+package com.example.shakecraft.model
+
+import com.example.shakecraft.R
+import kotlin.random.Random
+
+class Generator {
+
+ companion object {
+ fun generateLootCollection(): Item {
+ val possibleLoot: List> = listOf(
+ Pair(Item(name = "Beech Log", rarity = 0, stack = 1, R.drawable.log2), 0.6),
+ Pair(Item(name = "Bronze Ore", rarity = 0, stack = 1, R.drawable.bronze_ore), 0.25),
+ Pair(Item(name = "Iron Ore", rarity = 0, stack = 1, R.drawable.iron_ore), 0.10),
+ Pair(Item(name = "Diamond", rarity = 0, stack = 1, R.drawable.diamond), 0.05),
+ )
+ val rand = Random.nextDouble()
+
+ var cumulativeProb = 0.0
+ for (element in possibleLoot) {
+ cumulativeProb += element.second
+ if (rand < cumulativeProb) {
+ return element.first
+ }
+ }
+ // Si aucun élément n'a été choisi, retourner le dernier élément de la liste
+ return possibleLoot.last().first
+ }
+
+ fun generateLootBoss( possibleLoot : List>): Item {
+ val rand = Random.nextDouble()
+
+ var cumulativeProb = 0.0
+ for (element in possibleLoot) {
+ cumulativeProb += element.second
+ if (rand < cumulativeProb) {
+ return element.first
+ }
+ }
+ // Si aucun élément n'a été choisi, retourner le dernier élément de la liste
+ return possibleLoot.last().first
+ }
+
+
+ fun generateBoss(): Boss {
+ val possibleBoss: List> = listOf(
+ Pair(Boss(name = "Margit the Fell Omen", life = 150, maxlife = 150, image = R.drawable.boss), 0.5),
+ Pair(Boss(name = "Godrick the Grafted", life = 200, maxlife = 200, image = R.drawable.skeleton), 0.2),
+ Pair(Boss(name = "Red Wolf of Radagon", life = 250, maxlife = 250, image = R.drawable.halberdier), 0.15),
+ Pair(Boss(name = "Old Banshee", life = 300, maxlife = 300, image = R.drawable.banshee), 0.10),
+ Pair(Boss(name = "Margit the Fell Omen", life = 500, maxlife = 500, image = R.drawable.lich), 0.05),
+ )
+ val rand = Random.nextDouble()
+
+ var cumulativeProb = 0.0
+ for (element in possibleBoss) {
+ cumulativeProb += element.second
+ if (rand < cumulativeProb) {
+ return element.first
+ }
+ }
+ // Si aucun élément n'a été choisi, retourner le dernier élément de la liste
+ return possibleBoss.last().first
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/shakecraft/model/GeneratorLoot.kt b/app/src/main/java/com/example/shakecraft/model/GeneratorLoot.kt
deleted file mode 100644
index 1f7208c..0000000
--- a/app/src/main/java/com/example/shakecraft/model/GeneratorLoot.kt
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.example.shakecraft.model
-
-import com.example.shakecraft.R
-import kotlin.random.Random
-
-class GeneratorLoot {
-
- companion object {
- fun generateLootCollection(): Item {
- val possibleLoot: List> = listOf(
- Pair(Item(name = "Beech Log", rarity = 0, stack = 1, R.drawable.log2), 0.6),
- Pair(Item(name = "Bronze Ore", rarity = 0, stack = 1, R.drawable.bronze_ore), 0.25),
- Pair(Item(name = "Iron Ore", rarity = 0, stack = 1, R.drawable.iron_ore), 0.10),
- Pair(Item(name = "Diamond", rarity = 0, stack = 1, R.drawable.diamond), 0.05),
- )
- val rand = Random.nextDouble()
-
- var cumulativeProb = 0.0
- for (element in possibleLoot) {
- cumulativeProb += element.second
- if (rand < cumulativeProb) {
- return element.first
- }
- }
- // Si aucun élément n'a été choisi, retourner le dernier élément de la liste
- return possibleLoot.last().first
- }
- }
-}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/banshee.png b/app/src/main/res/drawable/banshee.png
new file mode 100644
index 0000000..5e3962d
Binary files /dev/null and b/app/src/main/res/drawable/banshee.png differ
diff --git a/app/src/main/res/drawable/boss.png b/app/src/main/res/drawable/boss.png
new file mode 100644
index 0000000..9bfd11e
Binary files /dev/null and b/app/src/main/res/drawable/boss.png differ
diff --git a/app/src/main/res/drawable/halberdier.png b/app/src/main/res/drawable/halberdier.png
new file mode 100644
index 0000000..98a3750
Binary files /dev/null and b/app/src/main/res/drawable/halberdier.png differ
diff --git a/app/src/main/res/drawable/lich.png b/app/src/main/res/drawable/lich.png
new file mode 100644
index 0000000..02a07ea
Binary files /dev/null and b/app/src/main/res/drawable/lich.png differ
diff --git a/app/src/main/res/drawable/monster_bones.png b/app/src/main/res/drawable/monster_bones.png
new file mode 100644
index 0000000..e36f388
Binary files /dev/null and b/app/src/main/res/drawable/monster_bones.png differ
diff --git a/app/src/main/res/drawable/monster_eyes.png b/app/src/main/res/drawable/monster_eyes.png
new file mode 100644
index 0000000..b3023fd
Binary files /dev/null and b/app/src/main/res/drawable/monster_eyes.png differ
diff --git a/app/src/main/res/drawable/skeleton.png b/app/src/main/res/drawable/skeleton.png
new file mode 100644
index 0000000..d303e46
Binary files /dev/null and b/app/src/main/res/drawable/skeleton.png differ
diff --git a/app/src/main/res/drawable/treasure_key.png b/app/src/main/res/drawable/treasure_key.png
new file mode 100644
index 0000000..1f0fefb
Binary files /dev/null and b/app/src/main/res/drawable/treasure_key.png differ
diff --git a/app/src/main/res/layout/fragment_boss.xml b/app/src/main/res/layout/fragment_boss.xml
index 0bc344a..e32e608 100644
--- a/app/src/main/res/layout/fragment_boss.xml
+++ b/app/src/main/res/layout/fragment_boss.xml
@@ -59,28 +59,154 @@
app:layout_constraintTop_toBottomOf="@+id/frameLayout" />
-
+
+
+ app:layout_constraintTop_toBottomOf="@+id/imageBoss">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_collect.xml b/app/src/main/res/layout/fragment_collect.xml
index ca25ea6..a6cd9b8 100644
--- a/app/src/main/res/layout/fragment_collect.xml
+++ b/app/src/main/res/layout/fragment_collect.xml
@@ -228,7 +228,6 @@
android:layout_margin="5dp"
android:layout_width="40dp"
android:layout_height="40dp"
- android:src="@drawable/log2"
android:background="@drawable/item_background"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
@@ -248,7 +247,6 @@
android:id="@+id/nameLoot"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:text="Log tree"
android:textStyle="bold"
android:textSize="15sp"
android:textColor="@color/white">
@@ -263,7 +261,6 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="10"
- android:text="10"
android:textColor="@color/grey_300"
android:textSize="10sp">
+ app:layout_constraintTop_toBottomOf="@+id/collectbutton">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file