public override TaskState Execute() { var map = blackboard.Critter.GetMap (); if (map == null) return TaskState.Failed; var critters = new CritterArray (); map.GetCritters (0, find, critters); List<Critter> found = new List<Critter> (); foreach (var critter in critters) { if (critter == GetCritter () || !Check (critter)) continue; found.Add (critter); } if (found.Count == 0) return TaskState.Failed; if (chooser != null) { var critter = chooser.Choose (found); found.Clear (); found.Add (critter); } GetBlackboard ().SetCritters (key, found); return TaskState.Success; }
public uint CreateLocation(ushort pid, ushort wx, ushort wy, CritterArray critters) { return Global_CreateLocation(pid, wx, wy, (IntPtr)critters); }
static void HandleArray_scope(Critter cr, int rc) { var arr = new CritterArray { cr }; Tests.Assert (cr.RefCount == rc + 1, "Critter reference in array, rc++."); var cr2 = arr[0]; Tests.Assert (cr.RefCount == rc + 1, "Fetching reference to same native resource, rc the same."); arr[0] = null; Tests.Assert (cr.RefCount == rc, "Reference cleared, rc--."); arr[0] = cr; }
public uint GetAllNpc(ushort pid, CritterArray npc) { return Global_GetAllNpc(pid, (IntPtr)npc); }
public virtual uint GetCrittersSeeing(CritterArray critters, bool look_on_them, Find find_type, CritterArray critters_result) { return Map_GetCrittersSeeing(thisptr, critters.ThisPtr, look_on_them, (int)find_type, critters_result != null ? critters_result.ThisPtr : IntPtr.Zero); }
public virtual uint GetCrittersWhoViewPath(ushort from_hx, ushort from_hy, ushort to_hx, ushort to_hy, float angle, uint dist, Find find_type, CritterArray critters) { return Map_GetCrittersWhoViewPath(thisptr, from_hx, from_hy, to_hx, to_hy, angle, dist, (int)find_type, critters != null ? critters.ThisPtr : IntPtr.Zero); }
public virtual uint GetCrittersHex(ushort hx, ushort hy, uint radius, Find find_type, CritterArray critters) { return Map_GetCritters(thisptr, hx, hy, radius, (int)find_type, critters != null ? critters.ThisPtr : IntPtr.Zero); }
public virtual uint GetCrittersInPath(ushort from_hx, ushort from_hy, ushort to_hx, ushort to_hy, float angle, uint dist, Find find_type, CritterArray critters, out ushort pre_block_hx, out ushort pre_block_hy, out ushort block_hx, out ushort block_hy) { return Map_GetCrittersInPathBlock(thisptr, from_hx, from_hy, to_hx, to_hy, angle, dist, (int)find_type, critters != null ? critters.ThisPtr : IntPtr.Zero, out pre_block_hx, out pre_block_hy, out block_hx, out block_hy); }
public virtual uint GetCritters(ushort pid, Find find_type, CritterArray critters = null) { return Map_GetCrittersByPids(thisptr, pid, (int)find_type, critters != null ? critters.ThisPtr : IntPtr.Zero); }
public virtual bool TransitToGlobal(CritterArray array) { return Crit_TransitToGlobalWithGroup(thisptr, array.ThisPtr); }
public virtual uint GetTalkedPlayers(CritterArray players) { return Npc_GetTalkedPlayers(thisptr, players != null ? players.ThisPtr : IntPtr.Zero); }
public virtual uint GetFollowGroup(Find find_type, CritterArray critters) { return Crit_GetFollowGroup(thisptr, (int)find_type, critters != null ? critters.ThisPtr : IntPtr.Zero); }
public virtual uint GetCritters(bool look_on_me, Find find_type, CritterArray critters) { return Crit_GetCritters(thisptr, look_on_me, (int)find_type, critters != null ? critters.ThisPtr : IntPtr.Zero); }