public IDictionary <string, object> ToDictionary(bool withFlock = false) { var result = new Dictionary <string, object> { { k.ID, Configuration.ID }, { k.name, Configuration.name }, { k.area, Area }, { k.zoneID, Zone.Id }, { k.roaming, Configuration.roaming }, { k.respawnSeconds, Configuration.roamingRespawnSeconds }, { k.presenceType, (int)Configuration.presenceType }, { k.radius, Configuration.randomRadius }, { k.x, Configuration.randomCenterX }, { k.y, Configuration.randomCenterY }, }; if (withFlock) { var counter = 0; var dictionary = Flocks.Select(f => f.ToDictionary()).ToDictionary <IDictionary <string, object>, string, object>(o => "f" + counter++, o => o); result.Add(k.flock, dictionary); } return(result); }
public void SaveToXML(string path) { XmlSerializer xs = new XmlSerializer(typeof(Flock[])); using (StreamWriter wr = new StreamWriter(path)) { xs.Serialize(wr, Flocks.ToArray <Flock>()); } }
public IFlockCollection DestroyFlock(HashSet <IFlockBoid> flock) { if (Flocks.Contains(flock)) { Flocks.Remove(flock); } return(this); }
public IFlockCollection AddBoid(HashSet <IFlockBoid> flock, IFlockBoid boid) { flock.Add(boid); if (!Flocks.Contains(flock)) { Flocks.Add(flock); } return(this); }
public IFlockCollection UpdateFlocks() { foreach (var flock in Flocks) { if (!flock.Any()) { Flocks.Remove(flock); } } return(this); }
protected override void OnUpdate(TimeSpan time) { var x = Flocks.GetMembers().Any(m => m.AI.Current is AggressorAI); if (x) { ResetDynamicDespawnTimer(); } _lifeTimeTracker.Update(time); if (_lifeTimeTracker.Expired) { OnPresenceExpired(); } }
private Flock SpawnFlock(int flockID) { var flock = CreateAndAddFlock(flockID); flock.SpawnAllMembers(); var summoner = GetSummonerPlayer(); if (summoner != null) { foreach (var npc in Flocks.GetMembers()) { npc.AddDirectThreat(summoner, 40 + FastRandom.NextDouble(0.0, 3.0)); npc.Tag(summoner, LifeTime); } } Zone.CreateBeam(BeamType.teleport_storm, builder => builder.WithPosition(DynamicPosition.GetRandomPositionInRange2D(0, 3)).WithDuration(100000)); return(flock); }
private IState CreateWaveState(IEnumerable <RandomFlockInfo> flockInfos, bool isLastWave) { var first = true; return(AnonymousState.Create(t => { if (!first) { return; } first = false; Task.Run(() => { foreach (var flockInfo in flockInfos) { var f = SpawnFlock(flockInfo.flockID); f.AllMembersDead += flock => { var membersCount = Flocks.MembersCount(); if (membersCount > 0) { return; } _fsm.Pop(); if (!isLastWave) { _fsm.Push(CreateDelayState(TimeSpan.FromSeconds(5))); } }; Logger.DebugInfo($"Flock spawned: {f}"); } }); })); }
// Use this for initialization void Start() { flocks = transform.parent.GetComponent <Flocks>(); am = GetComponent <Animator>(); }
public void Clear() { Flocks.Clear(); }
public IFlockCollection CreateFlock(IEnumerable <IFlockBoid> boids) { Flocks.Add(new HashSet <IFlockBoid>(boids)); return(this); }