private void ApplyMazeAction(MazeActionType action) { foreach (var actionApplier in ActionAppliers) { actionApplier.ApplyAction(GameState, action); } }
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); }