
// RibbonsManager.java
// Andrew Davison, April 2005, ad@fivedots.coe.psu.ac.th

/* Třída RibbonsManager má na starosti pásy (obrázky navazující
   samy na sebe používané pro pozadí hry).

   Pásy 'hlouběji' ve scéně se pohybují pomaleji, než ty, které
   jsou jako by blíž, což vytváří efekt paralaxní vzdálenosti.

   Místo horizontálního pohybu spritu (doleva/doprava) se pohybují
   pásy v pozadí, a to v opačném směru (doprava/doleva). Velikost
   pohybu určuje hodnota proměnné moveSize.
*/

import java.awt.*;


public class RibbonsManager
{
  /* Obrázky pásů pozadí a jejich pohybové faktory.
     Pásy 'hlouběji' ve scéně se specifikují v poli ribImages[]
     a mají menší pohybové faktory, takže se pohybují pomaleji.
  */
  private String ribImages[] = {"mountains", "houses", "trees"};
  private double moveFactors[] = {0.1, 0.5, 1.0};  // aplikujeme je na proměnnou moveSize
     // pohybový koeficient s hodnotou 0 pásmo znehybní

  private Ribbon[] ribbons;
  private int numRibbons;
  private int moveSize;
     // standardní vzdálenost, o kterou se má pás při každé aktualizaci posunout


  public RibbonsManager(int w, int h, int brickMvSz, ImagesLoader imsLd)
  {
    moveSize = brickMvSz;
          // základní velikost pohybu je stejná jako pás s cihličkami

    numRibbons = ribImages.length;
    ribbons = new Ribbon[numRibbons];

    for (int i = 0; i < numRibbons; i++)
       ribbons[i] = new Ribbon(w, h, imsLd.getImage( ribImages[i] ),
						(int) (moveFactors[i]*moveSize) );
  }  // konec metody: RibbonsManager()


  public void moveRight()
  { for (int i=0; i < numRibbons; i++)
      ribbons[i].moveRight();
  }

  public void moveLeft()
  { for (int i=0; i < numRibbons; i++)
      ribbons[i].moveLeft();
  }

  public void stayStill()
  { for (int i=0; i < numRibbons; i++)
      ribbons[i].stayStill();
  }


  public void update()
  { for (int i=0; i < numRibbons; i++)
      ribbons[i].update();
  }

  public void display(Graphics g)
  /* The display order is important.
     Display ribbons from the back to the front of the scene. */
  { for (int i=0; i < numRibbons; i++)
      ribbons[i].display(g);
  }

} // konec třídy: RibbonsManager

