Пример #1
0
 private void ApplyMazeAction(MazeActionType action)
 {
     foreach (var actionApplier in ActionAppliers)
     {
         actionApplier.ApplyAction(GameState, action);
     }
 }
Пример #2
0
        public void ApplyAction(GameState state, MazeActionType actionType)
        {
            if (actionType != MazeActionType.Lock)
            {
                return;
            }

            var random = new Random();

            state.Maze.Segments[random.Next(0, state.Maze.Segments.Count)].SegmentSpecial.SegmentEffects.Add(new MazeSegmentEffect
            {
                EffectType = MazeSegmentEffectType.Blocked,
                TurnUntil  = state.Turn + 2 * state.Players.Count(p => !p.IsDead)
            });
        }
        public void ApplyAction(GameState state, MazeActionType actionType)
        {
            if (actionType != MazeActionType.Rebuild)
            {
                return;
            }
            var random      = new Random();
            var segmentId   = random.Next(0, state.Maze.Segments.Count);
            var mazeSegment = state.Maze.Segments[segmentId];

            state.Maze.Segments.Remove(mazeSegment);
            var newSegment = MazeBuilder.BuildSegment(state.Players[segmentId]);

            state.Maze.Segments.Insert(segmentId, newSegment);
            state.SegmentToRebuild = segmentId;
        }
        public void ApplyAction(GameState state, MazeActionType actionType)
        {
            if (actionType != MazeActionType.Teleport)
            {
                return;
            }
            var random             = new Random();
            var locationToTeleport = new LocationInMaze
            {
                SegmentId       = random.Next(0, state.Maze.Segments.Count),
                CoordsInSegment = new Point(random.Next(0, 5), random.Next(0, 5)),
            };
            var heroVictim = state.Heroes[random.Next(0, state.Heroes.Count)];

            heroVictim.Move(locationToTeleport);
        }