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

/* Třída TourSprite skrývá velikost pohybu a rotace při pohybu
   a rotaci spritu.

   Přídavky síové verze:
     * proud typu PrintWriter spojený se serverem, aby mu mohl sprite poslat
       příkazy pro vytvoření, pohyb a rotaci.

       Serverem budou předány ostatním klientům, take sprite
       klienta na těchto počítačích bude aktualizován.

     * extra argumenty v konstruktoru pro nastavení pozice (x,z) spritu
*/

import java.io.*;


public class TourSprite extends Sprite3D
{
  private final static double MOVERATE = 0.3;
  private final static double ROTATE_AMT = Math.PI / 16.0;

  PrintWriter out;    // pro zasílání příkazů serveru


  public TourSprite(String userName, String fnm, Obstacles obs,
							double xPosn, double zPosn, PrintWriter o)
  { super(userName, fnm, obs);
    setPosition(xPosn, zPosn);
    out = o;
    out.println("create " + userName + " " + xPosn + " " + zPosn);
  }  // konec metody: TourSprite()


  // pohyb
  public boolean moveForward()
  { out.println("forward");
    return moveBy(0.0, MOVERATE); 
  }

  public boolean moveBackward()
  { out.println("back");
    return moveBy(0.0, -MOVERATE); 
  }

  public boolean moveLeft()
  { out.println("left");
    return moveBy(-MOVERATE,0.0); 
  }

  public boolean moveRight()
  { out.println("right");
    return moveBy(MOVERATE,0.0); 
  }


  // rotace pouze kolem osy y
  public void rotClock()
  { out.println("rotClock");
    doRotateY(-ROTATE_AMT); // ve směru hodinových ručiček
  }

  public void rotCounterClock()
  { out.println("rotCClock");
    doRotateY(ROTATE_AMT);  // proti směru hodinových ručiček
  }

}  // konec třídy: TourSprite
