public void Set(int x, int y, SimpleTriforce Tri) { if (x >= 0 && y >= 0 && x < Width && y < Height) { Triforces[y * Width + x] = Tri; } return; }
//=============================================================== 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); }
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); } } } } } }
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); }
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); }