/// <summary> /// Overenie okolia zoskupenia, rozhoduje иi pridaЭ stanicu uЮ ku existujъcemu zoskupenium /// alebo иi vytvori novй. /// </summary> /// <param name="paStavana">stavanб stanica</param> /// <param name="paRozmerRiadkov">rozmer</param> /// <param name="paRozmerStlpcov">rozmer</param> /// <returns>vэsledok</returns> private bool OverOkolieStaniceZoskupenia(Stanica paStavana, int paRozmerRiadkov, int paRozmerStlpcov) { int zacRiad = aPoloha.Riadok - 1; int zacStlp = aPoloha.Stlpec - 1; int konRiad = aPoloha.Riadok + paRozmerRiadkov; int konStlp = aPoloha.Stlpec + paRozmerStlpcov; Hra hra = Hra.DajInstanciu(); Policko[,] matica = hra.DajHernuPlochu().DajMaticu(); ZoskupenieStanic zosk = null; int pocetNajdenachZosk = 0; for (int riadok = zacRiad; riadok <= konRiad; riadok++) { for (int stlpec = zacStlp; stlpec <= konStlp; stlpec++) { Policko aktualne = matica[riadok, stlpec]; if(aktualne.Zastavane is Stanica) { if (zosk == null || !zosk.Equals((aktualne.Zastavane as Stanica).Zoskupenie)) { zosk = (aktualne.Zastavane as Stanica).Zoskupenie; pocetNajdenachZosk++; } } } } if (pocetNajdenachZosk == 0) { zosk = new ZoskupenieStanic(); paStavana.Zoskupenie = zosk; zosk.PridajStanicu(paStavana); hra.Spolocnost.PridajStanicu(zosk); OverOkolieStaniceVyroba(paStavana, paRozmerRiadkov, paRozmerStlpcov); return true; } else if (pocetNajdenachZosk == 1) { paStavana.Zoskupenie = zosk; zosk.PridajStanicu(paStavana); hra.Spolocnost.PridajStanicu(zosk); OverOkolieStaniceVyroba(paStavana, paRozmerRiadkov, paRozmerStlpcov); return true; } return false; }
/// <summary> /// Inicializ�cia v�roby. Pre ka�d� druh, je vykonan� nie�o in� /// </summary> /// <param name="paDruh"></param> /// <param name="paPoloha"></param> public Vyroba(DruhVyroby paDruh, Poloha paPoloha) { aDok = null; aPrilahlaStanica = null; Poloha = paPoloha; OdsadenieZLava = Poloha.Stlpec * Policko.cVelkostPolicka; OdsadenieZHora = Poloha.Riadok * Policko.cVelkostPolicka; aPrijma = new List<TypPrepravJednotky>(); aProdukuje = new Dictionary<TypPrepravJednotky, int>(); aDruhVyroby = paDruh; switch (paDruh) { case DruhVyroby.Elektraren: NastavObrazok(Resources.el, "el"); aPrijma.Add(TypPrepravJednotky.uhlie); break; case DruhVyroby.Farma: NastavObrazok(Resources.farm, "farm"); aProdukuje.Add(TypPrepravJednotky.dobytok, cStrProd); aProdukuje.Add(TypPrepravJednotky.obilie, cStrProd); break; case DruhVyroby.Les: NastavObrazok(Resources.forest, "forest"); aProdukuje.Add(TypPrepravJednotky.drevo, cStrProd); break; case DruhVyroby.Oceliaren: NastavObrazok(Resources.oceliaren, "oceliaren"); aPrijma.Add(TypPrepravJednotky.zeleznaRuda); aProdukuje.Add(TypPrepravJednotky.ocel, 0); break; case DruhVyroby.Pila: NastavObrazok(Resources.sawmill, "sawmill"); aPrijma.Add(TypPrepravJednotky.drevo); aProdukuje.Add(TypPrepravJednotky.tovar, 0); break; case DruhVyroby.RopnaRafineria: NastavObrazok(Resources.rafineria, "rafineria"); aPrijma.Add(TypPrepravJednotky.ropa); aProdukuje.Add(TypPrepravJednotky.tovar, 0); break; case DruhVyroby.Tovaren: NastavObrazok(Resources.farctory, "farctory"); aPrijma.Add(TypPrepravJednotky.ocel); aPrijma.Add(TypPrepravJednotky.dobytok); aPrijma.Add(TypPrepravJednotky.obilie); aProdukuje.Add(TypPrepravJednotky.tovar, 0); break; case DruhVyroby.UholnaBana: NastavObrazok(Resources.mineCoalM, "mineCoalM"); aProdukuje.Add(TypPrepravJednotky.uhlie, cStrProd); break; case DruhVyroby.ZelezorudnaBana: NastavObrazok(Resources.mineRudaM, "mineRudaM"); aProdukuje.Add(TypPrepravJednotky.zeleznaRuda, cStrProd); break; case DruhVyroby.RopnaPlosina: NastavObrazok(Resources.oilPlat, "oilPlat"); aProdukuje.Add(TypPrepravJednotky.ropa, cStrProd); aDok = new Dok(Poloha); Zoskupenie = new ZoskupenieStanic(); Zoskupenie.PridajStanicu(aDok); Zoskupenie.PridajVyrobu(this); aDok.Zoskupenie = Zoskupenie; break; case DruhVyroby.Mesto: NastavObrazok(Resources.city, "city"); aPrijma.Add(TypPrepravJednotky.tovar); aPrijma.Add(TypPrepravJednotky.cestujuci); aPrijma.Add(TypPrepravJednotky.posta); aProdukuje.Add(TypPrepravJednotky.cestujuci, 0); aProdukuje.Add(TypPrepravJednotky.posta, 0); break; } this.ZmenProdukciu(); }