Skip to content
Snippets Groups Projects
Commit 7c67eb36 authored by victogo's avatar victogo
Browse files

Feature: Equipables funcional, el jugador comienza con una espada en el...

Feature: Equipables funcional, el jugador comienza con una espada en el equipable, otra en el inventario y dos pocimas de cura. Desequipar y equipar funcional
parent 75e6ff2f
No related branches found
No related tags found
2 merge requests!65Feature:,!24Feature: Equipables funcional, el jugador comienza con una espada en el...
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="deploymentTargetSelector">
<selectionStates>
<SelectionState runConfigName="MainActivity">
<option name="selectionMode" value="DROPDOWN" />
</SelectionState>
</selectionStates>
</component>
</project>
\ No newline at end of file
......@@ -17,6 +17,7 @@ import com.example.ellegadodepintia.exploradoresDePintia.model.Habilidad
import com.example.ellegadodepintia.exploradoresDePintia.model.LayoutUtils
import com.example.ellegadodepintia.exploradoresDePintia.model.objeto.Objeto
import com.example.ellegadodepintia.exploradoresDePintia.model.objeto.ObjetoConsumible
import com.example.ellegadodepintia.exploradoresDePintia.model.objeto.ObjetoEquipable
import com.example.ellegadodepintia.exploradoresDePintia.model.objeto.efectoObjeto.EfectoObjetoCura
......@@ -77,20 +78,76 @@ class InventoryMain : DialogFragment() {
view.findViewById(R.id.slot08),
view.findViewById<CardView>(R.id.slot09)
)
actualizarInventarioUI(slots)
val slotsEquipable = listOf(
view.findViewById(R.id.slot1),
view.findViewById(R.id.slot2),
view.findViewById<CardView>(R.id.slot3)
)
actualizarInventarioUI(slots, slotsEquipable)
for (i in slots.indices){
val slot = slots[i]
if (i< GameState.jugador.inventario.size){
slot?.setOnClickListener{
val objeto = GameState.jugador.inventario[i]
mostrarConfirmacion(objeto, i, slots)
if (objeto is ObjetoConsumible){
confirmacionConsumir(objeto, i, slots, slotsEquipable)
}
if (objeto is ObjetoEquipable){
confirmacionEquipar(objeto, i, slots, slotsEquipable)
}
}
}
}
for (i in slotsEquipable.indices){
val slot = slotsEquipable[i]
if (i< GameState.jugador.equipables.size){
slot?.setOnClickListener{
val objeto = GameState.jugador.equipables[i]
confirmacionDesequipar(objeto, i, slots, slotsEquipable)
}
}
}
}
private fun mostrarConfirmacion(objeto: Objeto, indice: Int, slots : List<CardView>) {
private fun confirmacionEquipar(objeto: Objeto, indice: Int, slots: List<CardView>, slotsEquipable: List<CardView>){
val dialog = AlertDialog.Builder(requireContext())
.setTitle("¿Equipar ${objeto.nombre}?")
.setMessage("¿Deseas equipar ${objeto.nombre} a tu personaje?")
.setPositiveButton("Equipar") { _, _ ->
GameState.jugador.inventario.removeAt(indice)
GameState.jugador.equipables.add(objeto)
actualizarInventarioUI(slots, slotsEquipable)
}
.setNegativeButton("Cancelar", null)
.setNeutralButton("Descripción") { _, _ ->
mostrarDescripcionObjeto(objeto)
}
.create()
dialog.show()
}
private fun confirmacionDesequipar(objeto: Objeto, indice: Int, slots: List<CardView>, slotsEquipable: List<CardView>){
val dialog = AlertDialog.Builder(requireContext())
.setTitle("¿Desequipar ${objeto.nombre}?")
.setMessage("¿Deseas quitar ${objeto.nombre} de tu equipo?")
.setPositiveButton("Desequipar") { _, _ ->
GameState.jugador.equipables.removeAt(indice)
GameState.jugador.inventario.add(objeto)
actualizarInventarioUI(slots, slotsEquipable)
}
.setNegativeButton("Cancelar", null)
.setNeutralButton("Descripción") { _, _ ->
mostrarDescripcionObjeto(objeto)
}
.create()
dialog.show()
}
private fun confirmacionConsumir(objeto: Objeto, indice: Int, slots: List<CardView>, slotsEquipable: List<CardView>) {
val dialog = AlertDialog.Builder(requireContext())
.setTitle("¿Usar ${objeto.nombre}?")
.setMessage("¿Deseas usar este objeto?")
......@@ -107,7 +164,7 @@ class InventoryMain : DialogFragment() {
}
objeto.usar()
GameState.jugador.inventario.removeAt(indice)
actualizarInventarioUI(slots)
actualizarInventarioUI(slots, slotsEquipable)
}
/*.setNeutralButton("Destruir"){ _, _ ->
......@@ -137,16 +194,42 @@ class InventoryMain : DialogFragment() {
descripcionDialog.show()
}
private fun actualizarInventarioUI(slots: List<CardView>) {
private fun actualizarInventarioUI(slots: List<CardView>, slotsEquipable: List<CardView>) {
for (i in slots.indices) {
val slot = slots[i]
if (i < GameState.jugador.inventario.size) {
val imageView = slot.getChildAt(0) as ImageView
imageView.setImageResource(GameState.jugador.inventario[i].imagen)
slot.getChildAt(0).visibility = View.VISIBLE
slot.setOnClickListener{
val objeto = GameState.jugador.inventario[i]
if (objeto is ObjetoConsumible){
confirmacionConsumir(objeto, i, slots, slotsEquipable)
}
if (objeto is ObjetoEquipable){
confirmacionEquipar(objeto, i, slots, slotsEquipable)
}
}
} else {
slot.getChildAt(0).visibility = View.GONE
slot.setOnClickListener(null)
}
}
for (i in slotsEquipable.indices) {
val slot = slotsEquipable[i]
if (i < GameState.jugador.equipables.size) {
val imageView = slot.getChildAt(0) as ImageView
imageView.setImageResource(GameState.jugador.equipables[i].imagen)
slot.getChildAt(0).visibility = View.VISIBLE
slot.setOnClickListener{
val objeto = GameState.jugador.equipables[i]
confirmacionDesequipar(objeto, i, slots, slotsEquipable)
}
} else {
slot.getChildAt(0).visibility = View.GONE
slot.setOnClickListener(null)
}
}
}
......
......
......@@ -3,6 +3,8 @@ package com.example.ellegadodepintia.exploradoresDePintia.model
import com.example.ellegadodepintia.R
import com.example.ellegadodepintia.exploradoresDePintia.model.objeto.Objeto
import com.example.ellegadodepintia.exploradoresDePintia.model.objeto.ObjetoConsumible
import com.example.ellegadodepintia.exploradoresDePintia.model.objeto.ObjetoEquipable
import com.example.ellegadodepintia.exploradoresDePintia.model.objeto.efectoObjeto.EfectoObjetoAumentoAtaque
import com.example.ellegadodepintia.exploradoresDePintia.model.objeto.efectoObjeto.EfectoObjetoCura
class Jugador {
......@@ -10,6 +12,7 @@ class Jugador {
var vidaMax = 10
private val observers = mutableListOf<(Jugador) -> Unit>()
var inventario = ArrayList<Objeto>(9)
var equipables = ArrayList<Objeto>(3)
init {
......@@ -28,41 +31,17 @@ class Jugador {
efecto = EfectoObjetoCura(5),
imagen = R.drawable.asi_exploradores_vasito
))
inventario.add(ObjetoConsumible(
nombre = "Pocima de Vida",
descripcion = "Restaura 5 puntos de vida",
efecto = EfectoObjetoCura(5),
imagen = R.drawable.asi_exploradores_vasito
))
inventario.add(ObjetoConsumible(
nombre = "Pocima de Vida",
descripcion = "Restaura 5 puntos de vida",
efecto = EfectoObjetoCura(5),
imagen = R.drawable.asi_exploradores_vasito
))
inventario.add(ObjetoConsumible(
nombre = "Pocima de Vida",
descripcion = "Restaura 5 puntos de vida",
efecto = EfectoObjetoCura(5),
imagen = R.drawable.asi_exploradores_vasito
inventario.add(ObjetoEquipable(
nombre = "Espada de Hierro",
descripcion = "Una espada de hierro sencilla y confiable perfecta para un aventurero novato.",
efecto = EfectoObjetoAumentoAtaque(0),
imagen = R.drawable.asi_objeto_espadadefault
))
inventario.add(ObjetoConsumible(
nombre = "Pocima de Vida",
descripcion = "Restaura 5 puntos de vida",
efecto = EfectoObjetoCura(5),
imagen = R.drawable.asi_exploradores_vasito
))
inventario.add(ObjetoConsumible(
nombre = "Pocima de Vida",
descripcion = "Restaura 5 puntos de vida",
efecto = EfectoObjetoCura(5),
imagen = R.drawable.asi_exploradores_vasito
))
inventario.add(ObjetoConsumible(
nombre = "Pocima de Vida",
descripcion = "Restaura 5 puntos de vida",
efecto = EfectoObjetoCura(5),
imagen = R.drawable.asi_exploradores_vasito
equipables.add(ObjetoEquipable(
nombre = "Espada de Hierro",
descripcion = "Una espada de hierro sencilla y confiable perfecta para un aventurero novato.",
efecto = EfectoObjetoAumentoAtaque(0),
imagen = R.drawable.asi_objeto_espadadefault
))
}
......
......
app/src/main/res/drawable/asi_objeto_espadadefault.png

495 KiB

......@@ -64,31 +64,60 @@
android:gravity="center"
android:orientation="horizontal">
<ImageView
<androidx.cardview.widget.CardView
android:id="@+id/slot1"
android:layout_width="70dp"
android:layout_height="70dp"
android:elevation="0dp"
app:cardCornerRadius="10dp"
android:layout_margin="5dp"
android:backgroundTint="#F2CDA0">
<ImageView
android:layout_width="70dp"
android:layout_height="70dp"
android:layout_marginEnd="10dp"
android:background="@drawable/style_texto_border"
android:contentDescription="Slot de equipo 1"
android:src="@drawable/style_slot_inventario" />
</androidx.cardview.widget.CardView>
<ImageView
<androidx.cardview.widget.CardView
android:id="@+id/slot2"
android:layout_width="70dp"
android:layout_height="70dp"
android:elevation="0dp"
app:cardCornerRadius="10dp"
android:layout_margin="5dp"
android:backgroundTint="#F2CDA0">
<ImageView
android:layout_width="70dp"
android:layout_height="70dp"
android:layout_marginEnd="10dp"
android:background="@drawable/style_texto_border"
android:contentDescription="Slot de equipo 2"
android:contentDescription="Slot de equipo 1"
android:src="@drawable/style_slot_inventario" />
</androidx.cardview.widget.CardView>
<ImageView
<androidx.cardview.widget.CardView
android:id="@+id/slot3"
android:layout_width="70dp"
android:layout_height="70dp"
android:elevation="0dp"
app:cardCornerRadius="10dp"
android:layout_margin="5dp"
android:backgroundTint="#F2CDA0">
<ImageView
android:layout_width="70dp"
android:layout_height="70dp"
android:layout_marginEnd="10dp"
android:background="@drawable/style_texto_border"
android:contentDescription="Slot de equipo 3"
android:contentDescription="Slot de equipo 1"
android:src="@drawable/style_slot_inventario" />
</androidx.cardview.widget.CardView>
</LinearLayout>
......
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment