From 6eb915c129fc90c6f4c82ae097dd6ffad5239efc Mon Sep 17 00:00:00 2001 From: chai Date: Mon, 25 Jan 2021 14:28:30 +0800 Subject: +scripts --- Client/Assets/Scripts/XMainClient/Farmland.cs | 534 ++++++++++++++++++++++++++ 1 file changed, 534 insertions(+) create mode 100644 Client/Assets/Scripts/XMainClient/Farmland.cs (limited to 'Client/Assets/Scripts/XMainClient/Farmland.cs') diff --git a/Client/Assets/Scripts/XMainClient/Farmland.cs b/Client/Assets/Scripts/XMainClient/Farmland.cs new file mode 100644 index 00000000..d1a66356 --- /dev/null +++ b/Client/Assets/Scripts/XMainClient/Farmland.cs @@ -0,0 +1,534 @@ +using System; +using System.Collections.Generic; +using KKSG; +using UnityEngine; +using XUtliPoolLib; + +namespace XMainClient +{ + internal class Farmland + { + public HomePlantDocument Doc + { + get + { + bool flag = this.m_doc == null; + if (flag) + { + this.m_doc = HomePlantDocument.Doc; + } + return this.m_doc; + } + } + + public uint SeedId + { + get + { + return this.m_seedId; + } + } + + public bool IsLock + { + get + { + return this.m_bIsLock; + } + } + + public bool IsNeedBreak + { + get + { + bool flag = !this.m_bIsLock; + bool result; + if (flag) + { + result = false; + } + else + { + bool flag2 = (ulong)XSingleton.singleton.XPlayerData.Level < (ulong)((long)this.BreakLevel); + result = !flag2; + } + return result; + } + } + + public ulong OwnerRoleId + { + get + { + return this.m_ownerRoleId; + } + } + + public uint FarmlandID + { + get + { + return this.m_farmlandId; + } + } + + public PlantSeed.RowData Row + { + get + { + return this.m_row; + } + } + + public List FarmLogList + { + get + { + return this.m_farmLogList; + } + } + + public bool IsFree + { + get + { + return this.m_seedId == 0u; + } + } + + public ulong StateLeftTime + { + get + { + return this.m_stateLeftTime; + } + } + + public CropState State + { + get + { + return this.m_state; + } + } + + public bool IsRipe + { + get + { + return this.m_bisRipe; + } + set + { + bool flag = this.m_bisRipe != value; + if (flag) + { + this.m_bisRipe = value; + this.Doc.SetHadRedDot(); + } + } + } + + public float GrowPercent + { + get + { + return this.m_growth / this.m_row.GrowUpAmount; + } + } + + public virtual int BreakLevel + { + get + { + return this.m_breakLevel; + } + } + + protected virtual Vector3 BoardRotation + { + get + { + return Vector3.zero; + } + } + + public uint NpcId + { + get + { + bool flag = this.m_npcId == 0u; + if (flag) + { + this.m_npcId = this.Doc.GetNpcIdByFarmId(this.m_farmlandId); + } + return this.m_npcId; + } + } + + public GrowStage Stage + { + get + { + bool isFree = this.IsFree; + GrowStage result; + if (isFree) + { + result = GrowStage.None; + } + else + { + bool isRipe = this.IsRipe; + if (isRipe) + { + result = GrowStage.Ripe; + } + else + { + result = this.m_growStage; + } + } + return result; + } + } + + public float GrowSpeed + { + get + { + bool isFree = this.IsFree; + float result; + if (isFree) + { + result = 0f; + } + else + { + uint num = 0u; + bool flag = this.State > CropState.None; + if (flag) + { + num = this.m_row.BadStateGrowUpRate; + } + bool isHadSprite = this.Doc.HomeSprite.IsHadSprite; + if (isHadSprite) + { + num += this.Doc.HomeSprite.Row.EffectGrowRate; + } + bool flag2 = num < 100u; + if (flag2) + { + result = this.m_row.GrowUpAmountPerMinute * (100u - num) / 100f; + } + else + { + result = 1f; + } + } + return result; + } + } + + private XFx m_fx; + + private PlantSeed.RowData m_row; + + private string m_fxPath = ""; + + protected uint m_farmlandId = 0u; + + protected uint m_npcId = 0u; + + private uint m_seedId = 0u; + + private float m_growth = 0f; + + private ulong m_stateLeftTime = 0UL; + + protected bool m_bIsLock = true; + + protected GameObject m_boardGo; + + private CropState m_state = CropState.None; + + private HomePlantDocument m_doc; + + protected int m_breakLevel = -1; + + private ulong m_ownerRoleId = 0UL; + + private GrowStage m_growStage = GrowStage.None; + + private bool m_bisRipe = false; + + private List m_farmLogList = new List(); + + private List m_stolenRoleIdList = new List(); + + public Farmland(uint farmlandId) + { + this.m_farmlandId = farmlandId; + this.m_fxPath = "Effects/FX_Particle/UIfx/rwts_zhongzhi"; + } + + public void AddStolenUid(ulong uid) + { + this.m_stolenRoleIdList.Add(uid); + } + + public int CanSteal() + { + bool flag = (long)this.m_stolenRoleIdList.Count >= (long)((ulong)this.m_row.CanStealMaxTimes); + int result; + if (flag) + { + result = 1; + } + else + { + for (int i = 0; i < this.m_stolenRoleIdList.Count; i++) + { + bool flag2 = this.m_stolenRoleIdList[i] == XSingleton.singleton.XPlayerData.RoleID; + if (flag2) + { + return 2; + } + } + result = 0; + } + return result; + } + + public void SetFarmInfo(uint seedId, float growth, uint stage, ulong statLeftTime, ulong ownerId) + { + this.m_seedId = seedId; + this.m_growth = growth; + this.m_ownerRoleId = ownerId; + this.GetSeedRowData(seedId); + this.SetGrowStage(stage); + bool flag = this.m_row != null; + if (flag) + { + bool flag2 = (ulong)this.m_row.PlantStateCD > statLeftTime; + if (flag2) + { + this.m_stateLeftTime = (ulong)this.m_row.PlantStateCD - statLeftTime; + } + else + { + this.m_stateLeftTime = 0UL; + } + bool flag3 = this.m_growth == 0f; + if (flag3) + { + this.m_growth = this.m_row.InitUpAmount; + } + } + this.m_farmLogList.Clear(); + } + + public void SetLockStatus(bool status) + { + this.m_bIsLock = status; + this.SetPerfab(); + } + + public void UpdateFarmInfo(float growth, uint stage) + { + this.m_growth = growth; + this.SetGrowStage(stage); + bool flag = this.m_row != null; + if (flag) + { + this.m_stateLeftTime = (ulong)this.m_row.PlantStateCD; + } + } + + public void SetFarmlandFree() + { + this.m_seedId = 0u; + this.m_growth = 0f; + this.m_stateLeftTime = 0UL; + this.m_ownerRoleId = 0UL; + this.m_farmLogList.Clear(); + this.m_stolenRoleIdList.Clear(); + } + + public long GrowLeftTime() + { + bool isFree = this.IsFree; + long result; + if (isFree) + { + result = 0L; + } + else + { + float num = (this.m_row.GrowUpAmount - this.m_growth) / this.GrowSpeed; + bool flag = num < 0f; + if (flag) + { + num = 0f; + } + result = (long)Math.Ceiling((double)num); + } + return result; + } + + public void UpdateGrowth() + { + bool flag = this.m_growth < this.m_row.GrowUpAmount; + if (flag) + { + this.m_growth += this.GrowSpeed; + } + } + + public void SetCropState(PlantGrowState state) + { + this.IsRipe = (state == PlantGrowState.growMature); + switch (state) + { + case PlantGrowState.growDrought: + this.m_state = CropState.Watering; + break; + case PlantGrowState.growPest: + this.m_state = CropState.Disinsection; + break; + case PlantGrowState.growSluggish: + this.m_state = CropState.Fertilizer; + break; + case PlantGrowState.growCD: + this.m_state = CropState.None; + break; + case PlantGrowState.growMature: + this.m_state = CropState.None; + break; + default: + this.m_state = CropState.None; + break; + } + } + + public void SetFarmlandLog(List lst, uint severTime) + { + this.m_farmLogList.Clear(); + this.m_stolenRoleIdList.Clear(); + for (int i = 0; i < lst.Count; i++) + { + bool flag = lst[i].event_type == 4u; + if (flag) + { + this.m_stolenRoleIdList.Add(lst[i].role_id); + } + } + bool flag2 = lst.Count > 3; + if (flag2) + { + for (int j = lst.Count - 3; j < lst.Count; j++) + { + HomeEventLog item = new HomeEventLog(lst[j], severTime); + this.m_farmLogList.Add(item); + } + } + else + { + for (int k = 0; k < lst.Count; k++) + { + HomeEventLog item2 = new HomeEventLog(lst[k], severTime); + this.m_farmLogList.Add(item2); + } + } + } + + public void AddFarmlandLog(GardenEventLog eventLog) + { + HomeEventLog item = new HomeEventLog(eventLog, 0u); + this.m_farmLogList.Insert(0, item); + bool flag = this.m_farmLogList.Count > 3; + if (flag) + { + this.m_farmLogList.RemoveRange(2, this.m_farmLogList.Count - 3); + } + } + + public void Destroy() + { + this.DestroyFxEffect(); + this.DestroyPerfab(); + } + + public void SetFxEffect() + { + HomeTypeEnum homeType = HomePlantDocument.Doc.HomeType; + bool flag = !this.IsFree || this.IsLock || homeType == HomeTypeEnum.None || homeType == HomeTypeEnum.OtherHome; + if (flag) + { + this.DestroyFxEffect(); + } + else + { + XNpc npc = XSingleton.singleton.GetNpc(this.NpcId); + bool flag2 = npc != null; + if (flag2) + { + bool flag3 = this.m_fx != null; + if (flag3) + { + this.DestroyFxEffect(); + } + bool flag4 = this.m_fx == null; + if (flag4) + { + this.m_fx = XSingleton.singleton.CreateFx(this.m_fxPath, null, true); + } + bool flag5 = this.m_fx != null; + if (flag5) + { + this.m_fx.Play(npc.EngineObject, new Vector3(0f, npc.Height - 0.3f, 0f), Vector3.one, 1f, false, false, "", 0f); + } + } + } + } + + protected virtual void SetPerfab() + { + } + + public void DestroyFxEffect() + { + bool flag = this.m_fx != null; + if (flag) + { + XSingleton.singleton.DestroyFx(this.m_fx, true); + this.m_fx = null; + } + } + + protected void DestroyPerfab() + { + XResourceLoaderMgr.SafeDestroy(ref this.m_boardGo, true); + } + + private void GetSeedRowData(uint seedId) + { + this.m_row = HomePlantDocument.PlantSeedTable.GetBySeedID(seedId); + } + + private void SetGrowStage(uint stage) + { + switch (stage) + { + case 1u: + this.m_growStage = GrowStage.First; + break; + case 2u: + this.m_growStage = GrowStage.Second; + break; + case 3u: + this.m_growStage = GrowStage.Third; + break; + } + } + } +} -- cgit v1.1-26-g67d0