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() { Set_Repeat_for1sec(Set_Time); m_Price.icon.sprite = UIAtlasMgr.Ins.Get_Sprite(1); } public override void Set(T _base) { base.Set(_base); 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.Time; 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 = (int)m_Data.Time * 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) { List items = new List(); 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(174, "수확 대성공!!"); totalAmount = (int)(totalAmount * 1.5); goldFruitRate *= 1.5f; } else if (FailHarvest) { ToastUI.Ins.Set(174, "흉작이 들었다."); 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, 0, 0); FarmSlotUI.Ins.Set(); } } }