Exemplo n.º 1
0
        public static Point GetSource(byte current, int age, int max, int x, int y, int id, bool isDark)
        {
            bool[] cddd = new bool[4];

            if (current == 1)
            {
                if (age < 1)
                {
                    return(new Point(768, 736));
                }
                if (age >= 1)
                {
                    for (var i = 0; i < _neighbors.Length; i++)
                    {
                        var nX = x + _neighbors[i].Item1;
                        var nY = y + _neighbors[i].Item2;

                        if (!GamePlayScreen.InBounds(nX, nY))
                        {
                            cddd[i] = false;
                        }
                        else
                        {
                            if (id == _gamePlayScreen.BoardCells[nY * GamePlayScreen.Width + nX].CurrentID)
                            {
                                cddd[i] = true;
                            }
                            else
                            {
                                cddd[i] = false;
                            }
                        }
                    }

                    var index = 0;

                    for (var i = 0; i < _sides.Length; i++)
                    {
                        if (cddd[0] == _sides[i].Item1 &&
                            cddd[1] == _sides[i].Item2 &&
                            cddd[2] == _sides[i].Item3 &&
                            cddd[3] == _sides[i].Item4)
                        {
                            index = i;
                        }
                    }

                    var pointy = new Point();

                    return(pointy = GetIndexStart(index, age, isDark));
                }
            }
            else
            {
                if (age < (current - 1) * 4)
                {
                    return(new Point(1216, 1696));
                }
                else
                {
                    bool[] tips = new bool[4];

                    for (var i = 0; i < _neighbors.Length; i++)
                    {
                        var nX = x + _neighbors[i].Item1;
                        var nY = y + _neighbors[i].Item2;

                        if (!GamePlayScreen.InBounds(nX, nY))
                        {
                            cddd[i] = false;
                        }
                        else
                        {
                            if (_gamePlayScreen.BoardCells[nY * GamePlayScreen.Width + nX].CurrentID != id)
                            {
                                cddd[i] = false;
                                tips[i] = false;
                            }
                            else
                            {
                                if (current < _gamePlayScreen.BoardCells[nY * GamePlayScreen.Width + nX].CurrentNumber)
                                {
                                    cddd[i] = false;
                                    tips[i] = false;
                                }
                                else
                                {
                                    cddd[i] = true;
                                    tips[i] = true;
                                }

                                if (age >= (current - 1) * 4 + 4)
                                {
                                    cddd[i] = true;
                                }
                            }
                        }
                    }
                    var index   = 0;
                    var plopper = 0;
                    for (var i = 0; i < _sides.Length; i++)
                    {
                        if (cddd[0] == _sides[i].Item1 &&
                            cddd[1] == _sides[i].Item2 &&
                            cddd[2] == _sides[i].Item3 &&
                            cddd[3] == _sides[i].Item4)
                        {
                            index = i;
                        }
                    }

                    for (var i = 0; i < 4; i++)
                    {
                        if (tips[i])
                        {
                            plopper = i;
                        }
                    }

                    var pointy = new Point();

                    return(pointy = GetIndexEnd(index, age, plopper, current, isDark));
                }
            }

            return(Point.Zero);
        }