public virtual void ReadJson(JToken json, Context context) { Guid globalId = Guid.Parse(json["objectId"].Value <string>()); GlobalID = EffectManager.SetGlobalID(this, globalId); }
public IEnumerable <T> GetEffects <T>() where T : Effect { return(EffectManager.GetEffects <T>(this)); }
public void OnDestroy() { this.ClearEffects(); EffectManager.DeleteHolder(this); }
public JToken WriteJson() { Context context = new Context(this); List <IEffectHolder> effectHolders = new List <IEffectHolder>(); JObject json = new JObject(); json["id"] = ID; json["width"] = Width; json["height"] = Height; json["groups"] = WriteGroups(context); json["feelings"] = Feelings.WriteJson(context); JArray groups = new JArray(); JArray flags = new JArray(); JArray tilesAbove = new JArray(); JArray tilesUnder = new JArray(); for (int y = 0; y < Height; y++) { for (int x = 0; x < Width; x++) { var tile = Tiles[x, y]; groups.Add(context.GetGroupID(tile.Group)); flags.Add(WriteFlags(tile)); tilesAbove.Add(tile.Tile?.WriteJson(context)); tilesUnder.Add(tile.UnderTile?.WriteJson(context)); effectHolders.Add(tile); if (tile.Tile != null) { effectHolders.Add(tile.Tile); } if (tile.UnderTile != null) { effectHolders.Add(tile.UnderTile); } } } json["groupMap"] = groups; json["flagMap"] = flags; json["tileMap"] = tilesAbove; json["tileMapUnder"] = tilesUnder; JArray effectsArray = new JArray(); JArray entitiesArray = new JArray(); JArray bonusArray = new JArray(); var gameObjects = World.GameObjects.OfType <IJsonSerializable>().Where(obj => obj.Map == this); effectHolders.AddRange(gameObjects.OfType <IEffectHolder>()); foreach (var entity in gameObjects) { entitiesArray.Add(entity.WriteJson(context)); } var effects = effectHolders.SelectMany(holder => EffectManager.GetEffects <Effect>(holder, false)).Distinct().ToList(); foreach (var effect in effects) { if (!effect.Type.HasFlag(EffectType.NoSerialize)) { effectsArray.Add(effect.WriteJson()); } } foreach (var bonus in Bonuses) { JObject bonusJson = new JObject(); bonusJson["id"] = bonus.Bonus.ID; bonusJson["levelsActive"] = bonus.LevelsActive; bonusArray.Add(bonusJson); } json["entities"] = entitiesArray; json["effects"] = effectsArray; json["bonuses"] = bonusArray; return(json); }
public void Restart() { Game.Scene = new SceneLoading(Game); EffectManager.Reset(); }
public void ReturnToTitle() { Game.Scene = new SceneTitle(Game); EffectManager.Reset(); }
public Container() { ObjectID = EffectManager.SetID(this); GlobalID = EffectManager.SetGlobalID(this); }
public StatusEffect() { ObjectID = EffectManager.SetID(this); }