IntelligentCreatureData.cs 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  1. public class IntelligentCreatureRules
  2. {
  3. public int MinimalFullness = 1;
  4. public bool MousePickupEnabled = false;
  5. public int MousePickupRange = 0;
  6. public bool AutoPickupEnabled = false;
  7. public int AutoPickupRange = 0;
  8. public bool SemiAutoPickupEnabled = false;
  9. public int SemiAutoPickupRange = 0;
  10. public bool CanProduceBlackStone = false;
  11. public IntelligentCreatureRules()
  12. {
  13. }
  14. public IntelligentCreatureRules(BinaryReader reader)
  15. {
  16. MinimalFullness = reader.ReadInt32();
  17. MousePickupEnabled = reader.ReadBoolean();
  18. MousePickupRange = reader.ReadInt32();
  19. AutoPickupEnabled = reader.ReadBoolean();
  20. AutoPickupRange = reader.ReadInt32();
  21. SemiAutoPickupEnabled = reader.ReadBoolean();
  22. SemiAutoPickupRange = reader.ReadInt32();
  23. CanProduceBlackStone = reader.ReadBoolean();
  24. }
  25. public void Save(BinaryWriter writer)
  26. {
  27. writer.Write(MinimalFullness);
  28. writer.Write(MousePickupEnabled);
  29. writer.Write(MousePickupRange);
  30. writer.Write(AutoPickupEnabled);
  31. writer.Write(AutoPickupRange);
  32. writer.Write(SemiAutoPickupEnabled);
  33. writer.Write(SemiAutoPickupRange);
  34. writer.Write(CanProduceBlackStone);
  35. }
  36. }
  37. public class IntelligentCreatureItemFilter
  38. {
  39. public bool PetPickupAll = true;
  40. public bool PetPickupGold = false;
  41. public bool PetPickupWeapons = false;
  42. public bool PetPickupArmours = false;
  43. public bool PetPickupHelmets = false;
  44. public bool PetPickupBoots = false;
  45. public bool PetPickupBelts = false;
  46. public bool PetPickupAccessories = false;
  47. public bool PetPickupOthers = false;
  48. public ItemGrade PickupGrade = ItemGrade.None;
  49. public IntelligentCreatureItemFilter()
  50. {
  51. }
  52. public void SetItemFilter(int idx)
  53. {
  54. switch (idx)
  55. {
  56. case 0://all items
  57. PetPickupAll = true;
  58. PetPickupGold = false;
  59. PetPickupWeapons = false;
  60. PetPickupArmours = false;
  61. PetPickupHelmets = false;
  62. PetPickupBoots = false;
  63. PetPickupBelts = false;
  64. PetPickupAccessories = false;
  65. PetPickupOthers = false;
  66. break;
  67. case 1://gold
  68. PetPickupAll = false;
  69. PetPickupGold = !PetPickupGold;
  70. break;
  71. case 2://weapons
  72. PetPickupAll = false;
  73. PetPickupWeapons = !PetPickupWeapons;
  74. break;
  75. case 3://armours
  76. PetPickupAll = false;
  77. PetPickupArmours = !PetPickupArmours;
  78. break;
  79. case 4://helmets
  80. PetPickupAll = false;
  81. PetPickupHelmets = !PetPickupHelmets;
  82. break;
  83. case 5://boots
  84. PetPickupAll = false;
  85. PetPickupBoots = !PetPickupBoots;
  86. break;
  87. case 6://belts
  88. PetPickupAll = false;
  89. PetPickupBelts = !PetPickupBelts;
  90. break;
  91. case 7://jewelry
  92. PetPickupAll = false;
  93. PetPickupAccessories = !PetPickupAccessories;
  94. break;
  95. case 8://others
  96. PetPickupAll = false;
  97. PetPickupOthers = !PetPickupOthers;
  98. break;
  99. }
  100. if (PetPickupGold && PetPickupWeapons && PetPickupArmours && PetPickupHelmets && PetPickupBoots && PetPickupBelts && PetPickupAccessories && PetPickupOthers)
  101. {
  102. PetPickupAll = true;
  103. PetPickupGold = false;
  104. PetPickupWeapons = false;
  105. PetPickupArmours = false;
  106. PetPickupHelmets = false;
  107. PetPickupBoots = false;
  108. PetPickupBelts = false;
  109. PetPickupAccessories = false;
  110. PetPickupOthers = false;
  111. }
  112. else
  113. if (!PetPickupGold && !PetPickupWeapons && !PetPickupArmours && !PetPickupHelmets && !PetPickupBoots && !PetPickupBelts && !PetPickupAccessories && !PetPickupOthers)
  114. {
  115. PetPickupAll = true;
  116. }
  117. }
  118. public IntelligentCreatureItemFilter(BinaryReader reader)
  119. {
  120. PetPickupAll = reader.ReadBoolean();
  121. PetPickupGold = reader.ReadBoolean();
  122. PetPickupWeapons = reader.ReadBoolean();
  123. PetPickupArmours = reader.ReadBoolean();
  124. PetPickupHelmets = reader.ReadBoolean();
  125. PetPickupBoots = reader.ReadBoolean();
  126. PetPickupBelts = reader.ReadBoolean();
  127. PetPickupAccessories = reader.ReadBoolean();
  128. PetPickupOthers = reader.ReadBoolean();
  129. //PickupGrade = (ItemGrade)reader.ReadByte();
  130. }
  131. public void Save(BinaryWriter writer)
  132. {
  133. writer.Write(PetPickupAll);
  134. writer.Write(PetPickupGold);
  135. writer.Write(PetPickupWeapons);
  136. writer.Write(PetPickupArmours);
  137. writer.Write(PetPickupHelmets);
  138. writer.Write(PetPickupBoots);
  139. writer.Write(PetPickupBelts);
  140. writer.Write(PetPickupAccessories);
  141. writer.Write(PetPickupOthers);
  142. //writer.Write((byte)PickupGrade);
  143. }
  144. }
  145. public class ClientIntelligentCreature
  146. {
  147. public IntelligentCreatureType PetType;
  148. public int Icon;
  149. public string CustomName;
  150. public int Fullness;
  151. public int SlotIndex;
  152. public DateTime Expire;
  153. public long BlackstoneTime;
  154. public long MaintainFoodTime;
  155. public IntelligentCreaturePickupMode petMode = IntelligentCreaturePickupMode.SemiAutomatic;
  156. public IntelligentCreatureRules CreatureRules;
  157. public IntelligentCreatureItemFilter Filter;
  158. public ClientIntelligentCreature()
  159. {
  160. }
  161. public ClientIntelligentCreature(BinaryReader reader)
  162. {
  163. PetType = (IntelligentCreatureType)reader.ReadByte();
  164. Icon = reader.ReadInt32();
  165. CustomName = reader.ReadString();
  166. Fullness = reader.ReadInt32();
  167. SlotIndex = reader.ReadInt32();
  168. Expire = DateTime.FromBinary(reader.ReadInt64());
  169. BlackstoneTime = reader.ReadInt64();
  170. petMode = (IntelligentCreaturePickupMode)reader.ReadByte();
  171. CreatureRules = new IntelligentCreatureRules(reader);
  172. Filter = new IntelligentCreatureItemFilter(reader)
  173. {
  174. PickupGrade = (ItemGrade)reader.ReadByte()
  175. };
  176. MaintainFoodTime = reader.ReadInt64();
  177. }
  178. public void Save(BinaryWriter writer)
  179. {
  180. writer.Write((byte)PetType);
  181. writer.Write(Icon);
  182. writer.Write(CustomName);
  183. writer.Write(Fullness);
  184. writer.Write(SlotIndex);
  185. writer.Write(Expire.ToBinary());
  186. writer.Write(BlackstoneTime);
  187. writer.Write((byte)petMode);
  188. CreatureRules.Save(writer);
  189. Filter.Save(writer);
  190. writer.Write((byte)Filter.PickupGrade);
  191. writer.Write(MaintainFoodTime);
  192. }
  193. }