Example #1
0
 public MiniMapBlockState(MinimapBlock value)
 {
     color        = value.RoomColor;
     isKnown      = value.IsKnown;
     isVisited    = value.IsVisited;
     isTransition = value.IsTransition;
 }
Example #2
0
 public void ApplyTo(MinimapBlock block)
 {
     block.RoomColor    = color;
     block.IsKnown      = isKnown;
     block.IsVisited    = isVisited;
     block.IsTransition = isTransition;
 }
Example #3
0
        static MinimapSpecification DeepClone(MinimapSpecification spec)
        {
            var clone = new MinimapSpecification();

            foreach (var area in spec.Areas)
            {
                var cloneArea = new MinimapArea
                {
                    DefaultColor = area.DefaultColor,
                    LevelID      = area.LevelID
                };

                foreach (var room in area.Rooms)
                {
                    var cloneRoom = new MinimapRoom(cloneArea)
                    {
                        IsDebug      = room.IsDebug,
                        DefaultColor = room.DefaultColor,
                        RoomID       = room.RoomID,
                        Width        = room.Width,
                        Height       = room.Height,
                        Position     = room.Position
                    };

                    foreach (var kvp in room.Blocks)
                    {
                        var point = kvp.Key;
                        var block = kvp.Value;

                        var cloneBlock = new MinimapBlock(cloneRoom)
                        {
                            IsKnown          = block.IsKnown,
                            IsVisited        = block.IsVisited,
                            IsBoss           = block.IsBoss,
                            IsTimespinner    = block.IsTimespinner,
                            IsTransition     = block.IsTransition,
                            IsCheckpoint     = block.IsCheckpoint,
                            IsSolidWall      = block.IsSolidWall,
                            HasSolidWallToNW = block.HasSolidWallToNW,
                            RoomColor        = block.RoomColor,
                            Position         = block.Position
                        };

                        var dynamicCloneBlock = cloneBlock.AsDynamic();

                        dynamicCloneBlock._walls       = block.Walls;
                        dynamicCloneBlock._doors       = block.Doors;
                        dynamicCloneBlock._secretDoors = block.SecretDoors;

                        cloneRoom.Blocks.Add(point, cloneBlock);
                    }

                    cloneArea.Rooms.Add(cloneRoom);
                }

                clone.Areas.Add(cloneArea);
            }

            foreach (var kvp in spec.Markers)
            {
                var point  = kvp.Key;
                var marker = kvp.Value;

                var cloneMarker = new MinimapMarker
                {
                    IsVisible            = marker.IsVisible,
                    EraColor             = marker.EraColor,
                    MarkerColor          = marker.MarkerColor,
                    Location             = marker.Location,
                    DrawLocationPosition = marker.DrawLocationPosition
                };

                clone.Markers.Add(point, cloneMarker);
            }

            foreach (var revealGroup in spec.RevealGroups)
            {
                var cloneRevealGroup = new MinimapRevealGroup
                {
                    ID = revealGroup.ID
                };

                var cloneRoomList = (List <int>)cloneRevealGroup.AsDynamic()._rooms;
                foreach (var room in revealGroup.Rooms)
                {
                    cloneRoomList.Add(room);
                }

                clone.RevealGroups.Add(cloneRevealGroup);
            }

            clone.PopulateAllBlocks();

            return(clone);
        }
Example #4
0
 static void MarkBlockAsBossOrTimespinner(MinimapBlock block)
 {
     block.RoomColor = EMinimapRoomColor.DotRed;
     block.IsVisited = true;
 }