public void Turn() { ESCCondition discoverCondition; discoverCondition = new ESCCondition(maze, ESCCondition.ConditionType.Discover); dice.Throw(); roomAction = new List <ActionType>() { ActionType.None }; if (currentRoom.InnerCondition != null) { roomAction.Add(currentRoom.InnerCondition.JudgeActions(dice.GetRealDice())); } foreach (ESCRoom.RoomDirection dir in currentRoom.Siblings.Keys) { ActionType discoverConditionAction = discoverCondition.JudgeActions(dice.GetRealDice()); if (currentRoom.Siblings[dir] == null) { if (discoverConditionAction != ActionType.None) { AddAction(dir, discoverConditionAction); } } else { AddAction(dir, currentRoom.Siblings[dir].EnterCondition.JudgeActions(dice.GetRealDice())); } } }
public ESCRoom(ESCMaze m, RoomType roomType) { maze = m; type = roomType; EnterCondition = new ESCCondition(maze, ESCCondition.ConditionType.Enter); SiblingsAlive = 0; Siblings = new Dictionary <RoomDirection, ESCRoom>(); switch (roomType) { case RoomType.Entrance: Siblings = new Dictionary <RoomDirection, ESCRoom>() { { RoomDirection.Left, null }, { RoomDirection.Right, null } }; InnerCondition = null; break; case RoomType.Normal: InnerCondition = null; break; case RoomType.MinorLock: InnerCondition = new ESCCondition(maze, ESCCondition.ConditionType.MinorLock); break; case RoomType.BigLock: InnerCondition = new ESCCondition(maze, ESCCondition.ConditionType.BigLock); break; case RoomType.Exit: InnerCondition = new ESCCondition(maze, ESCCondition.ConditionType.Exit); break; } }