/*
* NewGame.java
*
* Created on 11. April 2005, 12:23
*/
/**
*
* @author dv20010517
*/
package War;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.awt.image.*;
public class NewGame extends JDialog{
private JButton bOK = new JButton("Ok"); // auf OK um Spiel zu starten
private JButton bCancel = new JButton("Abbrechen"); // abbrechen kein neues spiel
private JList lLaender = new JList(); // liste mit ländern
private String []laenderString = {"Das Heilige Römische Reich","Frankreich","England","Russland","Italien"} ;
private War father; // der Vater, der den Sohn Dialog aufruft
private MyJTextPane jtp = new MyJTextPane(); // eine modifizierte JTextPane mit ca. den gleichen funktionen
private ImageIcon bigImage = new ImageIcon(); // große Karte
private ImageIcon littleImage = new ImageIcon(); // kleine Karte oben links
private JTabbedPane tp = new JTabbedPane(); // tabbed pane für gebäude und soldaten
private JButton bQuitRound= new JButton("Runde beenden"); // runde beenden neues jahr beginnen
/** Creates a new instance of NewGame */
public NewGame(War father) {
this.father =father;
lLaender.setListData(laenderString);
bOK.addActionListener(new ActionListener() { // wenn neues spiel gestartet werden soll
public void actionPerformed(ActionEvent e){
createNewGame();
}
});
bCancel.addActionListener(new ActionListener() { // wenn kein neues spiel gestartet werden soll
public void actionPerformed(ActionEvent e) {
dispose();
}
});
customizeLayout();
}
public void customizeLayout() { // layout festlegen
JPanel p = new JPanel(new FlowLayout());
JPanel pButtons = new JPanel(new GridLayout(2,1));
p.add(new JLabel("Wählen Sie ein Land aus"));
p.add(lLaender);
pButtons.add(bOK);
pButtons.add(bCancel);
p.add(pButtons);
this.getContentPane().add(p);
setResizable(false);
setModal(true);
father.setTitle((String)lLaender.getSelectedValue());
pack();
}
public void createNewGame() {
if(!lLaender.isSelectionEmpty()) {
father.getContentPane().add(new JScrollPane(jtp,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS),BorderLayout.CENTER);
bigImage = new ImageIcon(Toolkit.getDefaultToolkit().getImage("C:\\Dokumente und Einstellungen\\Christian\\WarAndDiplomacy\\src\\War\\Europe.jpg").getScaledInstance(1824, 1633, Image.SCALE_SMOOTH));
littleImage = new ImageIcon(Toolkit.getDefaultToolkit().getImage("C:\\Dokumente und Einstellungen\\Christian\\WarAndDiplomacy\\src\\War\\Europe.jpg").getScaledInstance(324, 133, Image.SCALE_SMOOTH));
int [][]a= getArray(littleImage.getImage(),littleImage.getIconWidth(),littleImage.getIconHeight());
int []newA;
newA=convert(fill2(22,80,Color.YELLOW.getRGB(),a));
MemoryImageSource mis = new MemoryImageSource(littleImage.getIconWidth(),littleImage.getIconHeight(),newA,0,littleImage.getIconWidth());
littleImage = new ImageIcon(Toolkit.getDefaultToolkit().createImage(mis));
jtp.insertIcon(bigImage);
jtp.setEnabled(false);
JPanel pNorth = new JPanel(new GridLayout(1,2));
JPanel pBuildingTab = new JPanel(new FlowLayout());
JPanel pArmyTab = new JPanel(new FlowLayout());
tp.addTab("Gebäude",pBuildingTab);
tp.addTab("Einheiten",pArmyTab);
WarLabel lLittleImage = new WarLabel(littleImage);
pNorth.add(lLittleImage);
pNorth.add(tp);
pNorth.add(bQuitRound);
JPanel pFloat = new JPanel(new FlowLayout());
pFloat.add(pNorth);
father.getContentPane().add(pFloat,BorderLayout.NORTH);
father.getContentPane().repaint();
dispose();
}
else
JOptionPane.showMessageDialog(this,"Sie haben kein Land ausgewählt. Sie müssen eines\nauswählen um ein neues Spiel starten zu können.\nWenn sie kein neues Spiel starten wollen, klicken\nsie auf abbrechen.","Kein Land gewählt",JOptionPane.OK_OPTION);
}
private int[] convert(int[][] a) {
int j=0;
int []newA = new int[a.length*a[0].length];
for(int i=0;i<a.length*a[0].length;i++) {
if(i%a.length==0&&i!=0)
j++;
newA[i] = a[i-j*a.length][j];
}
for(int i=0;i<newA.length;i++)
System.out.print(newA[i]+" ");
return newA;
}
private int[][] fill2(int x, int y,int color, int [][]a) {
System.out.println(a[x][y]);
if(a[x][y]==-1) {
System.out.println("CL UMGESTELLT");
a[x][y] = color;
a=fill2(x,y+1,color,a);
a=fill2(x,y-1,color,a);
a=fill2(x+1,y,color,a);
a=fill2(x-1,y,color,a);
}
for(int i=0;i<a[0].length;i++)
for(int j=0;j<a.length;j++)
System.out.print(a[j][i]+" ");
System.out.println();
return a;
}
private int[][] getArray(Image img, int width,int height) {
int []array=new int[littleImage.getIconWidth()*littleImage.getIconHeight()];
PixelGrabber grab = new PixelGrabber(img,0,0,width,height,array,0,width);
try {
grab.grabPixels();
}
catch(InterruptedException e) {}
int[][] a=new int[width][height];
for(int y=0;y<height;y++)
for(int x=0;x<width;x++)
a[x][y]=array[y*width+x];
return a;
}
}