shop.cs
Script permettant d'ajouter un système de magasin / marchand.
Copier
// Script permettant d'ajouter un système de magasin / marchand dans la série RPG.
// Vidéo explications / mise en place : https://www.youtube.com/watch?v=3wWYOA114x8
// ATTENTION : L'ajout de ce système nécessite plusieurs autres ajouts détaillés dans la vidéo.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class shop : MonoBehaviour {
public Inventory inventoryPlayer;
public PlayerInventory playerinv;
public GameObject shopPanel;
public ItemDataBaseList itemDb;
[Header("ID des items du shop")]
public int item1Id;
public int item2Id;
public int item3Id;
public Text textItem1;
public Text textItem2;
public Text textItem3;
public Image iconItem1;
public Image iconItem2;
public Image iconItem3;
private int amountSlots;
private int slotsChecked;
private bool transactionDone;
// Tous les paramètres des objets du shop
Item theItem1;
Item theItem2;
Item theItem3;
// Use this for initialization
void Start () {
shopPanel.SetActive(false);
}
void PrepareShop()
{
theItem1 = itemDb.getItemByID(item1Id);
theItem2 = itemDb.getItemByID(item2Id);
theItem3 = itemDb.getItemByID(item3Id);
textItem1.text = theItem1.itemName + " (Prix : " + theItem1.itemValue + ") ";
textItem2.text = theItem2.itemName + " (Prix : " + theItem2.itemValue + ") ";
textItem3.text = theItem3.itemName + " (Prix : " + theItem3.itemValue + ") ";
iconItem1.sprite = theItem1.itemIcon;
iconItem2.sprite = theItem2.itemIcon;
iconItem3.sprite = theItem3.itemIcon;
iconItem1.transform.GetComponent< Button>().onClick.AddListener(delegate { buyItem(theItem1); });
iconItem2.transform.GetComponent< Button>().onClick.AddListener(delegate { buyItem(theItem2); });
iconItem3.transform.GetComponent< Button>().onClick.AddListener(delegate { buyItem(theItem3); });
shopPanel.SetActive(true);
}
void buyItem(Item finalItem) {
amountSlots = inventoryPlayer.transform.GetChild(1).childCount;
transactionDone = false;
slotsChecked = 0;
foreach (Transform child in inventoryPlayer.transform.GetChild(1))
{
if(child.childCount == 0)
{
if (playerinv.goldCoins >= finalItem.itemValue)
{
inventoryPlayer.addItemToInventory(finalItem.itemID);
playerinv.goldCoins -= finalItem.itemValue;
transactionDone = true;
print("Le joueur a acheté l'objet : " + finalItem.itemName);
break;
}
else {
print("Transaction refusée, le joueur n'a pas assez d'argent.");
}
}
slotsChecked++;
}
if (slotsChecked == amountSlots && transactionDone == false) {
print("Transaction annulée, pas de place dans l'inventaire.");
}
}
private void OnTriggerEnter(Collider other)
{
if (other.tag == "Player") {
PrepareShop();
}
}
private void OnTriggerExit(Collider other)
{
if (other.tag == "Player") {
iconItem1.GetComponent< Button>().onClick.RemoveAllListeners();
iconItem2.GetComponent< Button>().onClick.RemoveAllListeners();
iconItem3.GetComponent< Button>().onClick.RemoveAllListeners();
shopPanel.SetActive(false);
}
}
}