private void ObsluzKolizje(bool kolidujacaJestDluzsza, IRzeka kolizyjnaRzeka, IPunkt punktKolizji) { if (kolidujacaJestDluzsza) { PogrubRzekeOdPunktu(kolizyjnaRzeka, punktKolizji, _aktualnaGrubosc); } else { float gruboscDoDodania = kolizyjnaRzeka.Odcinki.First(o => o.PunktA == punktKolizji).Grubosc; _aktualnaGrubosc += gruboscDoDodania; IList<IOdcinekRzeki> wycinek = WytnijCzescRzekiOdPunktu(kolizyjnaRzeka, punktKolizji); _odcinki = _odcinki.Concat(wycinek).ToList(); } }
private static bool PunktNalezyDoRoguBedacegoBrzegiemLubMorzemLubDoKomorkiMorskiej(IMapa mapa, IPunkt s) { return mapa.Rogi.Any(r => r.Punkt == s && ((r.Dane.Brzeznosc == BrzeznoscRogu.Brzeg) || (r.Dane.Brzeznosc == BrzeznoscRogu.OtwarteMorze))) || mapa.Komorki.Any(k=>k.Punkt == s && k.Dane.Typ == TypKomorki.Morze); }
public int DlugoscDoPunktu(IPunkt prog) { return Odcinki.IndexOf(Odcinki.First(o => o.PunktA == prog)); }
private void PogrubRzekeOdPunktu(IRzeka rzeka, IPunkt punkt, float aktualnaGrubosc) { int indeksPunktu = rzeka.DlugoscDoPunktu(punkt); foreach (var odcinekRzeki in rzeka.Odcinki.Skip(indeksPunktu)) { odcinekRzeki.Grubosc += aktualnaGrubosc; } }
private static bool KoncoweMiejsceJestNaBrzegu(IMapa mapa, IPunkt aktualnyPunkt) { return mapa.Rogi.Any(r => r.Punkt == aktualnyPunkt && r.Dane.Brzeznosc == BrzeznoscRogu.Brzeg); }
public GeneratorRzeki(IPunkt punktPoczatkowy) { PunktPoczatkowy = punktPoczatkowy; }
private IList<IOdcinekRzeki> WytnijCzescRzekiOdPunktu(IRzeka rzeka, IPunkt punkt) { int indeks = rzeka.DlugoscDoPunktu(punkt); var wycinek = rzeka.Odcinki.Skip(indeks).ToList(); rzeka.Odcinki = rzeka.Odcinki.Take(indeks).ToList(); return wycinek; }