Beispiel #1
0
    private List <GameStateReaderHerse> buildHerses()
    {
        List <GameStateReaderHerse> herses = new List <GameStateReaderHerse>();

        foreach (var cells in map)
        {
            foreach (var cell in cells)
            {
                int x = board.ConvertX(cell.x);
                int y = board.ConvertY(cell.y);
                for (int bgaDir = 0; bgaDir < 4; ++bgaDir)
                {
                    int dir = board.ConverHerseDirection(bgaDir);
                    GameStateReaderHerse herse = null;
                    switch (cell.walls[bgaDir])
                    {
                    case "portcullis_closed":
                        herse = new GameStateReaderHerse(x, y, dir, false, false);
                        break;

                    case "portcullis_open":
                        herse = new GameStateReaderHerse(x, y, dir, false, true);
                        break;

                    case "portcullis_broken":
                        herse = new GameStateReaderHerse(x, y, dir, true, false);
                        break;
                    }
                    if (herse != null)
                    {
                        bool alreadyRegistered = false;
                        foreach (var h in herses)
                        {
                            if (h.IsOpposite(herse))
                            {
                                Debug.Assert(h.SameState(herse));
                                alreadyRegistered = true;
                                break;
                            }
                        }
                        if (!alreadyRegistered)
                        {
                            string message = string.Format("READER: create herse ({0},{1})-{2} -> ({3},{4})/({5},{6}) in state {7}",
                                                           x, y, dir, herse.x1, herse.y1, herse.x2, herse.y2, herse.broken ? "broken" : (herse.open ? "open" : "close"));
                            Multi.Logger.Instance.Log("LOG", message);
                            herses.Add(herse);
                        }
                    }
                }
            }
        }
        return(herses);
    }
Beispiel #2
0
 public bool SameState(GameStateReaderHerse herse)
 {
     return((broken == herse.broken) && (open == herse.open));
 }
Beispiel #3
0
 public bool IsOpposite(GameStateReaderHerse herse)
 {
     return((x1 == herse.x2) && (y1 == herse.y2) && (x2 == herse.x1) && (y2 == herse.y1));
 }