176 lines
6.3 KiB
C#
176 lines
6.3 KiB
C#
using System.Collections.Generic;
|
|
using TMPro;
|
|
using UnityEngine;
|
|
|
|
public class FarmSlotCard : CardBase
|
|
{
|
|
public GameObject[] gos; // 0 심은 경우, 1 선택, 2 잠금
|
|
public GameObject[] gos_btn; // 0 심기, 1 즉시 완료, 2 수확하기
|
|
public TextMeshProUGUI[] texts; // 0 심으세요 or 남은 시간
|
|
public MoneyForm m_Price; // 즉시 완료 가격
|
|
|
|
SD_FarmSlot m_Data;
|
|
|
|
private void Awake()
|
|
{
|
|
m_Price.icon.sprite = UIAtlasMgr.Ins.Get_Sprite(1);
|
|
}
|
|
|
|
public override void Set<T>(T _base)
|
|
{
|
|
base.Set(_base);
|
|
Set_Repeat_for1sec(Set_Time);
|
|
|
|
m_Data = _base as SD_FarmSlot;
|
|
var sdata = ServerInfo.Ins.m_ServerData;
|
|
gos[1].SetActive(false);
|
|
gos[2].SetActive(m_Data.Slot > sdata.Get_FarmMaxSlot());
|
|
|
|
if (m_Data.Grade > 0)
|
|
{ // 심었음
|
|
gos[0].SetActive(true);
|
|
Set_Time();
|
|
}
|
|
else
|
|
{ // 심어야 함
|
|
gos[0].SetActive(false);
|
|
texts[0].text = DSUtil.Format(127);
|
|
DSUtil.InActivateGameObjects(gos_btn, 0);
|
|
}
|
|
}
|
|
|
|
void Set_Time()
|
|
{
|
|
if (!DSUtil.CheckNull(m_Data))
|
|
{
|
|
var sdata = ServerInfo.Ins.m_ServerData;
|
|
var time = m_Data.Get_RemainSec();
|
|
if (time > 0)
|
|
{ // 자라는 중
|
|
texts[0].text = DSUtil.Format(128, DSUtil.Get_TimeText_HMS(false, time));
|
|
DSUtil.InActivateGameObjects(gos_btn, 1);
|
|
m_Price.amount.text = Get_ImmPrice().ToString();
|
|
}
|
|
else
|
|
{
|
|
if (m_Data.Grade > 0)
|
|
{ // 수확 가능
|
|
texts[0].text = "";
|
|
DSUtil.InActivateGameObjects(gos_btn, 2);
|
|
}
|
|
else
|
|
{ // 심기
|
|
texts[0].text = DSUtil.Format(127);
|
|
DSUtil.InActivateGameObjects(gos_btn, 0);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
int Get_ImmPrice()
|
|
{
|
|
var ainfo = MyValue.Get_ActorStatInfoorNull(eRole.PC);
|
|
int price = m_Data.Get_RemainSec() * 10;
|
|
return price - (int)(price * ainfo.Get_Stat(eStat.Reduction_in_Immediate_Harvest_Cost));
|
|
}
|
|
|
|
public void OnClick_PlangtingSeed()
|
|
{
|
|
FarmSlotUI.Ins.m_FarmSelectEnchantUI.Set(m_Data);
|
|
}
|
|
public void OnClick_ImmComplete()
|
|
{
|
|
var sdata = ServerInfo.Ins.m_ServerData;
|
|
var price = Get_ImmPrice();
|
|
if (sdata.Check_ItemAmount(table_GlobalValue.Ins.Get_Int("n_CashItemID"), price))
|
|
{
|
|
sdata.Use_Item(table_GlobalValue.Ins.Get_Int("n_CashItemID"), price);
|
|
sdata.Add_MissionCount(ePurpose.SHORTENING_CROP_HARVEST);
|
|
OnClick_Get();
|
|
}
|
|
}
|
|
|
|
public void OnClick_Get()
|
|
{
|
|
if (m_Data.Grade > 0 && m_Data.Get_RemainSec() <= 0)
|
|
ServerInfo.Ins.Save_Farm_Harvest(m_Data.Slot, result =>
|
|
{
|
|
var sdata = ServerInfo.Ins.m_ServerData;
|
|
var items = result.Items;
|
|
for (int i = 0; i < items.Count; i++)
|
|
sdata.Add_Item(items[i].itemid, items[i].amount);
|
|
|
|
sdata.Add_MissionCount(ePurpose.HARVESTING_CROPS_ACC);
|
|
sdata.Add_MissionCount(ePurpose.HARVESTING_CROPS_ALL);
|
|
|
|
ObtainItemUI.Ins.Set(items);
|
|
sdata.Set_FarmSlot(m_Data.Slot, 0, ServerInfo.ServerTime, 0);
|
|
FarmSlotUI.Ins.Set();
|
|
});
|
|
}
|
|
// 클라 기반
|
|
//public void OnClick_Get()
|
|
//{
|
|
// if (m_Data.Grade > 0)
|
|
// {
|
|
// List<ItemSimpleData> items = new List<ItemSimpleData>();
|
|
|
|
// var sdata = ServerInfo.Ins.m_ServerData;
|
|
// var Tdata = table_harvestconfig.Ins.Get_Data_orNull(m_Data.Grade);
|
|
// var EnchantData = table_enchanlist.Ins.Get_Data_orNull(m_Data.EnchantID);
|
|
// var ainfo = MyValue.Get_ActorStatInfoorNull(eRole.PC);
|
|
|
|
// bool isMajorSuccess = DSUtil.RandomTrue(ainfo.Get_Stat(eStat.MajorSuccess));
|
|
// bool FailHarvest = !isMajorSuccess && DSUtil.RandomTrue(0.1d - ainfo.Get_Stat(eStat.CropFailurePrevention));
|
|
|
|
// var totalAmount = 0;
|
|
// for (int i = 0; i < table_GlobalValue.Ins.Get_Int("n_FarmPlantingSeedAmount"); i++)
|
|
// {
|
|
// totalAmount += Random.Range(Tdata.n_MinAmount, Tdata.n_MaxAmount + 1);
|
|
// if (DSUtil.RandomTrue(ainfo.Get_Stat(eStat.Reclaim_Used_Resources)))
|
|
// items.Add(new ItemSimpleData { itemid = m_Data.EnchantID, amount = 1 });
|
|
// }
|
|
// totalAmount += (int)ainfo.Get_Stat(eStat.HarvestAmountUp);
|
|
|
|
// var goldFruitRate = Tdata.f_GoldFruitRate + ainfo.Get_Stat(eStat.GoldFruitUp);
|
|
// var statFruitRate = Tdata.f_StatFruitRate + ainfo.Get_Stat(eStat.StatFruitUp);
|
|
|
|
// if (isMajorSuccess)
|
|
// {
|
|
// ToastUI.Ins.Set(427);
|
|
// totalAmount = (int)(totalAmount * 1.5);
|
|
// goldFruitRate *= 1.5f;
|
|
// }
|
|
// else if (FailHarvest)
|
|
// {
|
|
// ToastUI.Ins.Set(428);
|
|
// totalAmount -= (int)(totalAmount * 0.5);
|
|
// goldFruitRate *= 0.5f;
|
|
// }
|
|
|
|
// for (int i = 0; i < totalAmount; i++)
|
|
// {
|
|
// if (DSUtil.RandomTrue(goldFruitRate))
|
|
// { // 신비 열매로 변할 확률
|
|
// items.Add(new ItemSimpleData { itemid = 455, amount = 1 });
|
|
// }
|
|
// else if (DSUtil.RandomTrue(statFruitRate))
|
|
// { // 스탯 열매로 변할 확률
|
|
// items.Add(new ItemSimpleData { itemid = EnchantData.n_FruitID, amount = 1 });
|
|
// }
|
|
// else
|
|
// items.Add(new ItemSimpleData { itemid = table_GlobalValue.Ins.Get_Int("n_FarmSeedID"), amount = 1 });
|
|
// }
|
|
|
|
// for (int i = 0; i < items.Count; i++)
|
|
// sdata.Add_Item(items[i].itemid, items[i].amount);
|
|
|
|
// sdata.Add_MissionCount(ePurpose.HARVESTING_CROPS_ACC);
|
|
// sdata.Add_MissionCount(ePurpose.HARVESTING_CROPS_ALL);
|
|
|
|
// ObtainItemUI.Ins.Set(items);
|
|
// sdata.Set_FarmSlot(m_Data.Slot, 0, ServerInfo.ServerTime, 0);
|
|
// FarmSlotUI.Ins.Set();
|
|
// }
|
|
//}
|
|
} |