Compare commits
No commits in common. 'master' and 'change_to_navgraph' have entirely different histories.
master
...
change_to_
@ -1,24 +0,0 @@
|
||||
kind: pipeline
|
||||
type: docker
|
||||
name: ShakeAndCraft
|
||||
|
||||
trigger:
|
||||
event:
|
||||
- push
|
||||
|
||||
steps:
|
||||
- name: code-analysis
|
||||
image: openjdk:8-jdk
|
||||
environment:
|
||||
SONAR_TOKEN:
|
||||
from_secret: SONAR_TOKEN
|
||||
settings:
|
||||
sources: ./src/
|
||||
commands:
|
||||
- export SONAR_SCANNER_VERSION=4.7.0.2747
|
||||
- export SONAR_SCANNER_HOME=$HOME/.sonar/sonar-scanner-$SONAR_SCANNER_VERSION-linux
|
||||
- curl --create-dirs -sSLo $HOME/.sonar/sonar-scanner.zip https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-$SONAR_SCANNER_VERSION-linux.zip
|
||||
- unzip -o $HOME/.sonar/sonar-scanner.zip -d $HOME/.sonar/
|
||||
- export PATH=$SONAR_SCANNER_HOME/bin:$PATH
|
||||
- export SONAR_SCANNER_OPTS="-server"
|
||||
- sonar-scanner -D sonar.projectKey=ShakeAndCraft -D sonar.sources=. -D sonar.host.url=https://codefirst.iut.uca.fr/sonar
|
@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="$PROJECT_DIR$/.." vcs="Git" />
|
||||
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
Before Width: | Height: | Size: 88 KiB |
Before Width: | Height: | Size: 44 KiB |
Before Width: | Height: | Size: 185 KiB |
@ -1,186 +0,0 @@
|
||||
package com.example.shakecraft
|
||||
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.view.animation.Animation
|
||||
import android.view.animation.ScaleAnimation
|
||||
import android.widget.ImageView
|
||||
import android.widget.ProgressBar
|
||||
import android.widget.TextView
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.example.shakecraft.model.Boss
|
||||
import com.example.shakecraft.model.Generator
|
||||
import com.example.shakecraft.model.Item
|
||||
import com.example.shakecraft.model.Player
|
||||
import com.example.shakecraft.view.adapter.AdapterBossLoot
|
||||
import com.example.shakecraft.viewmodel.MainViewModel
|
||||
import kotlin.math.pow
|
||||
import kotlin.math.sqrt
|
||||
|
||||
|
||||
class BossFragment() : Fragment() {
|
||||
|
||||
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
|
||||
private lateinit var buttonCollect: TextView
|
||||
private lateinit var recyclerView: RecyclerView
|
||||
val viewModel : MainViewModel by activityViewModels<MainViewModel>()
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
}
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater, container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
): View? {
|
||||
|
||||
val view = inflater.inflate(R.layout.fragment_boss, container, false)
|
||||
|
||||
// Initialize views
|
||||
initializeViews(view)
|
||||
|
||||
// Set up boss
|
||||
if(!viewModel.isBossInitialized)
|
||||
viewModel.currentBoss = Generator.generateBoss()
|
||||
setUpBoss(viewModel.currentBoss)
|
||||
|
||||
// Set up RecyclerView for boss loot
|
||||
setUpRecyclerView(view)
|
||||
|
||||
// Set up accelerometer listener
|
||||
viewModel.currentPlayer.value?.let { setUpAccelerometerListener(view, it) }
|
||||
|
||||
|
||||
// Set up activity orientation
|
||||
setUpActivityOrientation()
|
||||
|
||||
// Return fragment view
|
||||
return view
|
||||
}
|
||||
private fun initializeViews(view: View) {
|
||||
progressBar = view.findViewById(R.id.progressBar)
|
||||
image = view.findViewById(R.id.imageBoss)
|
||||
buttonCollect = view.findViewById<TextView>(R.id.backbutton)
|
||||
buttonCollect.setOnClickListener{
|
||||
findNavController().navigate(R.id.action_bossFragment_to_homeFragment)
|
||||
}
|
||||
}
|
||||
private fun setUpBoss(boss: Boss) {
|
||||
progressBar.max = boss.maxlife
|
||||
progressBar.progress = boss.life.toInt()
|
||||
image.setImageResource(boss.image)
|
||||
|
||||
// Create scale animation for boss image
|
||||
val scaleAnimation = ScaleAnimation(
|
||||
1.2f, // from 1.2 to 1.0
|
||||
1.0f,
|
||||
1.2f,
|
||||
1.0f,
|
||||
Animation.RELATIVE_TO_SELF,
|
||||
0.5f,
|
||||
Animation.RELATIVE_TO_SELF,
|
||||
0.5f
|
||||
)
|
||||
scaleAnimation.duration = 1000 // lasts 1 second
|
||||
scaleAnimation.repeatCount = Animation.INFINITE // repeat indefinitely
|
||||
scaleAnimation.repeatMode = Animation.REVERSE // reverse animation direction
|
||||
image.startAnimation(scaleAnimation)
|
||||
}
|
||||
private fun setUpRecyclerView(view: View) {
|
||||
recyclerView = view.findViewById(R.id.recyclerviewBossLoot)
|
||||
with(recyclerView) {
|
||||
layoutManager = LinearLayoutManager(view.context)
|
||||
adapter = AdapterBossLoot(viewModel.currentBoss.possibleLoot)
|
||||
}
|
||||
}
|
||||
private fun setUpActivityOrientation(){
|
||||
val activity = requireActivity()
|
||||
activity.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
|
||||
}
|
||||
private fun displayToast(view: View, item: Item){
|
||||
val toastView = view.findViewById<View>(R.id.toast)
|
||||
val lootImage = toastView.findViewById<ImageView>(R.id.imageViewLoot)
|
||||
val lootName = toastView.findViewById<TextView>(R.id.nameLoot)
|
||||
val xpReward = toastView.findViewById<TextView>(R.id.xpRewarded)
|
||||
toastView.visibility = View.VISIBLE
|
||||
lootImage.setImageResource(item.type.image)
|
||||
lootName.text = item.type.name
|
||||
xpReward.text = viewModel.currentBoss.xpReward.toString()
|
||||
toastView.postDelayed({
|
||||
toastView.visibility = View.GONE
|
||||
}, 3000)
|
||||
}
|
||||
private fun setUpAccelerometerListener(view: View, currentPlayer: Player) {
|
||||
sensorManager = requireActivity().getSystemService(Context.SENSOR_SERVICE) as SensorManager
|
||||
accelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER)
|
||||
accelerometerEventListener = object : SensorEventListener {
|
||||
override fun onAccuracyChanged(sensor: Sensor?, accuracy: Int) {
|
||||
// Do nothing
|
||||
}
|
||||
override fun onSensorChanged(event: SensorEvent?) {
|
||||
val acceleration = sqrt(event!!.values[0].pow(2) + event.values[1].pow(2) + event.values[2].pow(2))
|
||||
if (viewModel.currentBoss.life <= 0) {
|
||||
|
||||
//Vibration to signal the death of the boss
|
||||
val vibrator = context?.getSystemService(Context.VIBRATOR_SERVICE) as Vibrator
|
||||
vibrator.vibrate(100)
|
||||
|
||||
// Generate a loot item and XP reward
|
||||
val item = Generator.generateLootBoss(viewModel.currentBoss.possibleLoot)
|
||||
currentPlayer.addItem(item)
|
||||
currentPlayer.gainXp(viewModel.currentBoss.xpReward)
|
||||
|
||||
// Show loot toast view for 3 seconds
|
||||
displayToast(view,item)
|
||||
|
||||
// Spawn new boss and reset progress bar
|
||||
viewModel.currentBoss = Generator.generateBoss()
|
||||
setUpBoss(viewModel.currentBoss)
|
||||
|
||||
//Update displayed information
|
||||
setUpRecyclerView(view)
|
||||
|
||||
} else {
|
||||
if(acceleration > 20){
|
||||
viewModel.currentBoss.takeDamage(((acceleration / 80)+ currentPlayer.attack()/100).toDouble())
|
||||
}
|
||||
else{
|
||||
viewModel.currentBoss.takeDamage(currentPlayer.attack().toDouble()/100)
|
||||
}
|
||||
progressBar.progress = viewModel.currentBoss.life.toInt()
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Register accelerometer sensor earphone with manager
|
||||
sensorManager.registerListener(
|
||||
accelerometerEventListener,
|
||||
accelerometer,
|
||||
SensorManager.SENSOR_DELAY_GAME
|
||||
)
|
||||
}
|
||||
override fun onDestroy() {
|
||||
super.onDestroy()
|
||||
|
||||
// Unregister the accelerometer sensor listener when the fragment is destroyed
|
||||
sensorManager.unregisterListener(accelerometerEventListener)
|
||||
val activity = requireActivity()
|
||||
activity.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED
|
||||
}
|
||||
}
|
@ -1,102 +0,0 @@
|
||||
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.Button
|
||||
import android.widget.ImageView
|
||||
import android.widget.TextView
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import androidx.lifecycle.Observer
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.example.shakecraft.model.Player
|
||||
import com.example.shakecraft.model.Recipe
|
||||
import com.example.shakecraft.model.RecipeManager
|
||||
import com.example.shakecraft.view.adapter.AdapterMaterials
|
||||
import com.example.shakecraft.viewmodel.MainViewModel
|
||||
|
||||
|
||||
class CraftFragment : Fragment() {
|
||||
private lateinit var buttonBack: TextView
|
||||
private lateinit var recyclerViewMaterials: RecyclerView
|
||||
private lateinit var recipe: Recipe
|
||||
private lateinit var image: ImageView
|
||||
private lateinit var name: TextView
|
||||
private lateinit var buttonForge: Button
|
||||
private lateinit var buttonForgeMax: Button
|
||||
private lateinit var numberCraftable: TextView
|
||||
private lateinit var craftValue : TextView
|
||||
private val viewModel : MainViewModel by activityViewModels()
|
||||
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
}
|
||||
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater, container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
): View? {
|
||||
|
||||
|
||||
val view = inflater.inflate(R.layout.fragment_craft, container, false)
|
||||
recipe = arguments?.getParcelable("recipe")!!
|
||||
|
||||
|
||||
viewModel.currentPlayer.observe(this.viewLifecycleOwner, Observer {player ->
|
||||
initializeViews(view, player)
|
||||
setUpRecyclerView(view, player)
|
||||
})
|
||||
|
||||
return view
|
||||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
}
|
||||
|
||||
private fun setUpRecyclerView(view: View, currentPlayer: Player) {
|
||||
recyclerViewMaterials = view.findViewById(R.id.RecyclerviewMaterials)
|
||||
with(recyclerViewMaterials) {
|
||||
layoutManager = LinearLayoutManager(view.context)
|
||||
adapter = AdapterMaterials(recipe.ingredients, currentPlayer)
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private fun initializeViews(view: View, currentPlayer: Player) {
|
||||
buttonBack = view.findViewById(R.id.backbutton)
|
||||
buttonForge = view.findViewById(R.id.buttonForge)
|
||||
buttonForgeMax = view.findViewById(R.id.buttonForgeMax)
|
||||
numberCraftable = view.findViewById(R.id.craftableNumber)
|
||||
craftValue = view.findViewById(R.id.craftValue)
|
||||
|
||||
buttonBack.setOnClickListener{
|
||||
findNavController().navigate(R.id.action_craftFragment_to_forgeFragment)
|
||||
}
|
||||
image = view.findViewById(R.id.item_image)
|
||||
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)
|
||||
buttonForgeMax.isEnabled = RecipeManager.isCraftable(recipe,currentPlayer)
|
||||
numberCraftable.text = RecipeManager.HowManyCraftable(recipe,currentPlayer).toString()
|
||||
craftValue.text = recipe.item.stack.toString()
|
||||
|
||||
buttonForge.setOnClickListener{
|
||||
viewModel.craft(recipe)
|
||||
}
|
||||
buttonForgeMax.setOnClickListener{
|
||||
viewModel.craft(recipe, RecipeManager.HowManyCraftable(recipe, currentPlayer))
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -1,84 +0,0 @@
|
||||
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.core.os.bundleOf
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.example.shakecraft.model.Recipe
|
||||
import com.example.shakecraft.model.RecipeManager
|
||||
import com.example.shakecraft.view.adapter.AdapterRecipe
|
||||
|
||||
|
||||
|
||||
class ForgeFragment : Fragment(), AdapterRecipe.OnItemClickListener {
|
||||
private lateinit var buttonBack: TextView
|
||||
private lateinit var recyclerViewObjects: RecyclerView
|
||||
private lateinit var recyclerViewTools: RecyclerView
|
||||
private lateinit var recyclerViewBlacksmithing: RecyclerView
|
||||
private lateinit var recipe: Recipe
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
}
|
||||
|
||||
override fun onItemClick(position: Int, type: String) {
|
||||
|
||||
recipe = when(type){
|
||||
"Objects" -> RecipeManager.recipeListObjects[position]
|
||||
"Tools" -> RecipeManager.recipeListTools[position]
|
||||
"Blacksmithing" -> RecipeManager.recipeListBlacksmithing[position]
|
||||
else -> {RecipeManager.recipeListObjects[position]}
|
||||
}
|
||||
|
||||
val bundle = bundleOf("recipe" to recipe)
|
||||
findNavController().navigate(R.id.action_forgeFragment_to_craftFragment, bundle)
|
||||
}
|
||||
|
||||
private fun initializeViews(view: View) {
|
||||
buttonBack = view.findViewById<TextView>(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, this)
|
||||
|
||||
return view
|
||||
}
|
||||
|
||||
private fun setUpRecyclerView(view: View, listener: AdapterRecipe.OnItemClickListener) {
|
||||
recyclerViewObjects = view.findViewById(R.id.RecyclerviewObjects)
|
||||
with(recyclerViewObjects) {
|
||||
layoutManager = LinearLayoutManager(view.context)
|
||||
adapter = AdapterRecipe(RecipeManager.recipeListObjects, listener)
|
||||
}
|
||||
recyclerViewTools = view.findViewById(R.id.RecyclerviewTools)
|
||||
with(recyclerViewTools) {
|
||||
layoutManager = LinearLayoutManager(view.context)
|
||||
adapter = AdapterRecipe(RecipeManager.recipeListTools, listener)
|
||||
}
|
||||
recyclerViewBlacksmithing = view.findViewById(R.id.RecyclerviewBlacksmithing)
|
||||
with(recyclerViewBlacksmithing) {
|
||||
layoutManager = LinearLayoutManager(view.context)
|
||||
adapter = AdapterRecipe(RecipeManager.recipeListBlacksmithing, listener)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -1,124 +0,0 @@
|
||||
package com.example.shakecraft
|
||||
import android.os.Bundle
|
||||
import android.text.Editable
|
||||
import android.text.TextWatcher
|
||||
import androidx.fragment.app.Fragment
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.EditText
|
||||
import android.widget.ImageView
|
||||
import android.widget.ProgressBar
|
||||
import android.widget.TextView
|
||||
import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import androidx.lifecycle.Observer
|
||||
import androidx.navigation.NavOptions
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import com.example.shakecraft.model.Player
|
||||
import com.example.shakecraft.viewmodel.MainViewModel
|
||||
|
||||
|
||||
class HomeFragment : Fragment() {
|
||||
private lateinit var pseudoEditText : EditText
|
||||
private lateinit var progressbar : ProgressBar
|
||||
private lateinit var level : TextView
|
||||
private lateinit var rank : TextView
|
||||
private lateinit var maxXp : TextView
|
||||
private lateinit var xp : TextView
|
||||
private lateinit var buttonCollect : ConstraintLayout
|
||||
private lateinit var buttonBoss : ConstraintLayout
|
||||
private lateinit var buttonForge : ConstraintLayout
|
||||
private lateinit var playermage : ImageView
|
||||
private lateinit var equipeditem: ImageView
|
||||
private lateinit var eventFishing: ImageView
|
||||
val viewModel : MainViewModel by activityViewModels<MainViewModel>()
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
}
|
||||
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater, container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
): View? {
|
||||
val isRaining = (activity as MainActivity).isRaining
|
||||
val view = inflater.inflate(R.layout.fragment_home,container,false)
|
||||
|
||||
// Initialize views
|
||||
|
||||
viewModel.currentPlayer.observe(viewLifecycleOwner, Observer {
|
||||
initializeViews(view, it, isRaining)
|
||||
})
|
||||
|
||||
|
||||
return view
|
||||
}
|
||||
|
||||
/*fun loadWeatherDate(){
|
||||
CoroutineScope(Dispatchers.IO).launch {
|
||||
val
|
||||
}
|
||||
}*/
|
||||
private fun initializeViews(view: View, currentPlayer : Player, isRaining : Boolean) {
|
||||
progressbar = view.findViewById(R.id.levelProgressBar)
|
||||
level = view.findViewById(R.id.levelTextView)
|
||||
rank = view.findViewById(R.id.rankTextView)
|
||||
maxXp = view.findViewById(R.id.maxXpTextView)
|
||||
xp = view.findViewById(R.id.xpTextView)
|
||||
playermage = view.findViewById(R.id.playerImage)
|
||||
buttonCollect = view.findViewById(R.id.buttonCollect)
|
||||
equipeditem = view.findViewById(R.id.equipedItemAttack)
|
||||
eventFishing = view.findViewById(R.id.buttonFishing)
|
||||
buttonCollect.setOnClickListener{
|
||||
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())
|
||||
}
|
||||
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())
|
||||
}
|
||||
level.text = currentPlayer.level.toString()
|
||||
rank.text = currentPlayer.rank
|
||||
xp.text = currentPlayer.xp.toString()
|
||||
maxXp.text = (currentPlayer.level*100).toString()
|
||||
progressbar.progress = currentPlayer.xp
|
||||
progressbar.max = currentPlayer.level*100
|
||||
playermage.setImageResource(currentPlayer.image)
|
||||
if(currentPlayer.equipedItem?.type?.image != null) {
|
||||
equipeditem.setImageResource(currentPlayer.equipedItem!!.type.image)
|
||||
}
|
||||
if(isRaining){
|
||||
eventFishing.visibility = View.VISIBLE
|
||||
|
||||
}
|
||||
|
||||
|
||||
pseudoEditText = view.findViewById(R.id.pseudoEditText)
|
||||
|
||||
pseudoEditText.setText(currentPlayer.pseudo)
|
||||
pseudoEditText.addTextChangedListener(object : TextWatcher {
|
||||
override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
|
||||
/*
|
||||
do nothing
|
||||
*/
|
||||
}
|
||||
|
||||
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
|
||||
/*
|
||||
do nothing
|
||||
*/
|
||||
}
|
||||
|
||||
override fun afterTextChanged(s: Editable?) {
|
||||
currentPlayer.pseudo = s.toString()
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -1,62 +0,0 @@
|
||||
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.Toast
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.example.shakecraft.model.Tool
|
||||
import com.example.shakecraft.view.adapter.AdapterInventory
|
||||
import com.example.shakecraft.viewmodel.MainViewModel
|
||||
|
||||
|
||||
class InventoryFragment() : Fragment( ), AdapterInventory.OnItemLongClickListener {
|
||||
private lateinit var recyclerView: RecyclerView
|
||||
val viewModel : MainViewModel by activityViewModels<MainViewModel>()
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
}
|
||||
|
||||
override fun onItemLongClick(position: Int) {
|
||||
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(
|
||||
|
||||
inflater: LayoutInflater, container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
): View? {
|
||||
val view = inflater.inflate(R.layout.fragment_inventory, container, false)
|
||||
|
||||
// Initialize views
|
||||
setUpRecyclerView(view, this)
|
||||
|
||||
return view
|
||||
}
|
||||
private fun setUpRecyclerView(view: View,listener: AdapterInventory.OnItemLongClickListener ) {
|
||||
recyclerView = view.findViewById(R.id.recyclerviewInventory)
|
||||
with(recyclerView) {
|
||||
layoutManager = LinearLayoutManager(view.context)
|
||||
adapter = viewModel.currentPlayer.value?.let {
|
||||
AdapterInventory(viewModel.currentPlayer.value!!.items, listener ,
|
||||
it
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
@ -1,100 +0,0 @@
|
||||
package com.example.shakecraft
|
||||
|
||||
import android.os.Build
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import androidx.activity.viewModels
|
||||
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.NavigationUI
|
||||
import androidx.navigation.ui.setupWithNavController
|
||||
import com.example.shakecraft.services.OpenWeatherMapService
|
||||
import com.example.shakecraft.viewmodel.MainViewModel
|
||||
import com.google.android.material.bottomnavigation.BottomNavigationView
|
||||
import kotlinx.coroutines.*
|
||||
import retrofit2.Retrofit
|
||||
import retrofit2.converter.gson.GsonConverterFactory
|
||||
|
||||
|
||||
class MainActivity: AppCompatActivity() {
|
||||
|
||||
var isRaining = false
|
||||
private val model: MainViewModel by viewModels()
|
||||
|
||||
@RequiresApi(Build.VERSION_CODES.R)
|
||||
private fun hideSystemUI() {
|
||||
WindowCompat.setDecorFitsSystemWindows(window, false)
|
||||
WindowInsetsControllerCompat(window,
|
||||
window.decorView.findViewById(android.R.id.content)).let { controller ->
|
||||
controller.hide(WindowInsetsCompat.Type.systemBars())
|
||||
|
||||
controller.systemBarsBehavior = WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private lateinit var bottomNav : BottomNavigationView
|
||||
@RequiresApi(Build.VERSION_CODES.R)
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
|
||||
super.onCreate(savedInstanceState)
|
||||
hideSystemUI()
|
||||
setContentView(R.layout.activity_main)
|
||||
val apiKey = "85a2724ad38b3994c2b7ebe1d239bbff"
|
||||
val cityName = "Clermont-Ferrand"
|
||||
|
||||
val retrofit = Retrofit.Builder()
|
||||
.baseUrl("https://api.openweathermap.org/data/2.5/")
|
||||
.addConverterFactory(GsonConverterFactory.create())
|
||||
.build()
|
||||
|
||||
val openWeatherMapService = retrofit.create(OpenWeatherMapService::class.java)
|
||||
|
||||
CoroutineScope(Dispatchers.IO).launch {
|
||||
val weatherResponse = openWeatherMapService.getCurrentWeather(cityName, apiKey)
|
||||
|
||||
isRaining =
|
||||
weatherResponse.weather.any { it.main.contains("rain", ignoreCase = true) }
|
||||
|
||||
println(isRaining)
|
||||
}
|
||||
|
||||
bottomNav = findViewById(R.id.bottomNavigationView)
|
||||
val navController = findNavController(R.id.fragment)
|
||||
navController.popBackStack(R.id.fragment, false)
|
||||
bottomNav.setupWithNavController(navController)
|
||||
bottomNav.setOnItemReselectedListener { item ->
|
||||
// Pop everything up to the reselected item
|
||||
val reselectedDestinationId = item.itemId
|
||||
navController.popBackStack(reselectedDestinationId, inclusive = false)
|
||||
}
|
||||
bottomNav.setOnItemSelectedListener { item ->
|
||||
NavigationUI.onNavDestinationSelected(item, navController)
|
||||
true
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
|
||||
// Masquer la barre de navigation et la barre d'état
|
||||
window.decorView.systemUiVisibility = (View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
|
||||
or View.SYSTEM_UI_FLAG_FULLSCREEN
|
||||
or View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY)
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
@ -1,45 +0,0 @@
|
||||
package com.example.shakecraft
|
||||
|
||||
import android.content.Intent
|
||||
import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import androidx.fragment.app.Fragment
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.LinearLayout
|
||||
|
||||
class PlusFragment : Fragment() {
|
||||
private lateinit var buttonWiki : LinearLayout
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
}
|
||||
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater, container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
): View? {
|
||||
// Inflate the layout for this fragment
|
||||
val view = inflater.inflate(R.layout.fragment_plus, container, false)
|
||||
|
||||
// Initialize views
|
||||
setUpRecyclerView(view)
|
||||
|
||||
return view
|
||||
}
|
||||
|
||||
private fun setUpRecyclerView(view: View,) {
|
||||
buttonWiki = view.findViewById(R.id.wikiButton)
|
||||
buttonWiki.setOnClickListener{
|
||||
val url = "https://codefirst.iut.uca.fr/git/lucas.delanier/ShakeAndCraft"
|
||||
val intent = Intent(Intent.ACTION_VIEW)
|
||||
intent.data = Uri.parse(url)
|
||||
intent.setPackage("com.android.chrome")
|
||||
startActivity(intent)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -1,20 +0,0 @@
|
||||
package com.example.shakecraft.data
|
||||
|
||||
import com.example.shakecraft.model.*
|
||||
|
||||
|
||||
class Stub {
|
||||
|
||||
fun load() : Player{
|
||||
val currentPlayer = Player("Winker",0)
|
||||
|
||||
currentPlayer.addItem(Item(type = ITEMS.BEECH_LOG.itemtype, stack = 30))
|
||||
currentPlayer.addItem(Item(type = ITEMS.BRONZE_INGOT.itemtype, stack = 30))
|
||||
currentPlayer.addItem(Tool(type = ITEMS.DIAMOND_AXE.itemtype, stack = 1, damage = 8))
|
||||
return currentPlayer
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
@ -1,19 +0,0 @@
|
||||
package com.example.shakecraft.data
|
||||
|
||||
data class WeatherResponse(
|
||||
val weather: List<Weather>,
|
||||
val info: Info
|
||||
)
|
||||
|
||||
data class Weather(
|
||||
val id: Int,
|
||||
val main: String,
|
||||
val description: String,
|
||||
val icon: String
|
||||
)
|
||||
|
||||
data class Info(
|
||||
val temp: Double,
|
||||
val feelsLike: Double,
|
||||
val humidity: Int
|
||||
)
|
@ -1,15 +0,0 @@
|
||||
package com.example.shakecraft.data.dao
|
||||
import androidx.room.Dao
|
||||
import androidx.room.Insert
|
||||
import androidx.room.OnConflictStrategy
|
||||
import androidx.room.Query
|
||||
import com.example.shakecraft.model.Item
|
||||
|
||||
@Dao
|
||||
interface ItemDao {
|
||||
@Query("SELECT * FROM item")
|
||||
suspend fun getAllItems(): List<Item>
|
||||
|
||||
@Insert(onConflict = OnConflictStrategy.REPLACE)
|
||||
suspend fun insertItem(item: Item)
|
||||
}
|
@ -1,16 +0,0 @@
|
||||
package com.example.shakecraft.data.dao
|
||||
|
||||
import androidx.room.Dao
|
||||
import androidx.room.Insert
|
||||
import androidx.room.OnConflictStrategy
|
||||
import androidx.room.Query
|
||||
import com.example.shakecraft.model.Player
|
||||
|
||||
@Dao
|
||||
interface PlayerDao {
|
||||
@Query("SELECT * FROM player")
|
||||
suspend fun getAllPlayers(): List<Player>
|
||||
|
||||
@Insert(onConflict = OnConflictStrategy.REPLACE)
|
||||
suspend fun insertPlayer(player: Player)
|
||||
}
|
@ -1,16 +0,0 @@
|
||||
package com.example.shakecraft.model
|
||||
|
||||
|
||||
class Boss (
|
||||
var name: String,
|
||||
var life: Double,
|
||||
var maxlife: Int,
|
||||
var image: Int,
|
||||
var xpReward: Int,
|
||||
val possibleLoot: List<Pair<Item, Double>>,
|
||||
){
|
||||
|
||||
fun takeDamage(strength: Double) {
|
||||
this.life -= strength
|
||||
}
|
||||
}
|
@ -1,46 +0,0 @@
|
||||
package com.example.shakecraft.model
|
||||
|
||||
import android.os.Parcel
|
||||
import android.os.Parcelable
|
||||
import androidx.room.Entity
|
||||
import androidx.room.PrimaryKey
|
||||
@Entity(tableName = "items")
|
||||
open class Item(
|
||||
val type: ItemType,
|
||||
|
||||
var stack: Int = 1,
|
||||
) : Parcelable {
|
||||
@PrimaryKey(autoGenerate = true) val id: String = type.name
|
||||
|
||||
|
||||
override fun describeContents(): Int {
|
||||
return 0
|
||||
}
|
||||
|
||||
override fun writeToParcel(parcel: Parcel, flags: Int) {
|
||||
parcel.writeString(type.name)
|
||||
parcel.writeInt(type.rarity)
|
||||
parcel.writeInt(type.image)
|
||||
parcel.writeInt(type.xpReward)
|
||||
parcel.writeInt(stack)
|
||||
}
|
||||
|
||||
companion object CREATOR : Parcelable.Creator<Item> {
|
||||
override fun createFromParcel(parcel: Parcel): Item {
|
||||
|
||||
return Item(
|
||||
ItemType(parcel.readString()!!,parcel.readInt(),
|
||||
parcel.readInt(),
|
||||
parcel.readInt(),),
|
||||
parcel.readInt()
|
||||
)
|
||||
}
|
||||
|
||||
override fun newArray(size: Int): Array<Item?> {
|
||||
return arrayOfNulls(size)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
@ -1,31 +0,0 @@
|
||||
package com.example.shakecraft.model
|
||||
import com.example.shakecraft.R
|
||||
|
||||
|
||||
enum class ITEMS(val itemtype: ItemType){
|
||||
|
||||
// Craftable items and resources
|
||||
BEECH_LOG(ItemType(name = "Beech Log", image = R.drawable.log2, rarity = 1, xpReward = 10)),
|
||||
WOODEN_STICK(ItemType(name = "Wooden Stick", image = R.drawable.wooden_stick, rarity = 1, xpReward = 0)),
|
||||
WOODEN_PLANK(ItemType(name = "Wooden Plank", image = R.drawable.wooden_plank, rarity = 1, xpReward = 0)),
|
||||
WOODEN_BALL(ItemType(name = "Wooden Ball", image = R.drawable.wooden_ball, rarity = 1, xpReward = 0)),
|
||||
WIZARD_STAFF(ItemType(name = "Wizard Staff", image = R.drawable.wizard_staff, rarity = 3, xpReward = 0)),
|
||||
|
||||
DIAMOND(ItemType(name = "Diamond", image = R.drawable.diamond, rarity = 3, xpReward = 30)),
|
||||
DIAMOND_AXE(ItemType(name = "Diamond Axe", image = R.drawable.diamond_axe, rarity = 3, xpReward = 0)),
|
||||
|
||||
BRONZE_ORE(ItemType(name = "Bronze Ore", image = R.drawable.bronze_ore, rarity = 2, xpReward = 20)),
|
||||
BRONZE_INGOT(ItemType(name = "Bronze Ingot", image = R.drawable.bronze_ingot, rarity = 1, xpReward = 0)),
|
||||
BRONZE_SWORD(ItemType(name = "Bronze Sword", image = R.drawable.bronze_sword, rarity = 2, xpReward = 0)),
|
||||
|
||||
IRON_ORE(ItemType(name = "Iron Ore", image = R.drawable.iron_ore, rarity = 2, xpReward = 25)),
|
||||
IRON_INGOT(ItemType(name = "Iron Ingot", image = R.drawable.iron_ingot, rarity = 1, xpReward = 0)),
|
||||
|
||||
|
||||
// Lootable items
|
||||
MONSTER_BONES(ItemType(name = "Monster Bones", image = R.drawable.monster_bones, rarity = 1, xpReward = 10)),
|
||||
MONSTER_EYE(ItemType(name = "Monster Eye", image = R.drawable.monster_eyes, rarity = 2, xpReward = 20)),
|
||||
TREASURE_KEY(ItemType(name = "Treasure Key", image = R.drawable.treasure_key, rarity = 2, xpReward = 20)),
|
||||
|
||||
|
||||
}
|
@ -1,6 +0,0 @@
|
||||
package com.example.shakecraft.model
|
||||
|
||||
class ItemType (val name : String,val image : Int,val rarity : Int, val xpReward : Int){
|
||||
|
||||
|
||||
}
|
@ -1,102 +0,0 @@
|
||||
package com.example.shakecraft.model
|
||||
|
||||
import com.example.shakecraft.R
|
||||
|
||||
class Player(var pseudo: String, var xp: Int = 0) {
|
||||
var level: Int = 1
|
||||
private set
|
||||
val image: Int = R.drawable.player_image
|
||||
|
||||
var items: MutableList<Item> = mutableListOf()
|
||||
private set
|
||||
var rank: String = "Beginner"
|
||||
private set
|
||||
var equipedItem : Tool? = null
|
||||
private set
|
||||
|
||||
|
||||
fun changeRank(){
|
||||
this.rank = when(level){
|
||||
in 1..2 -> "Beginner"
|
||||
in 3..5 -> "Intermediate"
|
||||
in 6..8 -> "Proficient"
|
||||
in 9..11 -> "Expert"
|
||||
in 12..14 -> "Master"
|
||||
in 15..17 -> "Professional"
|
||||
in 18..19 -> "Champion"
|
||||
in 20..22 -> "Legend"
|
||||
in 23..25 -> "Invincible"
|
||||
else -> {"Divine"}
|
||||
}
|
||||
}
|
||||
fun addItem(item: Item) {
|
||||
val findItem = items.find { it.type.name == item.type.name }
|
||||
|
||||
if(findItem!= null){
|
||||
findItem.stack += item.stack
|
||||
}
|
||||
else{
|
||||
if(item is Tool){
|
||||
items.add(Tool(type = item.type, stack = item.stack, 4))
|
||||
}
|
||||
else{
|
||||
items.add(Item(type = item.type, stack = item.stack))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun gainXp(xp: Int) {
|
||||
this.xp += xp
|
||||
if (this.xp >= this.level *100){
|
||||
this.level +=1
|
||||
this.xp = 0
|
||||
changeRank()
|
||||
}
|
||||
}
|
||||
|
||||
fun attack() : Int{
|
||||
if(equipedItem == null)
|
||||
return 0
|
||||
return equipedItem!!.damage
|
||||
}
|
||||
|
||||
|
||||
fun hasItem(item: Item) : Boolean{
|
||||
for (playeritem in items){
|
||||
if(playeritem.type.name == item.type.name && playeritem.stack >= item.stack){
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
fun craft(recipe: Recipe, count: Int = 1) : Boolean{
|
||||
println("test")
|
||||
for (i in 1..count) {
|
||||
for (ingredient in recipe.ingredients) {
|
||||
val searchedItem = items.find { it.type == ingredient.type }
|
||||
if (searchedItem != null) {
|
||||
searchedItem.stack -= ingredient.stack
|
||||
if (searchedItem.stack == 0) {
|
||||
items.remove(searchedItem)
|
||||
}
|
||||
}
|
||||
}
|
||||
println("item:" + recipe.item.stack)
|
||||
addItem(recipe.item)
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
fun equipeItem(item : Item) : Boolean{
|
||||
if(equipedItem == item) {
|
||||
println("ca jarte")
|
||||
equipedItem = null
|
||||
return false
|
||||
}
|
||||
equipedItem = item as Tool
|
||||
return true
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -1,29 +0,0 @@
|
||||
package com.example.shakecraft.model
|
||||
|
||||
import android.os.Parcel
|
||||
import android.os.Parcelable
|
||||
|
||||
class Recipe(val item: Item, val ingredients : List<Item>, val type: String) : Parcelable {
|
||||
override fun describeContents(): Int {
|
||||
return 0
|
||||
}
|
||||
|
||||
override fun writeToParcel(parcel: Parcel, flags: Int) {
|
||||
parcel.writeParcelable(item, flags)
|
||||
parcel.writeTypedList(ingredients)
|
||||
parcel.writeString(type)
|
||||
}
|
||||
companion object CREATOR : Parcelable.Creator<Recipe> {
|
||||
override fun createFromParcel(parcel: Parcel): Recipe {
|
||||
return Recipe(
|
||||
parcel.readParcelable(Item::class.java.classLoader)!!,
|
||||
parcel.createTypedArrayList(Item.CREATOR)!!,
|
||||
parcel.readString()!!
|
||||
)
|
||||
}
|
||||
|
||||
override fun newArray(size: Int): Array<Recipe?> {
|
||||
return arrayOfNulls(size)
|
||||
}
|
||||
}
|
||||
}
|
@ -1,91 +0,0 @@
|
||||
package com.example.shakecraft.model
|
||||
|
||||
class RecipeManager {
|
||||
|
||||
|
||||
|
||||
companion object {
|
||||
|
||||
val recipeListObjects : List<Recipe> = listOf(
|
||||
Recipe(
|
||||
Item(type = ITEMS.WOODEN_STICK.itemtype, stack = 1),listOf(
|
||||
Item(type = ITEMS.WOODEN_PLANK.itemtype, stack = 2)
|
||||
), "Objects"),
|
||||
Recipe(
|
||||
Item(type = ITEMS.WOODEN_PLANK.itemtype, stack = 3),listOf(
|
||||
Item(type = ITEMS.BEECH_LOG.itemtype, stack = 1)
|
||||
), "Objects"),
|
||||
Recipe(
|
||||
Item(type = ITEMS.WOODEN_BALL.itemtype, stack = 1),listOf(
|
||||
Item(type = ITEMS.WOODEN_STICK.itemtype, stack = 2),
|
||||
Item(type = ITEMS.WOODEN_PLANK.itemtype, stack = 2)
|
||||
), "Objects"),
|
||||
|
||||
)
|
||||
val recipeListTools : List<Recipe> = listOf(
|
||||
|
||||
Recipe(
|
||||
Tool(type = ITEMS.BRONZE_SWORD.itemtype, stack = 1, damage = 4),listOf(
|
||||
Item(type = ITEMS.WOODEN_STICK.itemtype, stack = 5),
|
||||
Item(type = ITEMS.BRONZE_INGOT.itemtype, stack = 10)
|
||||
|
||||
), "Tools"),
|
||||
Recipe(
|
||||
Tool(type = ITEMS.WIZARD_STAFF.itemtype, stack = 1, damage = 6),listOf(
|
||||
Item(type = ITEMS.WOODEN_STICK.itemtype, stack = 10),
|
||||
Item(type = ITEMS.MONSTER_EYE.itemtype, stack = 20),
|
||||
|
||||
), "Tools"),
|
||||
Recipe(
|
||||
Tool(type = ITEMS.DIAMOND_AXE.itemtype, stack = 1, damage = 8),listOf(
|
||||
Item(type = ITEMS.WOODEN_STICK.itemtype, stack = 5),
|
||||
Item(type = ITEMS.DIAMOND.itemtype, stack = 10),
|
||||
|
||||
), "Tools"),
|
||||
)
|
||||
val recipeListBlacksmithing : List<Recipe> = listOf(
|
||||
|
||||
Recipe(
|
||||
Item(type = ITEMS.BRONZE_INGOT.itemtype, stack = 1),listOf(
|
||||
Item(type = ITEMS.BRONZE_ORE.itemtype, stack = 5)
|
||||
|
||||
), "Blacksmithing"),
|
||||
Recipe(
|
||||
Item(type = ITEMS.IRON_INGOT.itemtype, stack = 1),listOf(
|
||||
Item(type = ITEMS.IRON_ORE.itemtype, stack = 5)
|
||||
|
||||
), "Blacksmithing"),
|
||||
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
fun isCraftable(recipe: Recipe, player: Player): Boolean{
|
||||
for (ingredient in recipe.ingredients) {
|
||||
if (!player.hasItem(ingredient)) {
|
||||
return false
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
fun HowManyCraftable(recipe: Recipe, player: Player): Int{
|
||||
val divisedList = mutableListOf<Int>()
|
||||
return if (!isCraftable(recipe,player)) 0
|
||||
else{
|
||||
for(element in recipe.ingredients){
|
||||
val itemSearch = player.items.find { it.type.name == element.type.name }
|
||||
if(itemSearch!= null)
|
||||
divisedList.add(itemSearch.stack / element.stack)
|
||||
}
|
||||
divisedList.min()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
@ -1,4 +0,0 @@
|
||||
package com.example.shakecraft.model
|
||||
|
||||
class Tool(type : ItemType, stack: Int,val damage : Int) : Item(type, stack) {
|
||||
}
|
@ -1,12 +0,0 @@
|
||||
package com.example.shakecraft.services
|
||||
import com.example.shakecraft.data.WeatherResponse
|
||||
import retrofit2.http.GET
|
||||
import retrofit2.http.Query
|
||||
|
||||
interface OpenWeatherMapService {
|
||||
@GET("weather")
|
||||
suspend fun getCurrentWeather(
|
||||
@Query("q") cityName: String,
|
||||
@Query("appid") apiKey: String
|
||||
): WeatherResponse
|
||||
}
|
@ -1,80 +0,0 @@
|
||||
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.Item
|
||||
import com.example.shakecraft.model.Player
|
||||
import com.example.shakecraft.model.Tool
|
||||
|
||||
|
||||
class AdapterInventory(
|
||||
private val inventory: List<Item>,
|
||||
private val listener: OnItemLongClickListener,
|
||||
private val currentPlayer : Player
|
||||
) :
|
||||
RecyclerView.Adapter<AdapterInventory.ViewHolder>() {
|
||||
|
||||
inner class ViewHolder(view: View) : RecyclerView.ViewHolder(view), View.OnLongClickListener {
|
||||
val textView: TextView
|
||||
val textViewNumber: TextView
|
||||
var imageView: ImageView
|
||||
var armorIndicator : ImageView
|
||||
|
||||
|
||||
init {
|
||||
// Define click listener for the ViewHolder's View
|
||||
itemView.setOnLongClickListener(this)
|
||||
textView = view.findViewById(R.id.item_name)
|
||||
textViewNumber = view.findViewById(R.id.item_stock)
|
||||
imageView = view.findViewById(R.id.item_image)
|
||||
armorIndicator = view.findViewById(R.id.armor_indicator)
|
||||
}
|
||||
|
||||
override fun onLongClick(v: View?): Boolean {
|
||||
val position = adapterPosition
|
||||
if(position != RecyclerView.NO_POSITION) {
|
||||
listener.onItemLongClick(position)
|
||||
}
|
||||
return true
|
||||
}
|
||||
fun bind(item: Item) {
|
||||
textView.text = item.type.name
|
||||
textViewNumber.text = item.stack.toString()
|
||||
imageView.setImageResource(item.type.image)
|
||||
if (item is Tool) {
|
||||
println("tool")
|
||||
armorIndicator.visibility = View.VISIBLE
|
||||
if(currentPlayer.equipedItem == item) armorIndicator.setImageResource(R.drawable.armor_equiped_icon) else armorIndicator.setImageResource(R.drawable.armor_icon)
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
interface OnItemLongClickListener{
|
||||
fun onItemLongClick(position: Int)
|
||||
}
|
||||
|
||||
override fun getItemCount() = inventory.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 item : Item = inventory[position]
|
||||
viewHolder.bind(item)
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
@ -1,65 +0,0 @@
|
||||
package com.example.shakecraft.view.adapter
|
||||
|
||||
import android.graphics.Color
|
||||
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.Item
|
||||
import com.example.shakecraft.model.Player
|
||||
|
||||
|
||||
|
||||
class AdapterMaterials(private val materials: List<Item>, val currentplayer: Player) : RecyclerView.Adapter<AdapterMaterials.ViewHolder>() {
|
||||
|
||||
class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
|
||||
val textView: TextView
|
||||
val textViewNumberNeeded: TextView
|
||||
val textViewNumberPlayer: TextView
|
||||
var imageView: ImageView
|
||||
|
||||
|
||||
|
||||
init {
|
||||
// Define click listener for the ViewHolder's View
|
||||
|
||||
textView = view.findViewById(R.id.item_name)
|
||||
textViewNumberPlayer = view.findViewById(R.id.numberCurrentPlayer)
|
||||
textViewNumberNeeded = view.findViewById(R.id.numberNeeded)
|
||||
imageView = view.findViewById(R.id.item_image)
|
||||
}
|
||||
fun bind(item: Item, currentplayer: Player) {
|
||||
textView.text = item.type.name
|
||||
val itemSearch = currentplayer.items.find { it.type.name == item.type.name }
|
||||
textViewNumberNeeded.text = item.stack.toString()
|
||||
textViewNumberPlayer.text = itemSearch?.stack?.toString() ?: "0"
|
||||
imageView.setImageResource(item.type.image)
|
||||
if (itemSearch != null) {
|
||||
if(item.stack > itemSearch.stack) textViewNumberPlayer.setTextColor(Color.RED) else textViewNumberPlayer.setTextColor(Color.WHITE)
|
||||
|
||||
}
|
||||
else textViewNumberPlayer.setTextColor(Color.RED)
|
||||
}
|
||||
}
|
||||
|
||||
override fun getItemCount() = materials.size
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
|
||||
val view = LayoutInflater.from(parent.context)
|
||||
.inflate(R.layout.list_craft, parent, false)
|
||||
|
||||
return ViewHolder(view)
|
||||
}
|
||||
|
||||
override fun onBindViewHolder(viewHolder: ViewHolder, position: Int) {
|
||||
val item : Item = materials[position]
|
||||
viewHolder.bind(item, currentplayer)
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
@ -1,66 +0,0 @@
|
||||
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<Recipe>,
|
||||
private val listener: OnItemClickListener
|
||||
) :
|
||||
RecyclerView.Adapter<AdapterRecipe.ViewHolder>() {
|
||||
|
||||
inner class ViewHolder(view: View) : RecyclerView.ViewHolder(view), View.OnClickListener {
|
||||
val textView: TextView
|
||||
var imageView: ImageView
|
||||
|
||||
|
||||
init {
|
||||
// Define click listener for the ViewHolder's View
|
||||
itemView.setOnClickListener(this)
|
||||
textView = view.findViewById(R.id.item_name)
|
||||
imageView = view.findViewById(R.id.item_image)
|
||||
}
|
||||
|
||||
override fun onClick(v: View?) {
|
||||
val position = adapterPosition
|
||||
val type = recipelist.first().type
|
||||
if(position != RecyclerView.NO_POSITION) {
|
||||
listener.onItemClick(position, type)
|
||||
}
|
||||
}
|
||||
fun bind(recipe: Recipe) {
|
||||
textView.text = recipe.item.type.name
|
||||
imageView.setImageResource(recipe.item.type.image)
|
||||
}
|
||||
}
|
||||
|
||||
interface OnItemClickListener{
|
||||
fun onItemClick(position: Int, type: String)
|
||||
}
|
||||
|
||||
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)
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
@ -1,39 +0,0 @@
|
||||
package com.example.shakecraft.viewmodel
|
||||
|
||||
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() {
|
||||
|
||||
var currentPlayer = MutableLiveData(Stub().load())
|
||||
|
||||
|
||||
lateinit var currentBoss : Boss
|
||||
val isBossInitialized get() = this::currentBoss.isInitialized
|
||||
|
||||
fun craft(recipe : Recipe, count : Int = 1){
|
||||
currentPlayer.value?.craft(recipe, count)
|
||||
this.currentPlayer.value = currentPlayer.value
|
||||
}
|
||||
|
||||
fun addItem(item: Item) {
|
||||
currentPlayer.value?.addItem(item)
|
||||
this.currentPlayer.value = currentPlayer.value
|
||||
|
||||
}
|
||||
|
||||
fun gainXp(xpReward: Int) {
|
||||
currentPlayer.value?.gainXp(xpReward)
|
||||
this.currentPlayer.value = currentPlayer.value
|
||||
}
|
||||
|
||||
fun equipeItem(item: Item): Boolean {
|
||||
currentPlayer.value?.equipeItem(item)
|
||||
this.currentPlayer.value = currentPlayer.value
|
||||
return true
|
||||
}
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
<!--When the button is not enabled-->
|
||||
<item android:state_enabled="false" android:color="@color/grey" />
|
||||
<!--When button is enabled-->
|
||||
<item android:state_enabled="true" android:color="@color/blue" />
|
||||
<!--Default Text Color-->
|
||||
<item android:color="#db402c" />
|
||||
|
||||
</selector>
|
Before Width: | Height: | Size: 639 B |
Before Width: | Height: | Size: 929 B |
Before Width: | Height: | Size: 9.3 KiB |
@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<solid android:color="@color/black_800"/>
|
||||
<corners
|
||||
android:topLeftRadius="5dp"
|
||||
android:topRightRadius="5dp"
|
||||
android:bottomLeftRadius="5dp"
|
||||
android:bottomRightRadius="5dp"/>
|
||||
<stroke android:width="1dp"
|
||||
android:color="@color/grey_100" />
|
||||
</shape>
|
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 2.3 KiB |
@ -1,18 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
<item>
|
||||
<shape android:shape="rectangle">
|
||||
<solid android:color="@color/grey_100" />
|
||||
</shape>
|
||||
|
||||
</item>
|
||||
<item android:top="1dp" android:bottom="1dp" >
|
||||
<shape android:shape="rectangle">
|
||||
<solid android:color="@color/black_800" />
|
||||
</shape>
|
||||
</item>
|
||||
|
||||
|
||||
|
||||
</layer-list>
|
@ -1,13 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:state_pressed="true">
|
||||
<shape android:shape="rectangle">
|
||||
<solid android:color="@color/blue" />
|
||||
</shape>
|
||||
</item>
|
||||
<item>
|
||||
<shape android:shape="rectangle">
|
||||
<solid android:color="@android:color/transparent" />
|
||||
</shape>
|
||||
</item>
|
||||
</selector>
|
Before Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 5.5 KiB |
Before Width: | Height: | Size: 79 KiB |
Before Width: | Height: | Size: 963 B |
Before Width: | Height: | Size: 359 B |
Before Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.8 KiB |
@ -1,9 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<solid android:color="@color/grey_500"/>
|
||||
<corners
|
||||
android:topLeftRadius="5dp"
|
||||
android:topRightRadius="5dp"
|
||||
android:bottomLeftRadius="5dp"
|
||||
android:bottomRightRadius="5dp"/>
|
||||
</shape>
|
Before Width: | Height: | Size: 4.6 KiB |
@ -1,4 +0,0 @@
|
||||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:drawable="@color/black_800"/>
|
||||
<item android:drawable="@drawable/roundedreciplistcard"/>
|
||||
</layer-list>
|
@ -1,9 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<solid android:color="@color/grey"/>
|
||||
<corners
|
||||
android:topLeftRadius="19dp"
|
||||
android:topRightRadius="19dp"
|
||||
android:bottomLeftRadius="19dp"
|
||||
android:bottomRightRadius="19dp"/>
|
||||
</shape>
|
Before Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 2.3 KiB |
@ -1,450 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@color/black_800"
|
||||
tools:context=".MainActivity">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/textView2"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="10dp"
|
||||
android:paddingBottom="10dp"
|
||||
android:text="@string/home_title"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="16sp"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/constraintLayout"
|
||||
android:layout_width="250dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginHorizontal="15dp"
|
||||
android:background="@drawable/rounded_border_button"
|
||||
android:paddingLeft="15dp"
|
||||
android:paddingRight="15dp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/textView2">
|
||||
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/profil_container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="horizontal"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent">
|
||||
|
||||
<FrameLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginVertical="10dp">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/imageView2"
|
||||
android:layout_width="60dp"
|
||||
android:layout_height="95dp"
|
||||
android:layout_gravity="bottom"
|
||||
android:contentDescription="@string/landscape"
|
||||
android:src="@drawable/background" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/playerImage"
|
||||
android:layout_width="50dp"
|
||||
android:layout_height="80dp"
|
||||
android:layout_gravity="bottom"
|
||||
android:contentDescription="Landscape" />
|
||||
</FrameLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="15dp"
|
||||
android:layout_marginTop="5dp"
|
||||
android:orientation="vertical">
|
||||
|
||||
<EditText
|
||||
android:id="@+id/pseudoEditText"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="Pseudo"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="18sp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/textView6"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="Lvl."
|
||||
android:textColor="@color/grey_300" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/levelTextView"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="2"
|
||||
android:textColor="@color/grey_300" />
|
||||
|
||||
<ProgressBar
|
||||
android:id="@+id/levelProgressBar"
|
||||
style="?android:attr/progressBarStyleHorizontal"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="5dp"
|
||||
android:layout_marginHorizontal="10dp"
|
||||
android:layout_weight="1"
|
||||
android:max="100"
|
||||
android:progress="20"
|
||||
android:progressDrawable="@drawable/custom_level_progressbar" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/xpTextView"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="349"
|
||||
android:textColor="@color/white" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/textView7"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="/"
|
||||
android:textColor="@color/white" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/maxXpTextView"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="@color/white" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/textView6"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingRight="10dp"
|
||||
android:text="Rank"
|
||||
android:textColor="@color/grey_300" />
|
||||
|
||||
|
||||
<TextView
|
||||
android:id="@+id/rankTextView"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="Beginner"
|
||||
android:textColor="@color/white"
|
||||
android:textStyle="bold" />
|
||||
</LinearLayout>
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center_horizontal"
|
||||
android:paddingBottom="15dp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/profil_container"
|
||||
tools:layout_editor_absoluteX="15dp">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/equipedItemAttack"
|
||||
android:layout_width="30dp"
|
||||
android:layout_height="30dp"
|
||||
android:layout_gravity="bottom"
|
||||
android:layout_marginRight="10dp"
|
||||
android:background="@drawable/background_equiped_item"
|
||||
android:contentDescription="Landscape"
|
||||
android:tooltipText="Equiped Weapon" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/equipedItemFishing"
|
||||
android:layout_width="30dp"
|
||||
android:layout_height="30dp"
|
||||
android:layout_gravity="bottom"
|
||||
android:layout_marginRight="10dp"
|
||||
android:background="@drawable/background_equiped_item"
|
||||
android:contentDescription="Landscape"
|
||||
android:tooltipText="Equiped Fishing Rod" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/equipedItemCollect"
|
||||
android:layout_width="30dp"
|
||||
android:layout_height="30dp"
|
||||
android:layout_gravity="bottom"
|
||||
android:layout_marginRight="10dp"
|
||||
android:background="@drawable/background_equiped_item"
|
||||
android:contentDescription="Landscape"
|
||||
android:tooltipText="Equiped Tool" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/equipedItemArmor"
|
||||
android:layout_width="30dp"
|
||||
android:layout_height="30dp"
|
||||
android:layout_gravity="bottom"
|
||||
android:layout_marginRight="10dp"
|
||||
android:background="@drawable/background_equiped_item"
|
||||
android:contentDescription="Landscape"
|
||||
android:tooltipText="Equiped Armor" />
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
|
||||
<ScrollView
|
||||
android:id="@+id/scroll_activties"
|
||||
android:layout_width="220dp"
|
||||
android:layout_height="200dp"
|
||||
android:layout_marginStart="20dp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@+id/constraintLayout"
|
||||
app:layout_constraintTop_toBottomOf="@+id/textView2">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/buttonForge"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="60dp"
|
||||
android:layout_marginHorizontal="15dp"
|
||||
android:layout_marginVertical="10dp"
|
||||
android:background="@drawable/rounded_border_button"
|
||||
android:clickable="true"
|
||||
android:foreground="?android:attr/selectableItemBackground"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/constraintLayout">
|
||||
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/imageView2"
|
||||
android:layout_width="40dp"
|
||||
android:layout_height="50dp"
|
||||
android:layout_marginLeft="10dp"
|
||||
|
||||
android:layout_marginRight="10dp"
|
||||
android:src="@drawable/ic_anvil" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/textView4"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="Ancient Forge"
|
||||
android:textColor="@color/white"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/textView5"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="Craft ever more powerful tools."
|
||||
android:textColor="@color/grey_300"
|
||||
android:textSize="11sp" />
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/buttonCollect"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="60dp"
|
||||
android:layout_marginHorizontal="15dp"
|
||||
android:layout_marginVertical="10dp"
|
||||
android:background="@drawable/rounded_border_button"
|
||||
android:clickable="true"
|
||||
android:foreground="?android:attr/selectableItemBackground"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/buttonForge">
|
||||
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/imageView2"
|
||||
android:layout_width="40dp"
|
||||
android:layout_height="40dp"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginRight="10dp"
|
||||
android:src="@drawable/ic_tree" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/textView4"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="Pleasant Forest"
|
||||
android:textColor="@color/white"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/textView5"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="Collect ressources to became powerfull."
|
||||
android:textColor="@color/grey_300"
|
||||
android:textSize="11sp" />
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/buttonBoss"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="60dp"
|
||||
android:layout_marginHorizontal="15dp"
|
||||
android:layout_marginVertical="10dp"
|
||||
android:background="@drawable/rounded_border_button"
|
||||
android:clickable="true"
|
||||
android:foreground="?android:attr/selectableItemBackground"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/buttonCollect">
|
||||
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/imageView2"
|
||||
android:layout_width="40dp"
|
||||
android:layout_height="40dp"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginRight="10dp"
|
||||
android:src="@drawable/ic_key" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/textView4"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="Dungeon"
|
||||
android:textColor="@color/white"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/textView5"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="Defeat boss to gain Mystic rewards."
|
||||
android:textColor="@color/grey_300"
|
||||
android:textSize="11sp" />
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
</ScrollView>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/event_container"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="200dp"
|
||||
android:gravity="center_horizontal"
|
||||
android:orientation="vertical"
|
||||
android:paddingBottom="20dp"
|
||||
android:visibility="visible"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@+id/scroll_activties"
|
||||
app:layout_constraintTop_toBottomOf="@+id/textView2">
|
||||
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/event_message"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:adjustViewBounds="true"
|
||||
android:clickable="true"
|
||||
android:maxWidth="200dip"
|
||||
android:scaleType="centerCrop"
|
||||
android:src="@drawable/event_message"
|
||||
android:visibility="visible">
|
||||
|
||||
|
||||
</ImageView>
|
||||
<ImageView
|
||||
android:id="@+id/buttonFishing"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:adjustViewBounds="true"
|
||||
android:clickable="true"
|
||||
android:visibility="gone"
|
||||
android:maxWidth="200dip"
|
||||
android:scaleType="centerCrop"
|
||||
android:src="@drawable/fishing_event">
|
||||
|
||||
|
||||
</ImageView>
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
@ -1,165 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@drawable/backgroundboss"
|
||||
android:scaleType="center"
|
||||
tools:context=".BossFragment">
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/frameLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:paddingTop="50dp"
|
||||
android:paddingBottom="20dp"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/backbutton"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="left|center_vertical"
|
||||
android:drawableStart="@drawable/back"
|
||||
android:drawableTint="@color/blue"
|
||||
android:text="Home"
|
||||
android:textColor="@color/blue"
|
||||
android:textSize="16sp"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/textView2"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:text="Dungeon"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="16sp"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
</FrameLayout>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/imageView"
|
||||
android:layout_width="200dp"
|
||||
android:layout_height="130dp"
|
||||
android:src="@drawable/image_boss"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/frameLayout" />
|
||||
|
||||
<ProgressBar
|
||||
android:id="@+id/progressBar"
|
||||
style="?android:attr/progressBarStyleHorizontal"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="8dp"
|
||||
android:layout_marginHorizontal="50dp"
|
||||
android:max="300"
|
||||
android:progress="300"
|
||||
android:progressDrawable="@drawable/custom_boss_progressbar"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/imageView" />
|
||||
|
||||
<ImageView
|
||||
android:layout_marginTop="20dp"
|
||||
android:id="@+id/imageBoss"
|
||||
android:layout_width="150dp"
|
||||
android:layout_height="150dp"
|
||||
app:layout_constraintBottom_toTopOf="@+id/recyclerviewBossLoot"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/progressBar"
|
||||
tools:src="@drawable/skeleton"></ImageView>
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/recyclerviewBossLoot"
|
||||
android:overScrollMode="never"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="300dp"
|
||||
android:layout_marginHorizontal="40dp"
|
||||
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/imageBoss"
|
||||
tools:listitem="@layout/list_item" />
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:visibility="invisible"
|
||||
tools:visibility="visible"
|
||||
android:id="@+id/toast"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingRight="20dp"
|
||||
android:paddingVertical="2dp"
|
||||
android:layout_marginBottom="10dp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
android:background="@drawable/toast_notification">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/imageViewLoot"
|
||||
android:layout_margin="5dp"
|
||||
android:layout_width="40dp"
|
||||
android:layout_height="40dp"
|
||||
android:background="@drawable/item_background"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:layout_marginLeft="8dp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@+id/imageViewLoot"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/nameLoot"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textStyle="bold"
|
||||
android:textSize="15sp"
|
||||
android:textColor="@color/white"></TextView>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/xpRewarded"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
tools:text="10"
|
||||
android:textColor="@color/grey_300"
|
||||
android:textSize="10sp"></TextView>
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="xp"
|
||||
android:textColor="@color/grey_300"
|
||||
android:textSize="10sp"></TextView>
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
@ -1,209 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@color/black_800"
|
||||
android:scaleType="center"
|
||||
tools:context=".CollectFragment">
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/frameLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:paddingTop="50dp"
|
||||
android:paddingBottom="20dp"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:layout_marginBottom="20dp">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/backbutton"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="start|center_vertical"
|
||||
android:focusable="true"
|
||||
android:text="@string/ancient_forge"
|
||||
android:textColor="@color/blue"
|
||||
android:textSize="16sp"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:drawableStartCompat="@drawable/back"
|
||||
app:drawableTint="@color/blue" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/textView2"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:text="@string/recipe"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="16sp"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
</FrameLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/linearLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginHorizontal="10dp"
|
||||
android:layout_marginTop="10dp"
|
||||
android:background="@drawable/recipelistcard"
|
||||
android:orientation="vertical"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/frameLayout">
|
||||
|
||||
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="15dp"
|
||||
android:gravity="start"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/item_image"
|
||||
android:layout_width="50dp"
|
||||
android:layout_height="50dp"
|
||||
android:background="@drawable/item_recipe_background"
|
||||
android:contentDescription="@string/image_of_item"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:srcCompat="@drawable/wooden_stick" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/craftValue"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
tools:text="1"
|
||||
android:paddingRight="2dp"
|
||||
android:textColor="@color/white" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
|
||||
<TextView
|
||||
android:id="@+id/item_name"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="20dp"
|
||||
android:textColor="@color/white"
|
||||
android:textStyle="bold"
|
||||
tools:text="Wooden Stick" />
|
||||
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="10dp"
|
||||
|
||||
android:background="@drawable/recipelistcard"
|
||||
android:orientation="vertical"
|
||||
android:paddingBottom="15dp"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/linearLayout">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingLeft="20dp"
|
||||
android:paddingTop="20dp"
|
||||
android:text="Materials"
|
||||
android:textColor="@color/grey_400"
|
||||
android:textSize="17dp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/RecyclerviewMaterials"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginHorizontal="20dp"
|
||||
android:overScrollMode="never"
|
||||
tools:itemCount="3"
|
||||
tools:listitem="@layout/list_craft" />
|
||||
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<Button
|
||||
android:id="@+id/buttonForgeMax"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginHorizontal="10dp"
|
||||
android:layout_marginBottom="5dp"
|
||||
android:backgroundTint="@color/button_background_color"
|
||||
android:text="FORGE MAX"
|
||||
android:textColor="@color/white"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintBottom_toTopOf="@+id/buttonForge"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintHorizontal_bias="0.473"
|
||||
app:layout_constraintStart_toStartOf="parent" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/buttonForge"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginHorizontal="10dp"
|
||||
android:layout_marginBottom="10dp"
|
||||
android:backgroundTint="@color/button_background_color"
|
||||
android:text="Forge"
|
||||
android:textColor="@color/white"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="10dp"
|
||||
android:gravity="center"
|
||||
android:orientation="horizontal"
|
||||
app:layout_constraintBottom_toTopOf="@+id/buttonForgeMax"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
android:background="@drawable/craftable_background"
|
||||
android:paddingVertical="5dp">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/textView3"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="Craftable "
|
||||
android:textColor="@color/grey_400"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/craftableNumber"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
tools:text="804"
|
||||
android:textColor="@color/white"/>
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
@ -1,166 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@color/black_800"
|
||||
android:scaleType="center"
|
||||
tools:context=".CollectFragment">
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/frameLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:paddingTop="50dp"
|
||||
android:paddingBottom="30dp"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toTopOf="@id/RecipeScroll">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/backbutton"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="start|center_vertical"
|
||||
android:focusable="true"
|
||||
app:drawableStartCompat="@drawable/back"
|
||||
app:drawableTint="@color/blue"
|
||||
android:text="Home"
|
||||
android:textColor="@color/blue"
|
||||
android:textSize="16sp"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/textView2"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:text="Ancient Forge"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="16sp"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
</FrameLayout>
|
||||
|
||||
<androidx.core.widget.NestedScrollView
|
||||
android:id="@+id/RecipeScroll"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="4294967294dp"
|
||||
android:paddingHorizontal="10dp"
|
||||
app:layout_constraintTop_toBottomOf="@id/frameLayout"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginVertical="10dp"
|
||||
android:background="@drawable/recipelistcard"
|
||||
android:orientation="vertical"
|
||||
android:paddingBottom="10dp">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingLeft="20dp"
|
||||
android:paddingTop="20dp"
|
||||
android:text="Objects"
|
||||
android:textColor="@color/grey_400"
|
||||
android:textSize="17sp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/RecyclerviewObjects"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginHorizontal="20dp"
|
||||
android:overScrollMode="never"
|
||||
tools:itemCount="3"
|
||||
tools:listitem="@layout/list_recipe" />
|
||||
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginVertical="10dp"
|
||||
android:background="@drawable/recipelistcard"
|
||||
android:orientation="vertical"
|
||||
android:paddingBottom="10dp">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingStart="20dp"
|
||||
android:paddingTop="20dp"
|
||||
android:text="Tools"
|
||||
android:textColor="@color/grey_400"
|
||||
android:textSize="17sp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/RecyclerviewTools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginHorizontal="20dp"
|
||||
android:overScrollMode="never"
|
||||
tools:itemCount="3"
|
||||
tools:listitem="@layout/list_recipe" />
|
||||
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginVertical="10dp"
|
||||
android:background="@drawable/recipelistcard"
|
||||
android:orientation="vertical"
|
||||
android:paddingBottom="10dp">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingStart="20dp"
|
||||
android:paddingTop="20dp"
|
||||
android:text="Blacksmithing"
|
||||
android:textColor="@color/grey_400"
|
||||
android:textSize="17sp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/RecyclerviewBlacksmithing"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginHorizontal="20dp"
|
||||
android:overScrollMode="never"
|
||||
tools:itemCount="3"
|
||||
tools:listitem="@layout/list_recipe"/>
|
||||
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
</androidx.core.widget.NestedScrollView>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
@ -1,86 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@color/black_800"
|
||||
tools:context=".PlusFragment">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/textView2"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="50dp"
|
||||
android:paddingBottom="20dp"
|
||||
android:text="@string/plus_title"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="16sp"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/buttonForge"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_marginHorizontal="15dp"
|
||||
android:layout_height="60dp"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:foreground="?android:attr/selectableItemBackground"
|
||||
android:layout_marginVertical="10dp"
|
||||
android:background="@drawable/rounded_border_button"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/textView2">
|
||||
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/wikiButton"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:gravity="center_vertical"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<ImageView
|
||||
android:contentDescription="@string/wikiImage"
|
||||
android:id="@+id/imageView2"
|
||||
android:layout_width="60dp"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginRight="10dp"
|
||||
|
||||
android:layout_height="60dp"
|
||||
android:src="@drawable/wiki_image" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/textView4"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="Shake&Craft Wiki"
|
||||
android:textColor="@color/white"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/textView5"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="Development info, gameplay & more"
|
||||
android:textColor="@color/grey_300"
|
||||
android:textSize="11sp" />
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
@ -1,79 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="10dp">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center_vertical"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<ImageView
|
||||
android:contentDescription="image of item"
|
||||
android:background="@drawable/item_background"
|
||||
android:id="@+id/item_image"
|
||||
android:layout_width="40dp"
|
||||
android:layout_height="40dp"
|
||||
app:srcCompat="@drawable/log2" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/item_name"
|
||||
android:layout_marginLeft="20dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="@color/white"
|
||||
android:textStyle="bold"
|
||||
tools:text="Beech Log"/>
|
||||
|
||||
<View
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="0dp"
|
||||
android:layout_weight="1" />
|
||||
|
||||
|
||||
<TextView
|
||||
android:id="@+id/numberCurrentPlayer"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="@color/white"
|
||||
android:textStyle="bold"
|
||||
tools:text="804"/>
|
||||
<TextView
|
||||
android:id="@+id/item_stock"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="@color/grey_300"
|
||||
android:text="/"/>
|
||||
<TextView
|
||||
android:id="@+id/numberNeeded"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="@color/grey_300"
|
||||
tools:text="1"/>
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
|
||||
</LinearLayout>
|
@ -1,70 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="10dp">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center_vertical"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<ImageView
|
||||
android:contentDescription="image of item"
|
||||
android:background="@drawable/item_background"
|
||||
android:id="@+id/item_image"
|
||||
android:layout_width="50dp"
|
||||
android:layout_height="50dp"
|
||||
app:srcCompat="@drawable/ic_key" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/item_name"
|
||||
android:layout_marginLeft="20dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="@color/white"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<View
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="0dp"
|
||||
android:layout_weight="1" />
|
||||
|
||||
|
||||
<TextView
|
||||
android:id="@+id/item_stock"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="@color/grey_300"
|
||||
android:textStyle="bold" />
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="@color/grey_300"
|
||||
android:text="%"
|
||||
android:textStyle="bold" />
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
|
||||
</LinearLayout>
|
@ -1,65 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:focusable="true"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginVertical="8dp">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center_vertical"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<ImageView
|
||||
android:contentDescription="image of item"
|
||||
android:background="@drawable/item_recipe_background"
|
||||
android:id="@+id/item_image"
|
||||
android:layout_width="50dp"
|
||||
android:layout_height="50dp"
|
||||
app:srcCompat="@drawable/wooden_stick" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/item_name"
|
||||
android:layout_marginLeft="20dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="@color/white"
|
||||
android:textStyle="bold"
|
||||
tools:text="Wooden Stick"/>
|
||||
|
||||
<View
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="0dp"
|
||||
android:layout_weight="1" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:layout_above="@+id/bottomNav"
|
||||
android:background="@color/grey_delimiter"></View>
|
||||
|
||||
|
||||
</LinearLayout>
|
@ -1,8 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<data-extraction-rules>
|
||||
<cloud-backup>
|
||||
|
||||
</cloud-backup>
|
||||
|
||||
</data-extraction-rules>
|
Before Width: | Height: | Size: 254 B After Width: | Height: | Size: 254 B |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 593 KiB After Width: | Height: | Size: 593 KiB |
Before Width: | Height: | Size: 172 KiB After Width: | Height: | Size: 172 KiB |
@ -0,0 +1,126 @@
|
||||
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 android.widget.TextView
|
||||
import androidx.navigation.fragment.findNavController
|
||||
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
|
||||
|
||||
|
||||
class BossFragment() : Fragment() {
|
||||
|
||||
|
||||
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? {
|
||||
|
||||
var player = (activity as MainActivity).currentPlayer
|
||||
|
||||
// Récupérez une référence à la ProgressBar dans la vue
|
||||
val view = inflater.inflate(R.layout.fragment_boss, container, false)
|
||||
val buttonCollect = view.findViewById<TextView>(R.id.backbutton)
|
||||
buttonCollect.setOnClickListener{
|
||||
findNavController().navigate(R.id.action_bossFragment_to_homeFragment)
|
||||
}
|
||||
|
||||
|
||||
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
|
||||
}
|
||||
|
||||
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
|
||||
}
|
||||
}
|
@ -0,0 +1,47 @@
|
||||
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.Button
|
||||
import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import androidx.navigation.fragment.findNavController
|
||||
|
||||
// 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 [HomeFragment.newInstance] factory method to
|
||||
* create an instance of this fragment.
|
||||
*/
|
||||
class HomeFragment : Fragment() {
|
||||
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
}
|
||||
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater, container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
): View? {
|
||||
val view = inflater.inflate(R.layout.fragment_home,container,false)
|
||||
val buttonCollect = view.findViewById<ConstraintLayout>(R.id.buttonCollect)
|
||||
buttonCollect.setOnClickListener{
|
||||
findNavController().navigate(R.id.action_homeFragment_to_collectFragment)
|
||||
}
|
||||
val buttonBoss = view.findViewById<ConstraintLayout>(R.id.buttonBoss)
|
||||
buttonBoss.setOnClickListener{
|
||||
findNavController().navigate(R.id.action_homeFragment_to_bossFragment)
|
||||
}
|
||||
return view
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,38 @@
|
||||
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 androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.example.shakecraft.data.Stub
|
||||
import com.example.shakecraft.model.Player
|
||||
import com.example.shakecraft.view.adapter.AdapterInventory
|
||||
|
||||
|
||||
class InventoryFragment() : Fragment( ) {
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
}
|
||||
|
||||
|
||||
override fun onCreateView(
|
||||
|
||||
inflater: LayoutInflater, container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
): View? {
|
||||
var player = (activity as MainActivity).currentPlayer
|
||||
val view = inflater.inflate(R.layout.fragment_inventory, container, false)
|
||||
val recyclerView: RecyclerView = view.findViewById(R.id.recyclerviewInventory)
|
||||
with(recyclerView) {
|
||||
layoutManager = LinearLayoutManager(view.context)
|
||||
adapter = AdapterInventory(player.items)
|
||||
}
|
||||
return view
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,51 @@
|
||||
package com.example.shakecraft
|
||||
|
||||
import android.os.Build
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import android.os.Bundle
|
||||
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.google.android.material.bottomnavigation.BottomNavigationView
|
||||
|
||||
class MainActivity : AppCompatActivity() {
|
||||
|
||||
|
||||
var currentPlayer = Stub().currentPlayer
|
||||
|
||||
@RequiresApi(Build.VERSION_CODES.R)
|
||||
private fun hideSystemUI() {
|
||||
WindowCompat.setDecorFitsSystemWindows(window, false)
|
||||
WindowInsetsControllerCompat(window,
|
||||
window.decorView.findViewById(android.R.id.content)).let { controller ->
|
||||
controller.hide(WindowInsetsCompat.Type.systemBars())
|
||||
|
||||
controller.systemBarsBehavior = WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
|
||||
}
|
||||
}
|
||||
|
||||
private lateinit var bottomNav : BottomNavigationView
|
||||
@RequiresApi(Build.VERSION_CODES.R)
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
|
||||
super.onCreate(savedInstanceState)
|
||||
hideSystemUI()
|
||||
setContentView(R.layout.activity_main)
|
||||
|
||||
|
||||
bottomNav = findViewById(R.id.bottomNavigationView)
|
||||
val navController = findNavController(R.id.fragment)
|
||||
bottomNav.setupWithNavController(navController)
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,59 @@
|
||||
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
|
||||
|
||||
// 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 [PlusFragment.newInstance] factory method to
|
||||
* create an instance of this fragment.
|
||||
*/
|
||||
class PlusFragment : Fragment() {
|
||||
// TODO: Rename and change types of parameters
|
||||
private var param1: String? = null
|
||||
private var param2: String? = null
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
arguments?.let {
|
||||
param1 = it.getString(ARG_PARAM1)
|
||||
param2 = it.getString(ARG_PARAM2)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater, container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
): View? {
|
||||
// Inflate the layout for this fragment
|
||||
return inflater.inflate(R.layout.fragment_plus, container, false)
|
||||
}
|
||||
|
||||
companion object {
|
||||
/**
|
||||
* Use this factory method to create a new instance of
|
||||
* this fragment using the provided parameters.
|
||||
*
|
||||
* @param param1 Parameter 1.
|
||||
* @param param2 Parameter 2.
|
||||
* @return A new instance of fragment PlusFragment.
|
||||
*/
|
||||
// TODO: Rename and change types and number of parameters
|
||||
@JvmStatic
|
||||
fun newInstance(param1: String, param2: String) =
|
||||
PlusFragment().apply {
|
||||
arguments = Bundle().apply {
|
||||
putString(ARG_PARAM1, param1)
|
||||
putString(ARG_PARAM2, param2)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,22 @@
|
||||
package com.example.shakecraft.data
|
||||
|
||||
import com.example.shakecraft.R
|
||||
import com.example.shakecraft.model.Item
|
||||
import com.example.shakecraft.model.Player
|
||||
|
||||
|
||||
class Stub {
|
||||
|
||||
fun load() : List<Item>{
|
||||
val items : MutableList<Item> = mutableListOf<Item>()
|
||||
items.add(Item(name = "Beech Log", rarity = 0, stack = 1, R.drawable.ic_anvil));
|
||||
items.add(Item(name = "Bronze Ore", rarity = 0, stack = 1, R.drawable.ic_anvil));
|
||||
items.add(Item(name = "Iron Ore", rarity = 0, stack = 1, R.drawable.ic_anvil));
|
||||
items.add(Item(name = "Diamond", rarity = 0, stack = 1, R.drawable.ic_anvil));
|
||||
return items;
|
||||
}
|
||||
|
||||
|
||||
var currentPlayer : Player = Player("Winker",0);
|
||||
|
||||
}
|
@ -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<Pair<Item, Double>> = 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_eyes), 0.25),
|
||||
Pair(Item(name = "Treasure Key", rarity = 0, stack = 1, R.drawable.treasure_key), 0.05),
|
||||
)
|
||||
fun takeDamage(strength: Int) {
|
||||
this.life -= strength
|
||||
}
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
package com.example.shakecraft.model
|
||||
|
||||
import android.media.Image
|
||||
|
||||
data class Item(
|
||||
var name: String,
|
||||
var rarity: Int,
|
||||
var stack: Int,
|
||||
var image: Int,
|
||||
)
|
||||
|
||||
|
@ -0,0 +1,32 @@
|
||||
package com.example.shakecraft.model
|
||||
|
||||
class Player(val pseudo: String, var xp: Int = 0) {
|
||||
var level: Int = 1
|
||||
private set
|
||||
|
||||
val items: MutableList<Item> = mutableListOf()
|
||||
|
||||
fun addItem(item: Item) {
|
||||
var findItem = items.find { it.name == item.name }
|
||||
if(findItem!= null){
|
||||
findItem.stack += 1;
|
||||
}
|
||||
else{items.add(item)}
|
||||
}
|
||||
|
||||
fun removeItem(item: Item) {
|
||||
items.remove(item)
|
||||
}
|
||||
|
||||
fun increaseXp(amount: Int) {
|
||||
xp += amount
|
||||
if (xp >= 100 * level) {
|
||||
levelUp()
|
||||
}
|
||||
}
|
||||
|
||||
private fun levelUp() {
|
||||
level++
|
||||
println("$pseudo a atteint le niveau $level !")
|
||||
}
|
||||
}
|
@ -0,0 +1,3 @@
|
||||
package com.example.shakecraft.view.viewholder
|
||||
class ViewHolderInventory(inflate: Any?) {
|
||||
}
|
Before Width: | Height: | Size: 573 KiB After Width: | Height: | Size: 573 KiB |
Before Width: | Height: | Size: 593 KiB After Width: | Height: | Size: 593 KiB |
Before Width: | Height: | Size: 291 KiB After Width: | Height: | Size: 291 KiB |
Before Width: | Height: | Size: 5.0 KiB After Width: | Height: | Size: 5.0 KiB |