Пример #1
0
            public bool BlocksPlayer(Labdata labdata, bool wallsOnly = false)
            {
                if (MapBorder)
                {
                    return(true);
                }

                if (WallIndex != 0)
                {
                    var wallFlags = labdata.Walls[((int)WallIndex - 1) % labdata.Walls.Count].Flags;
                    return(wallFlags.HasFlag(Tileset.TileFlags.BlockAllMovement) || !wallFlags.HasFlag(Tileset.TileFlags.AllowMovementWalk));
                }

                if (!wallsOnly && ObjectIndex != 0)
                {
                    var obj = labdata.Objects[((int)ObjectIndex - 1) % labdata.Objects.Count];

                    foreach (var subObject in obj.SubObjects)
                    {
                        var objectFlags = subObject.Object.Flags;

                        if (objectFlags.HasFlag(Tileset.TileFlags.BlockAllMovement) || !objectFlags.HasFlag(Tileset.TileFlags.AllowMovementWalk))
                        {
                            return(true);
                        }
                    }
                }

                return(false);
            }
Пример #2
0
        public static Labdata Load(ILabdataReader labdataReader, IDataReader dataReader, IGameData gameData)
        {
            var labdata = new Labdata();

            labdataReader.ReadLabdata(labdata, dataReader, gameData);

            return(labdata);
        }
Пример #3
0
            public bool BlocksPlayerSight(Labdata labdata)
            {
                if (MapBorder)
                {
                    return(true);
                }

                if (WallIndex != 0)
                {
                    var wallFlags = labdata.Walls[((int)WallIndex - 1) % labdata.Walls.Count].Flags;
                    return(wallFlags.HasFlag(Tileset.TileFlags.BlockSight));
                }

                return(false);
            }