2 using System.Collections.Generic;
3 using System.Collections.ObjectModel;
5 using System.Runtime.Serialization;
9 using Vintagestory.API.Client;
10 using Vintagestory.API.Common;
11 using Vintagestory.API.Common.Entities;
12 using Vintagestory.API.MathTools;
16 public delegate void EntityDesignatonAction(ICoreClientAPI clientAPI, EntitiesOfInterest poi, BlockPos posn, Entity entity);
19 /// Point of Interest Rule Designator
21 [JsonObject(MemberSerialization.OptIn)]
22 public class EntityDesignator
28 public EntityDesignatonAction SpecialAction;
31 public string SpecialActionName;
34 public AssetLocation Pattern;
37 public EnumEntityState? StateCheck;//Needed?
40 public bool Enabled { get; set; }
42 private EntityDesignator()
44 //throw new NotSupportedException();
47 public EntityDesignator(AssetLocation pattern, Color color, EnumEntityState? state)
55 public EntityDesignator(AssetLocation pattern, Color color, EnumEntityState? state, EntityDesignatonAction specialAct)
60 SpecialAction = specialAct;
61 SpecialActionName = specialAct.Method.Name;
65 public override string ToString()
66 => Pattern.ToShortString() + "|" + Color.Name + "|" + StateCheck ?? "";
69 public void RelinkDesignator(StreamingContext sCtx)
71 //TODO: properly Via reflection - and support for external designators?
72 if (SpecialAction == null && !String.IsNullOrEmpty(SpecialActionName)) {
73 switch (SpecialActionName) {
75 case "KeepTrackOfMerchant":
76 SpecialAction = DefaultDesignators.KeepTrackOfMerchant;