tron-terror-game/src/Game/GameLogic.java

200 lines
3.9 KiB
Java

package Game;
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JOptionPane;
public class GameLogic {
private Player player1, player2;
private int width, height;
private Color colorP1, colorP2;
private Bullet bullet1, bullet2;
// **** Invisibility *****
private boolean inVisibilityHappend;
private Invisibility invisibleMod;
public GameLogic(int maxWidth, int maxHeight)
{
width = maxWidth;
height = maxHeight;
colorP1 = new Color(3,3,173);
colorP2 = new Color(173, 3, 3 );
inVisibilityHappend = false;
invisibleMod = new Invisibility(maxWidth, maxHeight);
player1 = new Player(getNewName("Please enter Player 1 Name"), Player.LEFT, colorP1, width - 300, 420, 0); //starts from right to left!
player2 = new Player(getNewName("Now, Please enter Player 2 Name"), Player.RIGHT, colorP2, 0 + 300, 420, 0); //starts from left to right!
}
private String getNewName(String s){
return JOptionPane.showInputDialog(s);
}
public void setP1Direction(int direct)
{
player1.setDirection(direct);
}
public void setP2Direction(int direct)
{
player2.setDirection(direct);
}
public String getP1Name()
{
return player1.getName();
}
public String getP2Name()
{
return player2.getName();
}
public int getPlayer1Point()
{
return player1.getPoints();
}
public int getPlayer2Point()
{
return player2.getPoints();
}
public Player getP1(){
return player1;
}
public Player getP2(){
return player2;
}
public Bullet getBullet1() {
return bullet1;
}
public Bullet getBullet2() {
return bullet2;
}
public boolean stepAndOk()
{
player1.step();
player2.step();
inVisibilityHappend = invisibleMod.makePoint(player1, player2);
if(inVisibilityHappend)
{
checkPlayersVisibility();
}
if(player1.loosed(player2, width, height))
{
player2.addPoints();
return false;
}
else if(player2.loosed(player1, width, height))
{
player1.addPoints();
return false;
}
return true;
}
public void fire(Player p)
{
if(!p.isCanFire())
return;
if(p == player1)
{
bullet1 = new Bullet(player1.getHead().getX(), player1.getHead().getY(), player1.getDirection(), player2.getHead());
return;
}
else if(p == player2)
{
bullet2 = new Bullet(player2.getHead().getX(), player2.getHead().getY(), player2.getDirection(), player1.getHead());
return;
}
}
public void bulletStep(Graphics g, int bulletState)
{
//Player1 Shoots
try{ //Freezes game and shoots
if(bulletState == Bullet.STILL_GO)
bullet1.draw(g);
else
player1.setCanFire(false);
}catch (Exception e) {
System.out.println("no bullet to p1");
}
//Player2 shoots
try{ //Freezes game and shoots
bulletState = bullet2.fireStep(width, height);
if(bulletState == Bullet.STILL_GO)
bullet2.draw(g);
else
player2.setCanFire(false);
}catch (Exception e) {
System.out.println("no bullet to p2");
}
}
public void restart()
{
player1 = new Player(player1.getName(), Player.LEFT, colorP1,width - 300, 420, player1.getPoints());
player2 = new Player(player2.getName(), Player.RIGHT, colorP2, 0 + 300, 420, player2.getPoints());
inVisibilityHappend = false;
invisibleMod = new Invisibility(width, height);
}
public void checkPlayersVisibility()
{
int x = invisibleMod.getX();
int y = invisibleMod.getY();
if(player1.getHead().getX() == x && player1.getHead().getY() == y)
invisibleModOn(player1, true);
else if(player2.getHead().getX() == x && player2.getHead().getY() == y)
invisibleModOn(player2, true);
}
public void invisibleModOn(Player p, boolean switcher)
{
if(switcher)
{
System.out.println("got The Shit!!!");
p.setIsVisible(false);
invisibleMod.setX(-200);
invisibleMod.setY(-200);
}
else
p.setIsVisible(true);
}
public void draw(Graphics g)
{
player1.draw(g);
player2.draw(g);
if(inVisibilityHappend)
invisibleMod.draw(g);
}
}