package Global_Package;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.MouseInfo;
import java.awt.Rectangle;
import java.awt.TexturePaint;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseWheelEvent;
import java.awt.event.MouseWheelListener;
import java.awt.geom.AffineTransform;
import java.awt.geom.NoninvertibleTransformException;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import java.io.IOException;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.Timer;
import serverMessages.ScrollDemo;
import Client.ClientGameState;
import Client.RenderTest;
public class TestClient3 extends JFrame implements KeyListener,MouseListener {
/**
*
*/
private static RenderTest render;
private static final long serialVersionUID = 5913793104316103999L;
private static ClientGameState game;
private AffineTransform view = new AffineTransform();
public TestClient3() {
super("Test Client");
setUndecorated(true);
setContentPane(new GamePanel(Toolkit.getDefaultToolkit().getScreenSize()));
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
pack();
this.addKeyListener(TestClient3.this);
setLocationRelativeTo(null);
}
public class GamePanel extends JPanel implements MouseWheelListener {
/**
*
*/
private static final long serialVersionUID = -7476778187348802451L;
private static final double SHIFT_PER_TICK = 25;
private static final double BUFFER_ZONE = 30;
private static final double ZOOM_PER_SCROLL = .05;
GamePanel(Dimension size) {
super();
setSize(size);
setMaximumSize(size);
setPreferredSize(size);
setBackground(Color.BLACK);
this.addMouseListener(TestClient3.this);
addMouseWheelListener(this);
setVisible(true);
tick.start();
}
private Timer tick = new Timer(10, new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (!isActive() || !isVisible()) {
return;
}
// Rectangle2D viewBounds = view.createTransformedShape(
// getBounds()).getBounds2D();
AffineTransform screenLocTranslate = new AffineTransform();
screenLocTranslate.translate(getLocationOnScreen().getX(),
getLocationOnScreen().getY());
Rectangle2D boundsOnScreen = screenLocTranslate
.createTransformedShape(getBounds()).getBounds2D();
Point2D mouseLocOnScreen = MouseInfo.getPointerInfo()
.getLocation();
if (mouseLocOnScreen.getX() <= boundsOnScreen.getMinX()
+ BUFFER_ZONE) {
// System.out.println("Troll to da left");
view.translate(SHIFT_PER_TICK, 0);
repaint();
}
if (mouseLocOnScreen.getX() >= boundsOnScreen.getMaxX()
- BUFFER_ZONE) {
// System.out.println("Troll to da right");
view.translate(-SHIFT_PER_TICK, 0);
repaint();
}
if (mouseLocOnScreen.getY() <= boundsOnScreen.getMinY()
+ BUFFER_ZONE) {
// System.out.println("Troll to da up");
view.translate(0, SHIFT_PER_TICK);
repaint();
}
if (mouseLocOnScreen.getY() >= boundsOnScreen.getMaxY()
- BUFFER_ZONE) {
// System.out.println("Troll to da down");
view.translate(0, -SHIFT_PER_TICK);
repaint();
}
repaint();
// System.out.println("I'm a troll with location "+mouseLocOnScreen+" and my mom is at "+boundsOnScreen);
// System.out.println("pain is "+view);
}
});
public void paint(Graphics g) {
super.paint(g);
Graphics2D g2d = (Graphics2D) g;
g2d.transform(view);
// System.out.println("cupcake is "+view);
render.paint(g2d,game);
}
public void mouseWheelMoved(MouseWheelEvent arg0) {
double scale = 1 - arg0.getWheelRotation() * ZOOM_PER_SCROLL;
view.translate(getWidth()/2D, getHeight()/2D);
view.scale(scale, scale);
view.translate(-getWidth()/2D, -getHeight()/2D);
repaint();
// System.out.println(view);
}
}
@SuppressWarnings("static-access")
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
if(e.getKeyCode()==e.VK_ESCAPE){
TestClient3.this.setVisible(false);
System.exit(0);
}else{
for(Entity en : Enums.effectiveMap.values()){
en.keyDown(e, game);
}
}
}
public void keyReleased(KeyEvent e) {}
public void keyTyped(KeyEvent e) {}
public void mouseClicked(MouseEvent e) {
}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mousePressed(MouseEvent e) {
Point2D locationOnMap=null;
try {
locationOnMap=view.inverseTransform(e.getPoint(), null);
} catch (NoninvertibleTransformException e1) {
System.out.println("WHO MADE THE VIEW NOTHING?????");
}
for(Entity en : Enums.effectiveMap.values()){
en.mouseDown(locationOnMap, game);
}
}
public void mouseReleased(MouseEvent e) {}
public static void main(String args[]) throws IOException,InterruptedException {
//key's and mouse are released to gameState
render=new RenderTest();
game = new ClientGameState("127.0.0.1", null, null);
game.start();
//render, renders texture's and other such things
TestClient3 t=new TestClient3();
// while(true){
// t.repaint();
// Thread.sleep(60);
//
// }
}
}