public static Sprava[] getSpraveIPauze(int pauzeMask, Gimnastika gim) { List <Sprava> result = new List <Sprava>(); int spravaIndex = 1; int pauzaIndex = 1; int maxPauzaIndex = 12; // 6 sprava + 6 pauza if (gim == Gimnastika.ZSG) { maxPauzaIndex = 10; } for (int i = 1; i <= maxPauzaIndex; ++i) { if (RasporedNastupa.isPauzaSet(pauzeMask, i)) { result.Add((Sprava)((int)Sprava.PraznaSprava1 + pauzaIndex - 1)); ++pauzaIndex; } else { if ((gim == Gimnastika.MSG && spravaIndex <= 6) || (gim == Gimnastika.ZSG && spravaIndex <= 4)) { result.Add(Sprave.getSprava(spravaIndex, gim)); ++spravaIndex; } } } return(result.ToArray()); }
public virtual void initPoredakSpravaFinaleKupa(Gimnastika gimnastika) { foreach (Sprava s in Sprave.getSprave(gimnastika)) { PoredakSpravaFinaleKupa poredak = new PoredakSpravaFinaleKupa(); poredak.Sprava = s; _poredakSpravaFinaleKupa.Add(poredak); } }
public Takmicenje3(Gimnastika gimnastika) { foreach (Sprava s in Sprave.getSprave(gimnastika)) { if (s != Sprava.Preskok) { _poredak.Add(new PoredakSprava(DeoTakmicenjaKod.Takmicenje3, s)); } } _poredakPreskok = new PoredakPreskok(DeoTakmicenjaKod.Takmicenje3); }
// NOTE: Nisu implementirani Equals i GetHashCode (iako se PoredakSpravaFinaleKupa cuva u setovima) zato sto je // podrazumevani Equals dovoljan. public virtual void dumpRezultati(StreamWriter streamWriter) { string header = Sprave.toString(Sprava).ToUpper() + " - FINALE"; streamWriter.WriteLine(header); foreach (RezultatSpravaFinaleKupa r in getRezultati()) { string line = r.Rank + ". " + r.Gimnasticar.ImeSrednjeImePrezimeDatumRodjenja + " " + r.Total; streamWriter.WriteLine(line); } }
public virtual void addNewGrupa(Gimnastika gimnastika) { Sprava[] sprave = Sprave.getSpraveIPauze(PauzeMask, gimnastika); if (canAddNewGrupa()) { int brojRotacija = sprave.Length; int grupa = getBrojGrupa() + 1; for (int i = 1; i <= brojRotacija; i++) { foreach (Sprava s in sprave) { StartListe.Add(new StartListaNaSpravi(s, (byte)grupa, (byte)i, NacinRotacije.NeRotirajNista)); } } } }
public RasporedSudija(IList <TakmicarskaKategorija> kategorije, DeoTakmicenjaKod deoTakKod, Gimnastika gimnastika) { if (kategorije.Count == 0) { throw new ArgumentException("Kategorije ne smeju da budu prazne."); } this.Naziv = RasporedNastupa.kreirajNaziv(kategorije); this.deoTakKod = deoTakKod; this.takmicenje = kategorije[0].Takmicenje; Sprava[] sprave = Sprave.getSprave(gimnastika); foreach (Sprava s in sprave) { odbori.Add(new SudijskiOdborNaSpravi(s)); } }
private RezultatEkipno createRezultatEkipno(Ekipa e, List <RezultatUkupno> rezultatiUkupno, int brojRezultata, Gimnastika gimnastika) { RezultatEkipno result = new RezultatEkipno(); result.Ekipa = e; foreach (Sprava s in Sprave.getSprave(gimnastika)) { if (!e.getSpravaSeBoduje(s)) { continue; } PropertyDescriptor[] propDesc = new PropertyDescriptor[] { TypeDescriptor.GetProperties(typeof(RezultatEkipno))[s.ToString()] }; ListSortDirection[] sortDir = new ListSortDirection[] { ListSortDirection.Descending }; rezultatiUkupno.Sort(new SortComparer <RezultatUkupno>(propDesc, sortDir)); for (int i = 0; i < rezultatiUkupno.Count; i++) { if (i < brojRezultata) { Nullable <float> ocena = rezultatiUkupno[i].getSprava(s); if (ocena != null) { result.addOcena(s, ocena.Value); } } } } if (e.Penalty != null) { result.addPenalty(e.Penalty.Value); } return(result); }
public Takmicenje1(Takmicenje takmicenje) { if (takmicenje.ZbirViseKola) { _poredakUkupnoZbirViseKola = new PoredakUkupnoZbirViseKola(); _poredakEkipnoZbirViseKola = new PoredakEkipnoZbirViseKola(); } else if (takmicenje.FinaleKupa) { _poredakUkupnoFinaleKupa = new PoredakUkupnoFinaleKupa(); _poredakEkipnoFinaleKupa = new PoredakEkipnoFinaleKupa(); } _poredakUkupno = new PoredakUkupno(DeoTakmicenjaKod.Takmicenje1); foreach (Sprava s in Sprave.getSprave(takmicenje.Gimnastika)) { if (s != Sprava.Preskok) { _poredakSprava.Add(new PoredakSprava(DeoTakmicenjaKod.Takmicenje1, s)); } } _poredakPreskok = new PoredakPreskok(DeoTakmicenjaKod.Takmicenje1); _poredakEkipno = new PoredakEkipno(DeoTakmicenjaKod.Takmicenje1); }
public virtual void kreirajRotaciju(int grupa, int rot, List <List <Sprava> > aktivneSprave) { foreach (Sprava s in Sprave.getSpraveIPauze(PauzeMask, Takmicenje.Gimnastika)) { StartListaNaSpravi startLista = getStartLista(s, grupa, rot); startLista.clear(); if (aktivneSprave[rot - 1].IndexOf(s) == -1) { // Sprava nije aktivna u rotaciji. continue; } StartListaNaSpravi startListaPrethRot = getStartListaPrethRot(startLista, aktivneSprave); if (startListaPrethRot.Nastupi.Count == 0) { continue; } if (Sprave.isPraznaSprava(startListaPrethRot.Sprava)) { // Ako je prethodna sprava pauza, samo prebacujem gimnasticare na novu spravu, bez obzira koji je // nacin rotacije. Rotacija je izvrsena kada sam prebacivao sa sprave na pauzu. foreach (NastupNaSpravi n in startListaPrethRot.Nastupi) { startLista.addNastup(new NastupNaSpravi(n.Gimnasticar, n.Ekipa)); } continue; } // Nadji nacin rotacije (u start listi na prvoj rotaciji). StartListaNaSpravi current = startListaPrethRot; while (current.Rotacija != 1) { current = getStartListaPrethRot(current, aktivneSprave); } NacinRotacije nacinRotacije = current.NacinRotacije; if (nacinRotacije == NacinRotacije.RotirajSve || nacinRotacije == NacinRotacije.NeRotirajNista) { foreach (NastupNaSpravi n in startListaPrethRot.Nastupi) { startLista.addNastup(new NastupNaSpravi(n.Gimnasticar, n.Ekipa)); } if (nacinRotacije == NacinRotacije.RotirajSve) { NastupNaSpravi n2 = startLista.Nastupi[0]; startLista.removeNastup(n2); startLista.addNastup(n2); } } else if (nacinRotacije == NacinRotacije.RotirajEkipeRotirajGimnasticare || nacinRotacije == NacinRotacije.NeRotirajEkipeRotirajGimnasticare) { // Najpre pronadji ekipe List <List <NastupNaSpravi> > listaEkipa = new List <List <NastupNaSpravi> >(); int m = 0; while (m < startListaPrethRot.Nastupi.Count) { NastupNaSpravi n = startListaPrethRot.Nastupi[m]; byte ekipaId = n.Ekipa; if (ekipaId == 0) { List <NastupNaSpravi> pojedinac = new List <NastupNaSpravi>(); pojedinac.Add(new NastupNaSpravi(n.Gimnasticar, 0)); listaEkipa.Add(pojedinac); ++m; continue; } List <NastupNaSpravi> novaEkipa = new List <NastupNaSpravi>(); while (n.Ekipa == ekipaId) { novaEkipa.Add(new NastupNaSpravi(n.Gimnasticar, ekipaId)); if (++m < startListaPrethRot.Nastupi.Count) { n = startListaPrethRot.Nastupi[m]; } else { break; } } listaEkipa.Add(novaEkipa); } if (nacinRotacije == NacinRotacije.RotirajEkipeRotirajGimnasticare) { // Rotiraj ekipe List <NastupNaSpravi> prvaEkipa = listaEkipa[0]; listaEkipa.RemoveAt(0); listaEkipa.Add(prvaEkipa); } foreach (List <NastupNaSpravi> ekipa in listaEkipa) { // Rotiraj clanove ekipe NastupNaSpravi nastup = ekipa[0]; ekipa.RemoveAt(0); ekipa.Add(nastup); foreach (NastupNaSpravi n in ekipa) { startLista.addNastup(new NastupNaSpravi(n.Gimnasticar, n.Ekipa)); } } } } }