package Tools.Pixel2D.PixelGenerator;
import java.awt.Color;
import java.awt.event.*;
import javax.swing.*;
import Tools.Pixel2D.*;
import Tools.Menu.*;
public class PixelGenerator extends Importable implements ActionListener {
JFrame frame;
public PixelScreen pframe;
PixelLayer layer;
PixelGrid grid;
PixelObjectFunction functions[];
int fx = 0;
Scheduals s;
Accounts ac;
List worlds;
JButton add;
JButton delete;
JButton join;
JButton edit;
JTextField name;
JLabel nameL;
JLabel fieldSizeX;
JLabel fieldSizeXAmount;
JButton fieldSizeXPlus;
JButton fieldSizeXMinus;
int fSizeX = 10;
JLabel fieldSizeY;
JLabel fieldSizeYAmount;
JButton fieldSizeYPlus;
JButton fieldSizeYMinus;
int fSizeY = 10;
JLabel pixelSize;
JLabel pixelSizeAmount;
JButton pixelSizePlus;
JButton pixelSizeMinus;
int pSize = 1;
JLabel gridSize;
JLabel gridSizeAmount;
JButton gridSizePlus;
JButton gridSizeMinus;
int gSize = 2;
JButton addNewGame;
JButton deleteNewGame;
World ws = new World();
public PixelGenerator(Accounts ac) {
frame = new JFrame();
frame.setBounds(20, 20, 1200, 650);
frame.setLayout(null);
frame.setVisible(false);
this.ac = ac;
s = new Scheduals(ac);
functions = new PixelObjectFunction[100];
spawnGames();
spawnAddNewGame();
}
public void start() {
s.logIn();
while(!s.getIfLogInFinish()) {
}
if(!ac.getIfStringExsists(ac.getPath(), ac.getAccountOfSelectedName())) ac.addLine(ac.getPosOfSelectedPassword()+1, ac.getAccountOfSelectedName(), ac.getPath());
frame.setVisible(true);
gamesUi();
}
public void spawnGames() {
worlds = new List(frame, this, 0, 3, 100, 100, 100, 20, true);
worlds.setVisible(false);
worlds.setSelectable(true, Color.yellow);
worlds.setRowSelectable(true);
add = new JButton("new Game");
frame.add(add);
add.setBounds(50, 540, 200, 50);
add.addActionListener(this);
add.setVisible(false);
delete = new JButton("Delete");
frame.add(delete);
delete.setBounds(350, 540, 200, 50);
delete.setVisible(false);
delete.addActionListener(this);
join = new JButton("Join");
frame.add(join);
join.setBounds(650, 540, 200, 50);
join.setVisible(false);
join.addActionListener(this);
/**
edit = new JButton("Edit");
frame.add(edit);
edit.setBounds(950, 540, 200, 50);
edit.setVisible(false);**/
}
public void spawnAddNewGame() {
nameL = new JLabel("Name: ");
frame.add(nameL);
nameL.setBounds(200, 100, 100, 20);
nameL.setVisible(false);
name = new JTextField("");
frame.add(name);
name.setBounds(300, 100, 100, 20);
name.setVisible(false);
fieldSizeX = new JLabel("Field Size X: ");
frame.add(fieldSizeX);
fieldSizeX.setBounds(200, 200, 100, 20);
fieldSizeX.setVisible(false);
fieldSizeXAmount = new JLabel("10");
frame.add(fieldSizeXAmount);
fieldSizeXAmount.setBounds(300, 200, 100, 20);
fieldSizeXAmount.setVisible(false);
fieldSizeXPlus = new JButton("+1");
frame.add(fieldSizeXPlus);
fieldSizeXPlus.setBounds(400, 200, 50, 20);
fieldSizeXPlus.setVisible(false);
fieldSizeXMinus = new JButton("-1");
frame.add(fieldSizeXMinus);
fieldSizeXMinus.setBounds(450, 200, 50, 20);
fieldSizeXMinus.setVisible(false);
fieldSizeY = new JLabel("Field Size Y: ");
frame.add(fieldSizeY);
fieldSizeY.setBounds(200, 250, 100, 20);
fieldSizeY.setVisible(false);
fieldSizeYAmount = new JLabel("10");
frame.add(fieldSizeYAmount);
fieldSizeYAmount.setBounds(300, 250, 100, 20);
fieldSizeYAmount.setVisible(false);
fieldSizeYPlus = new JButton("+1");
frame.add(fieldSizeYPlus);
fieldSizeYPlus.setBounds(400, 250, 50, 20);
fieldSizeYPlus.setVisible(false);
fieldSizeYMinus = new JButton("-1");
frame.add(fieldSizeYMinus);
fieldSizeYMinus.setBounds(450, 250, 50, 20);
fieldSizeYMinus.setVisible(false);
pixelSize = new JLabel("PixelSize: ");
frame.add(pixelSize);
pixelSize.setBounds(200, 300, 100, 20);
pixelSize.setVisible(false);
pixelSizeAmount = new JLabel("1");
frame.add(pixelSizeAmount);
pixelSizeAmount.setBounds(300, 300, 100, 20);
pixelSizeAmount.setVisible(false);
pixelSizePlus = new JButton("+1");
frame.add(pixelSizePlus);
pixelSizePlus.setBounds(400, 300, 50, 20);
pixelSizePlus.setVisible(false);
pixelSizeMinus = new JButton("-1");
frame.add(pixelSizeMinus);
pixelSizeMinus.setBounds(450, 300, 50, 20);
pixelSizeMinus.setVisible(false);
gridSize = new JLabel("Grid Size: ");
frame.add(gridSize);
gridSize.setBounds(200, 350, 100, 20);
gridSize.setVisible(false);
gridSizeAmount = new JLabel("2");
frame.add(gridSizeAmount);
gridSizeAmount.setBounds(300, 350, 100, 20);
gridSizeAmount.setVisible(false);
gridSizePlus = new JButton("+1");
frame.add(gridSizePlus);
gridSizePlus.setBounds(400, 350, 50, 20);
gridSizePlus.setVisible(false);
gridSizeMinus = new JButton("-1");
frame.add(gridSizeMinus);
gridSizeMinus.setBounds(450, 350, 50, 20);
gridSizeMinus.setVisible(false);
addNewGame = new JButton("Add");
frame.add(addNewGame);
addNewGame.setBounds(200, 500, 100, 20);
addNewGame.setVisible(false);
addNewGame.addActionListener(this);
deleteNewGame = new JButton("Delete");
frame.add(deleteNewGame);
deleteNewGame.setBounds(350, 500, 100, 20);
deleteNewGame.setVisible(false);
deleteNewGame.addActionListener(this);
}
public void addNewGameUi() {
name.setVisible(true);
nameL.setVisible(true);
fieldSizeX.setVisible(true);
fieldSizeXAmount.setVisible(true);
fieldSizeXPlus.setVisible(true);
fieldSizeXMinus.setVisible(true);
fieldSizeY.setVisible(true);
fieldSizeYAmount.setVisible(true);
fieldSizeYPlus.setVisible(true);
fieldSizeYMinus.setVisible(true);
pixelSize.setVisible(true);
pixelSizeAmount.setVisible(true);
pixelSizePlus.setVisible(true);
pixelSizeMinus.setVisible(true);
gridSize.setVisible(true);
gridSizeAmount.setVisible(true);
gridSizePlus.setVisible(true);
gridSizeMinus.setVisible(true);
addNewGame.setVisible(true);
deleteNewGame.setVisible(true);
}
public void addNewGameUiHide() {
name.setVisible(false);
nameL.setVisible(false);
fieldSizeX.setVisible(false);
fieldSizeXAmount.setVisible(false);
fieldSizeXPlus.setVisible(false);
fieldSizeXMinus.setVisible(false);
fieldSizeY.setVisible(false);
fieldSizeYAmount.setVisible(false);
fieldSizeYPlus.setVisible(false);
fieldSizeYMinus.setVisible(false);
pixelSize.setVisible(false);
pixelSizeAmount.setVisible(false);
pixelSizePlus.setVisible(false);
pixelSizeMinus.setVisible(false);
gridSize.setVisible(false);
gridSizeAmount.setVisible(false);
gridSizePlus.setVisible(false);
gridSizeMinus.setVisible(false);
addNewGame.setVisible(false);
deleteNewGame.setVisible(false);
}
public void gamesUi() {
worlds.deleteAll();
setWorlds();
worlds.setVisible(true);
add.setVisible(true);
delete.setVisible(true);
join.setVisible(true);
//edit.setVisible(true);
}
public void gamesUiHide() {
worlds.setVisible(false);
add.setVisible(false);
delete.setVisible(false);
join.setVisible(false);
//edit.setVisible(false);
}
public void spawnWorldUi(int[] ints) {
pframe = new PixelScreen(1200, 650, ints[3], ints[2]);
layer = pframe.getLayer(0);
grid = new PixelGrid(pframe, ints[4], layer);
layer.setGrid(grid);
layer.setVisible(true);
layer.setVisible(false);
pframe.setVisible(false);
}
public void worldUi() {
frame.setVisible(false);
pframe.setVisible(true);
layer.setVisible(true);
}
public void setWorlds() {
int acc = ac.getAccountOfSelectedName();
int pos = ac.getPosOfSelectedPassword();
int length = ac.getLengthOfAccount(acc)-3;;
for(int i = 0; i < length-1; i++) {
worlds.addLine();
worlds.setComponentString(ac.readLine(acc, i+4), i, 0);
}
}
public void add(PixelObjectFunction f) {
functions[fx] = f;
fx++;
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource() == this.add){
gamesUiHide();
addNewGameUi();
System.out.println("add");
}
if(e.getSource() == this.delete){
ac.deleteLine(ac.getPosOfString(worlds.getComponentString(worlds.getSelected()[0],0)), ac.getAccountOfSelectedName());
String path = ac.getPath()+"Worlds/";
String name = worlds.getComponentString(worlds.getSelected()[0],0);
ws.deleteWorld(path, name);
gamesUi();
System.out.println("delete");
}
if(e.getSource() == this.addNewGame){
if(!name.getText().equals("")) {
int acc = ac.getAccountOfSelectedName();
int pos = ac.getPosOfSelectedPassword();
String path = ac.getPath()+"Worlds/";
String name = this.name.getText();
if(!ac.getIfStringExsists(name, acc)) {
ac.addLine(pos+2, acc, name);
ws.addWorld(path, name);
ws.createWorld(path, name, 10, 10, 4);
addNewGameUiHide();
gamesUi();
}
}
System.out.println("addNew");
}
if(e.getSource() == this.join) {
if(worlds.getSelected() != null) {
String path = ac.getPath()+"Worlds/";
String name = worlds.getComponentString(worlds.getSelected()[0],0);
String[][][] s = ws.scanWorld(path, name);
spawnWorldUi(ws.getIntsOfLastScanned());
worldUi();
layer.setStringToPixel(s);
gamesUiHide();
System.out.println("join");
// es geht hierrum
}
}
}
@Override
public void action(int number) {
System.out.println("Ja");
}
}