Fedekiller999

Intento de inventario en C#

Oct 8th, 2020
998
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // Buscar y recoger
  2.     public void ObtenerObjeto(Sprite __icon, int __cantidad, int __stack, int __número){
  3.         /* Stacks:
  4.             1 = Stackeable
  5.             2 = Cantidad del stack distinta
  6.             3 = No Stackeable
  7.             Números de identificación:
  8.             El orden en que están en el generador de terreno
  9.             TODO:
  10.                 (X) Almacenar items en un slot vacío.
  11.                 (X) Rellenar un slot que ya tenga items.
  12.                 () Usar la recursión para volver a llamar está función de vuelta con
  13.                 los mismos parámetros, pero, buscando en el inventario si es que sobraron items
  14.                 en la variable "__cantidad".
  15.                 () Si se añade maquinaria, se puede usar la recursión para los "vacuums"
  16.             */
  17.  
  18.         // Advertencia:
  19.         // De aquí para abajo, descenderás los escalones hacia el infierno.
  20.         /////////////////////////////////////////////////////
  21.         /// Buscar si hay espacio disponible en la hotbar ///
  22.         /////////////////////////////////////////////////////
  23.         for(int i  = 0; i < espacioEnLaHotbar.Length; i++){
  24.             // Si ya hay un slot vacio, no es necesario hacer nada.
  25.             if(espacioEnLaHotbar[i] == 0){
  26.                 // Calcular el espacio restante, ej: 999 - 368 = 631
  27.                 int __espacioRestante = espacioMáximo - espacioEnLaHotbar[i];
  28.  
  29.                 // Ej: 631 - 200 = 431
  30.                 // Ej: 631 - 1000 = -431
  31.                 // Con esto no quedarán números negativos, y seguirá de largo
  32.                 if(__cantidad >= __espacioRestante){
  33.                     // Rellenar el espacio restante
  34.                     espacioEnLaHotbar[i] += __espacioRestante;
  35.  
  36.                     // Restar lo rellando al total que recogió
  37.                     __cantidad -= __espacioRestante;
  38.                 } else {
  39.                     // La cantidad que queda es menor al espacio que queda
  40.                     espacioEnLaHotbar[i] += __cantidad;
  41.  
  42.                     // Como ya no queda nada, salir.
  43.                     return;
  44.                 }
  45.                
  46.                 // Encuentra el número del slot y busca si tiene
  47.                 // el mismo número que la iteración en i
  48.                 GameObject __slotSeleccionado = hotbar.transform.Find("Slot (" + i + ")").gameObject;
  49.  
  50.                 // Cambiar el ícono
  51.                 __slotSeleccionado.GetComponent<Image>().sprite = __icon;
  52.  
  53.                 // Guardar el espacio en que quedo el objeto
  54.                 númeroDelObjetoHotbar[i] = __número;
  55.             }
  56.  
  57.             // Se repite el mismo objeto
  58.             // Si es stackeable y hay espacio para poner más
  59.             if(__stack == 1 && espacioEnLaHotbar[i] < 999){
  60.                 // Encuentra el número del slot y busca si tiene
  61.                 // el mismo número que la iteración en i
  62.                 GameObject __slotSeleccionado = hotbar.transform.Find("Slot (" + i + ")").gameObject;
  63.                 if(__slotSeleccionado != null){
  64.                     // Then we may proceed
  65.                     //(El slot en el que estamos ahora, tiene el mismo objeto, pero
  66.                     // con menor cantidad a la máxima)
  67.                     // Almacenar
  68.                     // Calcular el espacio restante, ej: 999 - 368 = 631
  69.                     int __espacioRestante = espacioMáximo - espacioEnLaHotbar[i];
  70.  
  71.                     // Con esto no quedarán números negativos, y seguirá de largo
  72.                     if(__cantidad >= __espacioRestante){
  73.                         // Rellenar el espacio restante
  74.                         espacioEnLaHotbar[i] += __espacioRestante;
  75.  
  76.                         // Restar lo rellando al total que recogió
  77.                         __cantidad -= __espacioRestante;
  78.                     } else {
  79.                         // La cantidad que queda es menor al espacio que queda
  80.                         espacioEnLaHotbar[i] += __cantidad;
  81.  
  82.                         // Como ya no queda nada, salir.
  83.                         return;
  84.                     }
  85.  
  86.                     // Ahora buscar otro slot para poder almacenar más
  87.                     // de ser posible.
  88.                     continue;
  89.                 }
  90.             }
  91.         }
  92.         // TODO Recursión.
  93.  
  94.         // No hay espacio
  95.         return;
  96.     }
  97.  
  98.     /****************************************/
  99.     /* Sistemas de estadísticas del jugador */
  100.     /****************************************/
  101.     // Tiempo que el jugador es invulnerable
  102.     private void TiempoDeInvulnerabilidad(){
  103.         // Mientras recibe daño
  104.         if(temporizadorDeDaño >= tiempoDeInvencibilidad) {
  105.             temporizadorDeDaño = 0;
  106.         } else if(estáRecibiendoDaño){
  107.             temporizadorDeDaño += Time.deltaTime;
  108.         }
  109.     }
RAW Paste Data