diff --git a/ShakeAndCraft/.idea/misc.xml b/ShakeAndCraft/.idea/misc.xml
index 282e8b8..54d5acd 100644
--- a/ShakeAndCraft/.idea/misc.xml
+++ b/ShakeAndCraft/.idea/misc.xml
@@ -7,11 +7,4 @@
-
-
-
\ No newline at end of file
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 9011b6e..b9862e3 100644
--- a/ShakeAndCraft/app/src/main/java/com/example/shakecraft/CollectFragment.kt
+++ b/ShakeAndCraft/app/src/main/java/com/example/shakecraft/CollectFragment.kt
@@ -33,7 +33,7 @@ class CollectFragment() : Fragment() {
private lateinit var accelerometer: Sensor
private lateinit var accelerometerEventListener: SensorEventListener
private lateinit var progressBar: ProgressBar
- private lateinit var buttonCollect: TextView
+ private lateinit var buttonBack: TextView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@@ -61,8 +61,8 @@ class CollectFragment() : Fragment() {
}
private fun initializeViews(view: View) {
progressBar = view.findViewById(R.id.progressBar)
- buttonCollect = view.findViewById(R.id.backbutton)
- buttonCollect.setOnClickListener{
+ buttonBack = view.findViewById(R.id.backbutton)
+ buttonBack.setOnClickListener{
findNavController().navigate(R.id.action_collectFragment_to_homeFragment)
}
}
diff --git a/ShakeAndCraft/app/src/main/java/com/example/shakecraft/ForgeFragment.kt b/ShakeAndCraft/app/src/main/java/com/example/shakecraft/ForgeFragment.kt
new file mode 100644
index 0000000..e756f30
--- /dev/null
+++ b/ShakeAndCraft/app/src/main/java/com/example/shakecraft/ForgeFragment.kt
@@ -0,0 +1,66 @@
+package com.example.shakecraft
+
+import android.os.Bundle
+import androidx.fragment.app.Fragment
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import androidx.navigation.fragment.findNavController
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
+import com.example.shakecraft.model.RecipeManager
+import com.example.shakecraft.view.adapter.AdapterRecipe
+
+
+class ForgeFragment : Fragment() {
+ private lateinit var buttonBack: TextView
+ private lateinit var recyclerViewObjects: RecyclerView
+ private lateinit var recyclerViewTools: RecyclerView
+ private lateinit var recyclerViewBlacksmithing: RecyclerView
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+
+ }
+ private fun initializeViews(view: View) {
+ buttonBack = view.findViewById(R.id.backbutton)
+ buttonBack.setOnClickListener{
+ findNavController().navigate(R.id.action_forgeFragment_to_homeFragment)
+ }
+ }
+
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View? {
+ val view = inflater.inflate(R.layout.fragment_forge, container, false)
+
+ // Initialize views
+ initializeViews(view)
+
+ setUpRecyclerView(view)
+
+ return view
+ }
+
+ private fun setUpRecyclerView(view: View) {
+ recyclerViewObjects = view.findViewById(R.id.RecyclerviewObjects)
+ with(recyclerViewObjects) {
+ layoutManager = LinearLayoutManager(view.context)
+ adapter = AdapterRecipe(RecipeManager.recipeListObjects)
+ }
+ recyclerViewTools = view.findViewById(R.id.RecyclerviewTools)
+ with(recyclerViewTools) {
+ layoutManager = LinearLayoutManager(view.context)
+ adapter = AdapterRecipe(RecipeManager.recipeListTools)
+ }
+ recyclerViewBlacksmithing = view.findViewById(R.id.RecyclerviewBlacksmithing)
+ with(recyclerViewBlacksmithing) {
+ layoutManager = LinearLayoutManager(view.context)
+ adapter = AdapterRecipe(RecipeManager.recipeListBlacksmithing)
+ }
+ }
+
+
+}
\ No newline at end of file
diff --git a/ShakeAndCraft/app/src/main/java/com/example/shakecraft/HomeFragment.kt b/ShakeAndCraft/app/src/main/java/com/example/shakecraft/HomeFragment.kt
index 11d7ca2..0f19267 100644
--- a/ShakeAndCraft/app/src/main/java/com/example/shakecraft/HomeFragment.kt
+++ b/ShakeAndCraft/app/src/main/java/com/example/shakecraft/HomeFragment.kt
@@ -22,6 +22,7 @@ class HomeFragment : Fragment() {
private lateinit var xp : TextView
private lateinit var buttonCollect : ConstraintLayout
private lateinit var buttonBoss : ConstraintLayout
+ private lateinit var buttonForge : ConstraintLayout
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@@ -54,6 +55,10 @@ class HomeFragment : Fragment() {
buttonBoss.setOnClickListener{
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())
+ }
pseudo.text = currentPlayer.pseudo
level.text = currentPlayer.level.toString()
rank.text = currentPlayer.rank
diff --git a/ShakeAndCraft/app/src/main/java/com/example/shakecraft/MainActivity.kt b/ShakeAndCraft/app/src/main/java/com/example/shakecraft/MainActivity.kt
index e2d7a7d..973ed9a 100644
--- a/ShakeAndCraft/app/src/main/java/com/example/shakecraft/MainActivity.kt
+++ b/ShakeAndCraft/app/src/main/java/com/example/shakecraft/MainActivity.kt
@@ -7,18 +7,15 @@ import androidx.annotation.RequiresApi
import androidx.core.view.WindowCompat
import androidx.core.view.WindowInsetsCompat
import androidx.core.view.WindowInsetsControllerCompat
-
import androidx.navigation.findNavController
import androidx.navigation.ui.setupWithNavController
-
-import com.example.shakecraft.data.Stub
-
+import com.example.shakecraft.model.Player
import com.google.android.material.bottomnavigation.BottomNavigationView
class MainActivity : AppCompatActivity() {
- var currentPlayer = Stub().currentPlayer
+ var currentPlayer = Player("Winker",0)
@RequiresApi(Build.VERSION_CODES.R)
private fun hideSystemUI() {
diff --git a/ShakeAndCraft/app/src/main/java/com/example/shakecraft/model/Item.kt b/ShakeAndCraft/app/src/main/java/com/example/shakecraft/model/Item.kt
index 4eb1b07..c34cc84 100644
--- a/ShakeAndCraft/app/src/main/java/com/example/shakecraft/model/Item.kt
+++ b/ShakeAndCraft/app/src/main/java/com/example/shakecraft/model/Item.kt
@@ -3,10 +3,10 @@ package com.example.shakecraft.model
data class Item(
var name: String,
- var rarity: Int,
- var stack: Int,
+ var rarity: Int = 1,
+ var stack: Int = 1,
var image: Int,
- var xpReward: Int,
+ var xpReward: Int = 0,
)
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 e9da6ed..e400e68 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
@@ -63,6 +63,29 @@ class Player(val pseudo: String, var xp: Int = 0) {
items.remove(item)
}
+ fun hasItem(item: Item) : Boolean{
+ for (playeritem in items){
+ if(playeritem.name == item.name && playeritem.stack >= item.stack){
+ return true
+ }
+ }
+ return false
+ }
+ fun craft(recipe: Recipe) : Boolean{
+ for (ingredient in recipe.ingredients) {
+ val searchedItem = items.find { it.name == recipe.item.name }
+ if(searchedItem != null) {
+ searchedItem.stack -= recipe.item.stack
+ if (searchedItem.stack == 0){
+ items.remove(searchedItem)
+ }
+ return true
+ }
+ else
+ return false
+ }
+ return false
+ }
}
\ No newline at end of file
diff --git a/ShakeAndCraft/app/src/main/java/com/example/shakecraft/model/Recipe.kt b/ShakeAndCraft/app/src/main/java/com/example/shakecraft/model/Recipe.kt
index d42bcfa..5bcf18c 100644
--- a/ShakeAndCraft/app/src/main/java/com/example/shakecraft/model/Recipe.kt
+++ b/ShakeAndCraft/app/src/main/java/com/example/shakecraft/model/Recipe.kt
@@ -1,4 +1,4 @@
package com.example.shakecraft.model
-class Recipe(val item: Item, val quantity: Int, itemsNeeded : List- ) {
+class Recipe(val item: Item, val ingredients : List
- , val type: String) {
}
\ No newline at end of file
diff --git a/ShakeAndCraft/app/src/main/java/com/example/shakecraft/model/RecipeManager.kt b/ShakeAndCraft/app/src/main/java/com/example/shakecraft/model/RecipeManager.kt
new file mode 100644
index 0000000..eb42557
--- /dev/null
+++ b/ShakeAndCraft/app/src/main/java/com/example/shakecraft/model/RecipeManager.kt
@@ -0,0 +1,79 @@
+package com.example.shakecraft.model
+
+import com.example.shakecraft.R
+
+class RecipeManager {
+
+
+
+ companion object {
+
+ var recipeListObjects : List = listOf(
+ Recipe(
+ Item("Wooden Stick", image = R.drawable.wooden_stick, stack = 1),listOf(
+ Item("Wooden Plank", image = R.drawable.wooden_plank, stack = 2)
+ ), "Objects"),
+ Recipe(
+ Item("Wooden Plank", image = R.drawable.wooden_plank, stack = 4),listOf(
+ Item("Beech Log", image = R.drawable.log2, stack = 2)
+ ), "Objects"),
+ Recipe(
+ Item("Wooden Ball", image = R.drawable.wooden_ball, stack = 1),listOf(
+ Item("Wooden Stick", image = R.drawable.wooden_stick, stack = 2),
+ Item("Wooden Plank", image = R.drawable.wooden_plank, stack = 2)
+ ), "Objects"),
+
+ )
+ var recipeListTools : List = listOf(
+
+ Recipe(
+ Item("Bronze Sword", image = R.drawable.bronze_sword, stack = 1),listOf(
+ Item("Wooden Stick", image = R.drawable.wooden_stick, stack = 5),
+ Item("Bronze Ingot", image = R.drawable.bronze_ore, stack = 10)
+
+ ), "Tools"),
+ Recipe(
+ Item("Wizard Staff", image = R.drawable.wizard_staff, stack = 1),listOf(
+ Item("Wooden Stick", image = R.drawable.wooden_stick, stack = 10),
+ Item("Monster Eye", image = R.drawable.monster_eyes, stack = 20),
+
+ ), "Tools"),
+ Recipe(
+ Item("Diamond Axe", image = R.drawable.diamond_axe, stack = 1),listOf(
+ Item("Wooden Stick", image = R.drawable.wooden_stick, stack = 5),
+ Item("Diamond", image = R.drawable.diamond, stack = 10),
+
+ ), "Tools"),
+ )
+ var recipeListBlacksmithing : List = listOf(
+
+ Recipe(
+ Item("Bronze Ingot", image = R.drawable.bronze_ingot, stack = 1),listOf(
+ Item("Bronze Ore", image = R.drawable.bronze_ore, stack = 5)
+
+ ), "Blacksmithing"),
+ Recipe(
+ Item("Iron Ingot", image = R.drawable.iron_ingot, stack = 1),listOf(
+ Item("Iron Ore", image = R.drawable.iron_ore, stack = 5)
+
+ ), "Blacksmithing"),
+
+ )
+
+
+
+
+
+
+ fun isCraftable(recipe: Recipe, player: Player): Boolean{
+ for (ingredient in recipe.ingredients) {
+ if (!player.hasItem(ingredient)) {
+ return false
+ }
+ }
+ return true
+ }
+
+
+ }
+}
\ No newline at end of file
diff --git a/ShakeAndCraft/app/src/main/java/com/example/shakecraft/view/adapter/AdapterRecipe.kt b/ShakeAndCraft/app/src/main/java/com/example/shakecraft/view/adapter/AdapterRecipe.kt
new file mode 100644
index 0000000..fbc45dc
--- /dev/null
+++ b/ShakeAndCraft/app/src/main/java/com/example/shakecraft/view/adapter/AdapterRecipe.kt
@@ -0,0 +1,50 @@
+package com.example.shakecraft.view.adapter
+
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.example.shakecraft.R
+import com.example.shakecraft.model.Recipe
+
+
+
+class AdapterRecipe(private val recipelist: List) : RecyclerView.Adapter() {
+
+ class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ val textView: TextView
+ var imageView: ImageView
+
+
+ init {
+ // Define click listener for the ViewHolder's View
+
+ textView = view.findViewById(R.id.item_name)
+ imageView = view.findViewById(R.id.item_image)
+ }
+ fun bind(recipe: Recipe) {
+ textView.text = recipe.item.name
+ imageView.setImageResource(recipe.item.image)
+ }
+ }
+
+ override fun getItemCount() = recipelist.size
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
+ val view = LayoutInflater.from(parent.context)
+ .inflate(R.layout.list_item, parent, false)
+
+ return ViewHolder(view)
+ }
+
+ override fun onBindViewHolder(viewHolder: ViewHolder, position: Int) {
+ val recipe : Recipe = recipelist[position]
+ viewHolder.bind(recipe)
+ }
+
+
+
+
+}
+
diff --git a/ShakeAndCraft/app/src/main/res/drawable/bronze_ingot.png b/ShakeAndCraft/app/src/main/res/drawable/bronze_ingot.png
new file mode 100644
index 0000000..9cd1e25
Binary files /dev/null and b/ShakeAndCraft/app/src/main/res/drawable/bronze_ingot.png differ
diff --git a/ShakeAndCraft/app/src/main/res/drawable/bronze_sword.png b/ShakeAndCraft/app/src/main/res/drawable/bronze_sword.png
new file mode 100644
index 0000000..53ae8ba
Binary files /dev/null and b/ShakeAndCraft/app/src/main/res/drawable/bronze_sword.png differ
diff --git a/ShakeAndCraft/app/src/main/res/drawable/diamond_axe.png b/ShakeAndCraft/app/src/main/res/drawable/diamond_axe.png
new file mode 100644
index 0000000..a7ba8f6
Binary files /dev/null and b/ShakeAndCraft/app/src/main/res/drawable/diamond_axe.png differ
diff --git a/ShakeAndCraft/app/src/main/res/drawable/iron_ingot.png b/ShakeAndCraft/app/src/main/res/drawable/iron_ingot.png
new file mode 100644
index 0000000..35c4a20
Binary files /dev/null and b/ShakeAndCraft/app/src/main/res/drawable/iron_ingot.png differ
diff --git a/ShakeAndCraft/app/src/main/res/drawable/item_recipe_background.xml b/ShakeAndCraft/app/src/main/res/drawable/item_recipe_background.xml
new file mode 100644
index 0000000..76df25d
--- /dev/null
+++ b/ShakeAndCraft/app/src/main/res/drawable/item_recipe_background.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/ShakeAndCraft/app/src/main/res/drawable/recipelistcard.xml b/ShakeAndCraft/app/src/main/res/drawable/recipelistcard.xml
new file mode 100644
index 0000000..5991d41
--- /dev/null
+++ b/ShakeAndCraft/app/src/main/res/drawable/recipelistcard.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/ShakeAndCraft/app/src/main/res/drawable/roundedreciplistcard.xml b/ShakeAndCraft/app/src/main/res/drawable/roundedreciplistcard.xml
new file mode 100644
index 0000000..7b6ae35
--- /dev/null
+++ b/ShakeAndCraft/app/src/main/res/drawable/roundedreciplistcard.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/ShakeAndCraft/app/src/main/res/drawable/wizard_staff.png b/ShakeAndCraft/app/src/main/res/drawable/wizard_staff.png
new file mode 100644
index 0000000..db66ec7
Binary files /dev/null and b/ShakeAndCraft/app/src/main/res/drawable/wizard_staff.png differ
diff --git a/ShakeAndCraft/app/src/main/res/drawable/wooden_ball.png b/ShakeAndCraft/app/src/main/res/drawable/wooden_ball.png
new file mode 100644
index 0000000..65d0395
Binary files /dev/null and b/ShakeAndCraft/app/src/main/res/drawable/wooden_ball.png differ
diff --git a/ShakeAndCraft/app/src/main/res/drawable/wooden_plank.png b/ShakeAndCraft/app/src/main/res/drawable/wooden_plank.png
new file mode 100644
index 0000000..f9c32fd
Binary files /dev/null and b/ShakeAndCraft/app/src/main/res/drawable/wooden_plank.png differ
diff --git a/ShakeAndCraft/app/src/main/res/drawable/wooden_stick.png b/ShakeAndCraft/app/src/main/res/drawable/wooden_stick.png
new file mode 100644
index 0000000..d7aa17d
Binary files /dev/null and b/ShakeAndCraft/app/src/main/res/drawable/wooden_stick.png differ
diff --git a/ShakeAndCraft/app/src/main/res/layout/fragment_forge.xml b/ShakeAndCraft/app/src/main/res/layout/fragment_forge.xml
new file mode 100644
index 0000000..3185d63
--- /dev/null
+++ b/ShakeAndCraft/app/src/main/res/layout/fragment_forge.xml
@@ -0,0 +1,155 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ShakeAndCraft/app/src/main/res/layout/fragment_home.xml b/ShakeAndCraft/app/src/main/res/layout/fragment_home.xml
index e6c6bb6..2a87f89 100644
--- a/ShakeAndCraft/app/src/main/res/layout/fragment_home.xml
+++ b/ShakeAndCraft/app/src/main/res/layout/fragment_home.xml
@@ -143,7 +143,7 @@
+ app:layout_constraintTop_toBottomOf="@+id/buttonForge">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ShakeAndCraft/app/src/main/res/navigation/my_nav.xml b/ShakeAndCraft/app/src/main/res/navigation/my_nav.xml
index d579462..a8ec6b3 100644
--- a/ShakeAndCraft/app/src/main/res/navigation/my_nav.xml
+++ b/ShakeAndCraft/app/src/main/res/navigation/my_nav.xml
@@ -53,5 +53,19 @@
android:id="@+id/action_homeFragment_to_bossFragment"
app:destination="@id/bossFragment"
app:enterAnim="@android:anim/fade_in" />
+
+
+
+
\ No newline at end of file
diff --git a/ShakeAndCraft/app/src/main/res/values/colors.xml b/ShakeAndCraft/app/src/main/res/values/colors.xml
index 7b76b62..d51b429 100644
--- a/ShakeAndCraft/app/src/main/res/values/colors.xml
+++ b/ShakeAndCraft/app/src/main/res/values/colors.xml
@@ -15,4 +15,6 @@
#ADACB2
#FF3D3D
#FADB68
+ #999A9F
+ #3A393F
\ No newline at end of file