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 _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 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(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(); // } //} }