Beispiel #1
0
    private void Refresh()
    {
        covered.Clear();
        cells.Clear();

        var fleet = fleets[turn];

        int i = plays.Count * 2;

        var position = camera.ScreenToWorld(Input.mousePosition) / 16;

        position.x = Mathf.Floor(position.x);
        position.y = Mathf.Floor(position.y);

        var test = plays.Concat(new[] { new Play(fleet, shape, position, rotation) });

        bool first = true;

        foreach (Play play in test.Reverse <Play>())
        {
            bool invalid = first && !CanPlay(play);

            i -= 1;

            var uncovered = play.cells.Keys.Where(p => !covered.ContainsKey(p));

            cells.AddRange(Edges(play, i * 2 + 1, covered).Where(c => !covered.ContainsKey(c.position)));
            cells.AddRange(uncovered.Select(p => new Cell
            {
                position = p,
                color    = invalid ? Color.gray : play.fleet.dark,
                sprite   = square,
                depth    = i * 2,
            }));

            foreach (var cell in uncovered)
            {
                covered.Add(cell, play.fleet);
            }

            first = false;
        }

        test_cells.SetActive(cells.Reverse <Cell>(), sort: false);

        foreach (Fleet fleet_ in fleets)
        {
            fleet_.ships = covered.Count(pair => pair.Value == fleet_);
        }

        fleetCounts.SetActive(fleets);
        fleetCounts.MapActive((f, p) => p.Refresh());
    }
Beispiel #2
0
    private void Awake()
    {
        lockButton.onClick.AddListener(OnClickedLock);

        tiles = new MonoBehaviourPooler<byte, TileToggle>(tilePrefab,
                                                          tileContainer,
                                                          InitialiseTile);

        pages = new MonoBehaviourPooler<int, Toggle>(pagePrefab,
                                                     pageContainer,
                                                     InitialisePage);

        pages.SetActive(Enumerable.Range(0, 8));
        pages.Get(0).isOn = true;
    }