Project_WL/Assets/Script/UI/Farm/FarmSlotCard.cs

176 lines
6.3 KiB
C#
Raw Normal View History

2024-12-15 01:39:39 +00:00
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);
2025-07-22 23:46:54 +00:00
Set_Repeat_for1sec(Set_Time);
2024-12-15 01:39:39 +00:00
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();
2024-12-15 01:39:39 +00:00
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;
2024-12-15 01:39:39 +00:00
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);
2024-12-15 01:39:39 +00:00
OnClick_Get();
}
}
2025-07-25 07:48:45 +00:00
2024-12-15 01:39:39 +00:00
public void OnClick_Get()
{
2025-07-25 07:48:45 +00:00
//if (m_Data.Grade > 0 && m_Data.Get_RemainSec() <= 0)
ServerInfo.Ins.Save_Farm_Harvest(m_Data.Slot, result =>
2024-12-15 01:39:39 +00:00
{
2025-07-25 07:48:45 +00:00
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();
});
2024-12-15 01:39:39 +00:00
}
2025-07-25 07:48:45 +00:00
// 클라 기반
//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();
// }
//}
2024-12-15 01:39:39 +00:00
}