Exemplo n.º 1
0
 public void Set(int x, int y, SimpleTriforce Tri)
 {
     if (x >= 0 && y >= 0 && x < Width && y < Height)
     {
         Triforces[y * Width + x] = Tri;
     }
     return;
 }
Exemplo n.º 2
0
    //=============================================================== GetXY

    public SimpleTriforce Get(int x, int y)
    {
        SimpleTriforce ret = new SimpleTriforce();

        if (x >= 0 && y >= 0 && x < Width && y < Height)
        {
            ret = Triforces[y * Width + x];
        }
        return(ret);
    }
Exemplo n.º 3
0
    public static void RegenerateCurrentLevel()
    {
        int realX, realY;

        LevelTilesCurrent.Resize(9, 12); //Empty

        foreach (FormController fc in FormsInLevel)
        {
            if (fc.isInFormContainer == true)
            {
                continue;
            }
            if (fc.isDrag == true)
            {
                continue;
            }

            for (int y = 0; y < fc.FormBuild.Height; y++)
            {
                for (int x = 0; x < fc.FormBuild.Width; x++)
                {
                    SimpleTriforce CacheTri = new SimpleTriforce();
                    CacheTri = fc.FormBuild.Get(x, y);
                    realX    = (fc.xpos - (int)LevelX) / 64 + x - 1;
                    realY    = (fc.ypos + (int)LevelY + 235) / 64 * -1 + y - 2;


                    if (CacheTri.Type != SimpleTriforce.TriforceType.EMPTY)
                    {
                        if (LevelTilesCurrent.Get(realX, realY).Type != SimpleTriforce.TriforceType.EMPTY)
                        {
                            LevelTilesCurrent.Set(realX, realY, new SimpleTriforce(SimpleTriforce.TriforceType.FILLED));
                        }
                        else
                        {
                            LevelTilesCurrent.Set(realX, realY, CacheTri);
                        }
                    }
                }
            }
        }
    }
Exemplo n.º 4
0
    public static bool CheckNoCollision(FormController ToCheck)
    {
        bool ret = true;

        //return true;

        for (int y = 0; y < ToCheck.FormBuild.Height; y++)
        {
            for (int x = 0; x < ToCheck.FormBuild.Width; x++)
            {
                int realX = (ToCheck.xpos - (int)LevelM.LevelX) / 64 - 1 + x;
                int realY = (ToCheck.ypos + (int)LevelM.LevelY + 235) / 64 * -1 - 2 + y;


                SimpleTriforce Cache = new SimpleTriforce();
                Cache = ToCheck.FormBuild.Get(x, y);

                if (Cache.Type != SimpleTriforce.TriforceType.EMPTY)
                {
                    if (LevelTilesShouldBe.Get(realX, realY).Type == SimpleTriforce.TriforceType.EMPTY)
                    {
                        return(false);
                    }

                    switch (LevelTilesCurrent.Get(realX, realY).Type)
                    {
                    case SimpleTriforce.TriforceType.FILLED:
                        return(false);

                        break;

                    case SimpleTriforce.TriforceType.BOTLEFT:
                        if (Cache.Type != SimpleTriforce.TriforceType.TOPRIGHT)
                        {
                            return(false);
                        }
                        break;

                    case SimpleTriforce.TriforceType.BOTRIGHT:
                        if (Cache.Type != SimpleTriforce.TriforceType.TOPLEFT)
                        {
                            return(false);
                        }
                        break;

                    case SimpleTriforce.TriforceType.TOPLEFT:
                        if (Cache.Type != SimpleTriforce.TriforceType.BOTRIGHT)
                        {
                            return(false);
                        }
                        break;

                    case SimpleTriforce.TriforceType.TOPRIGHT:
                        if (Cache.Type != SimpleTriforce.TriforceType.BOTLEFT)
                        {
                            return(false);
                        }
                        break;
                    }
                }
            }
        }


        return(ret);
    }
Exemplo n.º 5
0
    public static Sprite GenerateLevelSprite()
    {
        if (CurrentLevel == null)
        {
            return(null);
        }

        Form LevelForm = ScriptableObject.CreateInstance <Form>();

        LevelForm.Width  = 9;
        LevelForm.Height = 12;
        LevelForm.Resize(9, 9);

        minx = 5;
        miny = 5;
        maxx = 0;
        maxy = 0;

        LevelTilesShouldBe.Resize(9, 12);

        List <Form> forms = MISC.LoadForms();

        foreach (LevelData ld in CurrentLevel.Data)
        {
            for (int x = 0; x < forms.Count; x++)
            {
                if (forms[x].Name == ld.FormName)
                {
                    Form Cache = ScriptableObject.CreateInstance <Form>();
                    forms[x].CloneTo(Cache);

                    while (Cache.Rotated != ld.RotationState)
                    {
                        Cache.RotateRight();
                    }

                    for (int fy = 0; fy < Cache.Height; fy++)
                    {
                        for (int fx = 0; fx < Cache.Width; fx++)
                        {
                            SimpleTriforce CacheTri = new SimpleTriforce();
                            CacheTri = Cache.Get(fx, fy);
                            int realX = ld.x / 64 + fx;
                            int realY = ld.y / 64 * -1 + fy;

                            if (CacheTri.Type != SimpleTriforce.TriforceType.EMPTY)
                            {
                                if (LevelForm.Get(realX, realY).Type != SimpleTriforce.TriforceType.EMPTY)
                                {
                                    LevelForm.Set(realX, realY, new SimpleTriforce(SimpleTriforce.TriforceType.FILLED));
                                    LevelTilesShouldBe.Set(realX, realY, new SimpleTriforce(SimpleTriforce.TriforceType.FILLED));
                                }
                                else
                                {
                                    LevelForm.Set(realX, realY, CacheTri);
                                    LevelTilesShouldBe.Set(realX, realY, CacheTri);
                                }


                                if (realX < minx)
                                {
                                    minx = realX;
                                }
                                if (realY < miny)
                                {
                                    miny = realY;
                                }
                                if (realX + 1 > maxx)
                                {
                                    maxx = realX + 1;
                                }
                                if (realY + 1 > maxy)
                                {
                                    maxy = realY + 1;
                                }
                            }
                        }
                    }
                }
            }
        }
        Sprite retSprite = GenerateFormSprite(LevelForm);

        return(retSprite);
    }