using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using WebTools.Reward;
public class ReplyKeeper : MonoBehaviour
{
[Header("Elements")]
[SerializeField]
private Text replyText;
[Header("Com controller")]
[SerializeField]
private CommentsController comCtrl;
[Header("Currency elements")]
[SerializeField]
private GameObject currencyGO;
[SerializeField]
private Image currencyImage;
[SerializeField]
private Text currencyText;
[SerializeField]
private GameObject prefabReward;
[Header("Currency sprites")]
[SerializeField]
private Sprite currencyDollars;
[SerializeField]
private Sprite currencyGlams;
[SerializeField]
private Sprite currencyMotivation;
[Header("Data")]
[SerializeField]
DataTools.DataUser dataUser;
private DataTools.Reply localReply;
public void SetReply(DataTools.Reply reply, CommentsController cc)
{
localReply = reply;
SetData();
SetCurrencyData();
}
private void SetCurrencyData()
{
currencyGO.SetActive(false);
if (localReply.Cost != null)
{
if (localReply.Cost.Motivation != 0)
{
currencyImage.sprite = currencyMotivation;
currencyText.text = Mathf.Abs(localReply.Cost.Motivation).ToString();
currencyGO.SetActive(true);
}
else if (localReply.Cost.Dollars!=0)
{
currencyImage.sprite = currencyDollars;
currencyText.text = Mathf.Abs(localReply.Cost.Dollars).ToString();
currencyGO.SetActive(true);
}
else if (localReply.Cost.Glam != 0)
{
currencyImage.sprite = currencyGlams;
currencyText.text = Mathf.Abs(localReply.Cost.Glam).ToString();
currencyGO.SetActive(true);
}
}
}
private void SetData()
{
if(localReply != null)
{
replyText.text = localReply.Text;
}
}
private bool HasCost()
{
return localReply.Cost != null && (localReply.Cost.Dollars != 0 || localReply.Cost.Glam != 0 || localReply.Cost.Motivation != 0);
}
///
/// Change user`s currency
///
///
private void ExecuteCostRewardChanges()
{
bool cost = HasCost();
if (cost)
{
if (localReply.Cost.Motivation != 0)
{
if(dataUser.UserData.CurrencyData.Motivation < localReply.Cost.Motivation)
{
cost = false;
}
else
{
dataUser.UserData.CurrencyData.Motivation -= localReply.Cost.Motivation;
cost = true;
}
}
else if (localReply.Cost.Dollars != 0)
{
if (dataUser.UserData.CurrencyData.Dollars < localReply.Cost.Dollars)
{
cost = false;
}
else
{
dataUser.UserData.CurrencyData.Dollars -= localReply.Cost.Dollars;
cost = true;
}
}
else if (localReply.Cost.Glam != 0)
{
if (dataUser.UserData.CurrencyData.Glam < localReply.Cost.Glam)
{
cost = false;
}
else
{
dataUser.UserData.CurrencyData.Glam -= localReply.Cost.Glam;
cost = true;
}
}
}
else
cost = true;
if(cost)
{
if (localReply.Reward.Motivation != 0)
{
SpawnReward(localReply.Reward.Motivation, RewardType.Motivation);
}
if (localReply.Reward.Dollars != 0)
{
SpawnReward(localReply.Reward.Dollars, RewardType.Dollar);
}
if (localReply.Reward.Glam != 0)
{
SpawnReward(localReply.Reward.Glam, RewardType.Glam);
}
if (localReply.Reward.Experience != 0)
{
SpawnReward(localReply.Reward.Experience, RewardType.Experience);
}
}
}
private void SpawnReward(int value, RewardType rewardType)
{
GameObject item = Instantiate(prefabReward);
item.transform.position = currencyGO.transform.position;
item.GetComponent().SpawnReward(rewardType, value);
}
public void Show(bool show)
{
this.gameObject.SetActive(show);
}
public void OnClick()
{
if(localReply != null)
{
ExecuteCostRewardChanges();
comCtrl.SwitchDialog(localReply.NextDialogIndex);
}
}
}