static List <Rebatedor> CriarRebatedoresGrade(int pos, bool f, int dif) { List <Rebatedor> rebs = new List <Rebatedor>(); float chanceDestrutivel = 1 - ((dif - 1f) / Dados.jogoRapidoDificuldadeMaxima); //bool destru = Random.value <= chanceDestrutivel; Rebatedores.Tipo tipo = PegarTipo(f); int m = ModPos(tipo); int qMaxPorDif = dif / 2; int q = QuantidadeMaxima(tipo); q = q <= qMaxPorDif ? q : qMaxPorDif; q = q > 1 ? q : 1; List <int> posicoes = new List <int>(); for (int i = 0; i < m; i++) { posicoes.Add(i); } for (int i = 0; i < q; i++) { Rebatedor reb = new Rebatedor(); reb.destrutivel = Random.value <= chanceDestrutivel; reb.posicaoGrade = pos; reb.tipo = tipo; reb.posicaoLocal = AleatorioLista <int>(posicoes); rebs.Add(reb); } return(rebs); }
static List <Rebatedor> PegarRebatedores( List <Rebatedor> rebs, string s) { string[] lin = s.Split(';'); string[] quad = lin[0].Split(':'); int quadrante = 0; switch (quad[1]) { case "tl": quadrante = 0; break; case "tm": quadrante = 1; break; case "tr": quadrante = 2; break; case "ml": quadrante = 3; break; case "mm": quadrante = 4; break; case "mr": quadrante = 5; break; case "bl": quadrante = 6; break; case "bm": quadrante = 7; break; case "br": quadrante = 8; break; default: quadrante = int.Parse(quad[1]); break; } for (int i = 1; i < lin.Length; i++) { string [] com = lin[i].Split(':'); string [] pos; string tipoRebate = com[0]; bool destrutivel = false; if (com[0].StartsWith("d")) { destrutivel = true; tipoRebate = com[0].Substring(1); } switch (tipoRebate) { case "s": pos = com[1].Split(','); for (int j = 0; j < pos.Length; j++) { int plocal = int.Parse(pos[j]); Rebatedor reb = new Rebatedor(); reb.posicaoGrade = quadrante; reb.posicaoLocal = plocal; reb.tipo = Rebatedores.Tipo.Fixo; reb.destrutivel = destrutivel; rebs.Add(reb); } break; case "vu": pos = com[1].Split(','); for (int j = 0; j < pos.Length; j++) { int plocal = int.Parse(pos[j]); Rebatedor reb = new Rebatedor(); reb.posicaoGrade = quadrante; reb.posicaoLocal = plocal; reb.tipo = Rebatedores.Tipo.VerticalBaixoCima; reb.destrutivel = destrutivel; rebs.Add(reb); } break; case "vd": pos = com[1].Split(','); for (int j = 0; j < pos.Length; j++) { int plocal = int.Parse(pos[j]); Rebatedor reb = new Rebatedor(); reb.posicaoGrade = quadrante; reb.posicaoLocal = plocal; reb.tipo = Rebatedores.Tipo.VerticalCimaBaixo; reb.destrutivel = destrutivel; rebs.Add(reb); } break; case "hr": pos = com[1].Split(','); for (int j = 0; j < pos.Length; j++) { int plocal = int.Parse(pos[j]); Rebatedor reb = new Rebatedor(); reb.posicaoGrade = quadrante; reb.posicaoLocal = plocal; reb.tipo = Rebatedores.Tipo.HorizontalEsqDir; reb.destrutivel = destrutivel; rebs.Add(reb); } break; case "hl": pos = com[1].Split(','); for (int j = 0; j < pos.Length; j++) { int plocal = int.Parse(pos[j]); Rebatedor reb = new Rebatedor(); reb.posicaoGrade = quadrante; reb.posicaoLocal = plocal; reb.tipo = Rebatedores.Tipo.HorizontalDirEsq; reb.destrutivel = destrutivel; rebs.Add(reb); } break; case "dr": pos = com[1].Split(','); for (int j = 0; j < pos.Length; j++) { int plocal = int.Parse(pos[j]); Rebatedor reb = new Rebatedor(); reb.posicaoGrade = quadrante; reb.posicaoLocal = plocal; reb.tipo = Rebatedores.Tipo.DiagonalEsqDir; reb.destrutivel = destrutivel; rebs.Add(reb); } break; case "dl": pos = com[1].Split(','); for (int j = 0; j < pos.Length; j++) { int plocal = int.Parse(pos[j]); Rebatedor reb = new Rebatedor(); reb.posicaoGrade = quadrante; reb.posicaoLocal = plocal; reb.tipo = Rebatedores.Tipo.DiagonalDirEsq; reb.destrutivel = destrutivel; rebs.Add(reb); } break; case "c": pos = com[1].Split(','); for (int j = 0; j < pos.Length; j++) { int plocal = int.Parse(pos[j]); Rebatedor reb = new Rebatedor(); reb.posicaoGrade = quadrante; reb.posicaoLocal = plocal; reb.tipo = Rebatedores.Tipo.Circular; reb.destrutivel = destrutivel; rebs.Add(reb); } break; case "zig": if (com[1] == "0") { Rebatedor reb = new Rebatedor(); reb.posicaoGrade = quadrante; reb.posicaoLocal = 0; reb.tipo = Rebatedores.Tipo.Circular; reb.destrutivel = destrutivel; rebs.Add(reb); reb = new Rebatedor(); reb.posicaoGrade = quadrante; reb.posicaoLocal = 2; reb.tipo = Rebatedores.Tipo.Circular; reb.destrutivel = destrutivel; rebs.Add(reb); reb = new Rebatedor(); reb.posicaoGrade = quadrante; reb.posicaoLocal = 4; reb.tipo = Rebatedores.Tipo.Circular; reb.destrutivel = destrutivel; rebs.Add(reb); } else { Rebatedor reb = new Rebatedor(); reb.posicaoGrade = quadrante; reb.posicaoLocal = 1; reb.tipo = Rebatedores.Tipo.Circular; reb.destrutivel = destrutivel; rebs.Add(reb); reb = new Rebatedor(); reb.posicaoGrade = quadrante; reb.posicaoLocal = 3; reb.tipo = Rebatedores.Tipo.Circular; reb.destrutivel = destrutivel; rebs.Add(reb); reb = new Rebatedor(); reb.posicaoGrade = quadrante; reb.posicaoLocal = 5; reb.tipo = Rebatedores.Tipo.Circular; reb.destrutivel = destrutivel; rebs.Add(reb); } break; case "diag": if (com[1] == "0") { Rebatedor reb = new Rebatedor(); reb.posicaoGrade = quadrante; reb.posicaoLocal = 0; reb.tipo = Rebatedores.Tipo.Circular; reb.destrutivel = destrutivel; rebs.Add(reb); reb = new Rebatedor(); reb.posicaoGrade = quadrante; reb.posicaoLocal = 5; reb.tipo = Rebatedores.Tipo.Circular; reb.destrutivel = destrutivel; rebs.Add(reb); } else { Rebatedor reb = new Rebatedor(); reb.posicaoGrade = quadrante; reb.posicaoLocal = 2; reb.tipo = Rebatedores.Tipo.Circular; reb.destrutivel = destrutivel; rebs.Add(reb); reb = new Rebatedor(); reb.posicaoGrade = quadrante; reb.posicaoLocal = 3; reb.tipo = Rebatedores.Tipo.Circular; reb.destrutivel = destrutivel; rebs.Add(reb); } break; } } return(rebs); }
public void AdicionarRebatedor(Rebatedor r) { AdicionarRebatedor( r.tipo, r.posicaoGrade, r.posicaoLocal, r.destrutivel); }