Exemple #1
0
        private static void seeTilesQuad(Seeable[,] world, Vector2 location, Vector2 angles, float distance, int quad, RoundingMode rmode, params object[] parameters)
        {
            Queue <SightCol> queue = new Queue <SightCol>();
            int tilesize           = world[0, 0].getBounds().Width;

            int curDist = 0;

            enqueNext(world, location, tilesize, queue, curDist, angles, quad, rmode);

            while (queue.Count != 0) //Process Row
            {
                curDist++;
                SightCol s = queue.Dequeue();

                Vector2 newAngles = new Vector2(0, 0);
                bool    curblock  = false;
                bool    topused   = false;

                bool firstblock = true;

                while (!s.isDone())
                {
                    Seeable seb = s.getNextSeeable();
                    if (LocationManager.distanceCheck(location, new Vector2(seb.getBounds().X, seb.getBounds().Y), distance))
                    {
                        seb.see(parameters);
                        if (firstblock)
                        {
                            firstblock  = false;
                            topused     = true;
                            newAngles.X = angles.X;
                        }

                        if (seb.isTransparent() && curblock)
                        {
                            topused     = true;
                            curblock    = false;
                            newAngles.X = getAngleToNessecaryCorner(location, seb.getBounds(), quad, true);
                        }
                        else if (!seb.isTransparent())
                        {
                            if (topused && !curblock)
                            {
                                newAngles.Y = getAngleToNessecaryCorner(location, seb.getBounds(), quad, false);
                                enqueNext(world, location, tilesize, queue, s.cDist + 1, newAngles, quad, rmode);
                            }
                            else if (!curblock)
                            {
                                curblock = true;
                            }
                        }
                    }
                }
                if (curblock)
                {
                    newAngles.Y = s.angles.Y;
                    enqueNext(world, location, tilesize, queue, s.cDist + 1, newAngles, quad, rmode);
                }
            }
        }
    // Start is called before the first frame update
    void Start()
    {
        List <string> deck2 = Local2PHandlerScr.GenerateDeck();

        gameHandler2 = FindObjectOfType <Local2PHandlerScr>();

        int i = 0;

        foreach (string card in deck2)
        {
            if (this.name == card)
            {
                cardFace = gameHandler2.cardFaces[i];
                break;
            }
            i++;
        }

        spriteRenderer = GetComponent <SpriteRenderer>();
        seeable        = GetComponent <Seeable>();
    }