Esempio n. 1
0
        public virtual void ReadJson(JToken json, Context context)
        {
            Guid globalId = Guid.Parse(json["objectId"].Value <string>());

            GlobalID = EffectManager.SetGlobalID(this, globalId);
        }
Esempio n. 2
0
 public IEnumerable <T> GetEffects <T>() where T : Effect
 {
     return(EffectManager.GetEffects <T>(this));
 }
Esempio n. 3
0
 public void OnDestroy()
 {
     this.ClearEffects();
     EffectManager.DeleteHolder(this);
 }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
 public void Restart()
 {
     Game.Scene = new SceneLoading(Game);
     EffectManager.Reset();
 }
Esempio n. 6
0
 public void ReturnToTitle()
 {
     Game.Scene = new SceneTitle(Game);
     EffectManager.Reset();
 }
Esempio n. 7
0
 public Container()
 {
     ObjectID = EffectManager.SetID(this);
     GlobalID = EffectManager.SetGlobalID(this);
 }
Esempio n. 8
0
 public StatusEffect()
 {
     ObjectID = EffectManager.SetID(this);
 }