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);
 }
Exemplo n.º 3
0
 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;
 }