public class Game : MonoBehaviour
{
[Header("Текст, отвечающий за отображение денег")]
public Text scoreText;
[Header("Магазин")]
public List<Item> shopItems = new List<Item>();
[Header("Текст на кнопках товаров")]
public Text[] shopItemsText;
[Header("Кнопки товаров")]
public Button[] shopBttns;
[Header("Панелька магазина")]
public GameObject shopPan;
[Header("Выход магазина")]
public GameObject exitshopPan;
private float score; //Игровая валюта
private float scoreIncrease = 1; //Бонус при клике
private Save sv = new Save ();
[Header("Вывод текста на экран")]
public Text MyTestLabel;
bool _escBePressed;
private void Awake()
{
if (PlayerPrefs.HasKey("SV"))
{
float totalBonusPS = 0 ;
sv = JsonUtility.FromJson<Save>(PlayerPrefs.GetString("SV"));
score = sv.score;
for (int i = 0; i < shopItems.Count; i++)
{
shopItems[i].levelOfItem = sv.levelOfItem[i];
shopItems[i].bonusCounter = sv.bonusCounter[i];
if (shopItems[i].needCostMultiplier) shopItems[i].cost *= (int)Mathf.Pow(shopItems[i].costMultiplier, shopItems[i].levelOfItem);
if (shopItems[i].bonusIncrease != 0) scoreIncrease += (int)Mathf.Pow(shopItems[i].bonusIncrease, shopItems[i].levelOfItem);
totalBonusPS += shopItems [i].bonusPerSec * shopItems [i].bonusCounter;
}
DateTime dt = new DateTime (sv.date[0],sv.date[1],sv.date[2],sv.date[3],sv.date[4],sv.date[5]);
TimeSpan ts = DateTime.Now - dt;
float offlineBonus = (float)ts.TotalSeconds * totalBonusPS;
score += offlineBonus ;
print("Вы отсутствовали: " + ts.Days + "Д. " + ts.Hours + "Ч. " + ts.Minutes + "М. " + ts.Seconds + "S.");
print ("Вы заработали " + offlineBonus + "$");
MyTestLabel.text = ("В ваше отсутствие заработалось " + offlineBonus + "$");
}
}
private void Start()
{
updateCosts(); //Обновить текст с ценами
StartCoroutine(BonusPerSec()); //Запустить просчёт бонуса в секунду
}
private void Update()
{
scoreText.text = conveterscore.Instance.GetCurrencyIntoString(score , false ,false) +"$" ;//Отображаем деньги
if (Input.GetKeyDown(KeyCode.Escape))
{
_escBePressed = !_escBePressed;
}
}
public void BuyBttn(int index) //Метод при нажатии на кнопку покупки товара (индекс товара)
{
float cost = shopItems[index].cost * shopItems[shopItems[index].itemIndex].bonusCounter; //Рассчитываем цену в зависимости от кол-ва рабочих (к примеру)
if (shopItems[index].itsBonus && score >= cost) //Если товар нажатой кнопки - это бонус, и денег >= цены(е)
{
Advertisement.Initialize("1323575", false);
StartCoroutine(ShowAdWhenReady());
if (cost > 0) // Если цена больше чем 0, то:
{
score -= cost; // Вычитаем цену из денег
StartCoroutine(BonusTimer(shopItems[index].timeOfBonus, index)); //Запускаем бонусный таймер
}
else print("Нечего улучшать то!"); // Иначе выводим в консоль текст.
}
else if (score >= shopItems[index].cost) // Иначе, если товар нажатой кнопки - это не бонус, и денег >= цена
{
if (shopItems[index].itsItemPerSec) shopItems[index].bonusCounter++; // Если нанимаем рабочего (к примеру), то прибавляем кол-во рабочих
else scoreIncrease += shopItems[index].bonusIncrease; // Иначе бонусу при клике добавляем бонус товара
score -= shopItems[index].cost; // Вычитаем цену из денег
if (shopItems[index].needCostMultiplier) shopItems[index].cost *= shopItems[index].costMultiplier; // Если товару нужно умножить цену, то умножаем на множитель
shopItems[index].levelOfItem++; // Поднимаем уровень предмета на 1
}
else print("Не хватает денег!"); // Иначе если 2 проверки равны false, то выводим в консоль текст.
updateCosts(); //Обновить текст с ценами
}
private void updateCosts() // Метод для обновления текста с ценами
{
for (int i = 0; i < shopItems.Count; i++) // Цикл выполняется, пока переменная i < кол-ва товаров
{
if (shopItems[i].itsBonus) // Если товар является бонусом, то:
{
float cost = shopItems[i].cost * shopItems[shopItems[i].itemIndex].bonusCounter; // Рассчитываем цену в зависимости от кол-ва рабочих (к примеру)
shopItemsText[i].text = shopItems[i].name + "\n" + conveterscore.Instance.GetCurrencyIntoString(cost, false, false) + "$"; // Обновляем текст кнопки с рассчитанной ценой
}
else shopItemsText[i].text = shopItems[i].name + "\n" + conveterscore.Instance.GetCurrencyIntoString(shopItems[i].cost , false, false) + "$"; // Иначе если товар не является бонусом, то обновляем текст кнопки с обычной ценой
}
}
shopItemsText[i]– Apr 03 '17 at 18:34name. – Дмитрий Чистик Apr 04 '17 at 05:51