You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

99 lines
2.9 KiB

namespace ET
{
public class FarmlandDestroySystem : DestroySystem<Farmland>
{
public override void Destroy(Farmland self)
{
self.Parent.Parent.GetParent<Unit>().RemoveFarmland(self);
}
}
public class FarmlandAwakeSystem : AwakeSystem<Farmland>
{
public override void Awake(Farmland self)
{
self.Parent.Parent.GetParent<Unit>().AddFarmland(self);
}
}
public class FarmlandUpdateSystem: UpdateSystem<Farmland>
{
public override void Update(Farmland self)
{
}
}
[FriendClass(typeof(Farmland))]
public static class FarmlandSystem
{
public static void FromMessage(this Farmland self, FarmlandProto farmlandProto)
{
self.Id = farmlandProto.id;
self.SeedCfgId = farmlandProto.SeedCfgId;
self.Duration = farmlandProto.duration;
self.ExProduct = farmlandProto.exProduct;
self.PlanSeedCfgId = farmlandProto.plantCfgId;
self.FarmlandState = farmlandProto.farmlandState;
}
public static FarmlandProto ToMessage(this Farmland self)
{
FarmlandProto proto = new FarmlandProto();
proto.id = self.Id;
proto.SeedCfgId = self.SeedCfgId;
proto.duration = self.Duration;
proto.exProduct = self.ExProduct;
proto.plantCfgId = self.PlanSeedCfgId;
proto.farmlandState = self.FarmlandState;
return proto;
}
public static int Plant(this Farmland self, int cropId,int seedId)
{
if (self.FarmlandState != FarmlandState.FARMLAND_STATE_FREE)
{
return ErrorCode.ERR_FarmlandNotFree;
}
self.ConfigId = cropId;
self.Duration = 0;
self.SeedCfgId = seedId;
self.PlanSeedCfgId = seedId;
self.FarmlandState = FarmlandState.FARMLAND_STATE_GROW;
self.ExProduct = 0;
return ErrorCode.ERR_Success;
}
public static void Update(this Farmland self)
{
if (self.FarmlandState != FarmlandState.FARMLAND_STATE_GROW)
{
return;
}
self.Duration += 1;
if (self.Duration >= self.Config.GrowthCycle)
{
self.FarmlandState = FarmlandState.FARMLAND_STATE_RIPE;
}
}
public static int Harvest(this Farmland self)
{
if (self.FarmlandState != FarmlandState.FARMLAND_STATE_RIPE)
{
return ErrorCode.ERR_PlantNotRipe;
}
self.Duration = 0;
self.SeedCfgId = 0;
self.PlanSeedCfgId = 0;
self.ExProduct = 0;
self.FarmlandState = FarmlandState.FARMLAND_STATE_FREE;
return ErrorCode.ERR_Success;
}
}
}