Example #1
0
    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()));
            }
        }
    }
Example #2
0
    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;
        }
    }