import java.awt.*;
import java.util.*;
import java.Math.*;
public class Welt extends Frame implements Runnable
{
static Thread th;
Vector Select = new Vector();
Point SelectPoint[];
boolean bSelectKlicked = false;
Image BackgroundImage;
boolean bPause = false;
boolean bWindrose = false;
boolean bZeit = false;
boolean bKarte = false;
boolean bGitter = true;
boolean bObere_Infozeile = true;
boolean bUntere_Infozeile = true;
boolean bFocusOnSelect = false;
boolean bWeltall = true;
boolean bControl = false;
int nDay = 1;
int nBeat = 0;
int nBeat_Day = 1000;
/*
int nPauseCounter = 0;
int nPauseCounterRichtung = 0;
int nPauseCounterAlt = 1;
*/
String Text = "Welt";
int SCHRIFTGROESSE_BEI_ZOOM_100 = 0;
int SPURENLAENGE = 10;
int RASTER_SIZE = 10;
// boolean bSpurenzeichnen = true;
// double Wert_x[][];
// double Wert_y[][];
// double dUserView = 0;
double dAngle = 10;
double GRAD_PI = 180 * Math.PI;
Image scr = null;
Image scr2 = null;
int nOrigin_x = 0;
int nOrigin_y = 0;
int nUser_x = 0;
int nUser_y = 0;
int nZoom = 100;
Font Fon;
Choice Choi = new Choice();
// Checkbox Checkbo = new Checkbox("Spuren");
TextField TextFi = new TextField(10);
Checkbox Checkbo2 = new Checkbox("Windrose");
Checkbox Checkbo3 = new Checkbox("Zeit");
Checkbox Checkbo4 = new Checkbox("Karte");
Checkbox Checkbo5 = new Checkbox("Gitter");
Checkbox Checkbo6 = new Checkbox("Focus Select");
Checkbox Checkbo7 = new Checkbox("Weltall");
TextField Message = new TextField("A new ship has reached the system (1:245)", 30);
TextArea TextAre = new TextArea("", 20, 15, TextArea.SCROLLBARS_NONE);
Button Butt = new Button("Ende");
Button Butt2 = new Button("GeheZentrum");
Button Butt3 = new Button("Map");
Button Butt4 = new Button("DefaultView");
Button Butt5 = new Button("+");
Button Butt6 = new Button("-");
Button Butt7 = new Button("Hyperspace");
Button Butt8 = new Button("Damage");
Button Butt9 = new Button("Enter Planet");
Panel PANEL_oben = new Panel(new FlowLayout(FlowLayout.LEFT));
Panel PANEL_unten = new Panel(new FlowLayout(FlowLayout.LEFT));
Panel PANEL_links = new Panel(new GridLayout(1, 1));
Panel PANEL_rechts = new Panel(new GridLayout(2, 1));
Panel PANEL_rechts_unten = new Panel(new GridLayout(10, 1));
Ship Shi[];
Planet Pla[];
Mine Min[];
PopupMenu PopupMe = new PopupMenu();
MenuBar mainMenuBar;
Menu menu1;
CheckboxMenuItem pause;
MenuItem neu;
MenuItem laden;
MenuItem speichern;
MenuItem beenden;
Menu menu2;
Menu innenpolitik;
MenuItem steuern;
MenuItem gesetze;
Menu aussenpolitik;
Menu vertraege;
MenuItem freundschaftsvertrag;
MenuItem friedensvertrag;
MenuItem handelsvertrag;
MenuItem kriegserklaerung;
MenuItem militaerbuendnis;
MenuItem nichtangriffspakt;
MenuItem vereinigunsvertrag;
MenuItem unabhaengigkeitsvertrag;
MenuItem waffenstillstand;
MenuItem wirtschaftsvertrag;
MenuItem wissenschaftsvertrag;
Menu menu3;
MenuItem boerse;
MenuItem weltatlas;
Menu menu4;
CheckboxMenuItem oben;
CheckboxMenuItem unten;
Menu menu99;
MenuItem java_proberties;
public Welt()
{
//{{INIT_CONTROLS
// setLayout(null);
setVisible(false);
// setSize(insets().left + insets().right + 271,insets().top + insets().bottom + 173);
// openFileDialog1 = new java.awt.FileDialog(this);
// openFileDialog1.setMode(FileDialog.LOAD);
// openFileDialog1.setTitle("Open");
//$$ openFileDialog1.move(40,277);
Global.nTest = 20;
setTitle(" Welt - eine neue Zeit ");
//}}
//{{INIT_MENUS
/*
mainMenuBar = new java.awt.MenuBar();
menu1 = new java.awt.Menu("File");
miNew = new java.awt.MenuItem("New");
menu1.add(miNew);
miOpen = new java.awt.MenuItem("Open...");
menu1.add(miOpen);
miSave = new java.awt.MenuItem("Save");
menu1.add(miSave);
miSaveAs = new java.awt.MenuItem("Save As...");
menu1.add(miSaveAs);
menu1.addSeparator();
miExit = new java.awt.MenuItem("Exit");
menu1.add(miExit);
mainMenuBar.add(menu1);
menu2 = new java.awt.Menu("Edit");
miCut = new java.awt.MenuItem("Cut");
menu2.add(miCut);
miCopy = new java.awt.MenuItem("Copy");
menu2.add(miCopy);
miPaste = new java.awt.MenuItem("Paste");
menu2.add(miPaste);
mainMenuBar.add(menu2);
menu3 = new java.awt.Menu("Help");
mainMenuBar.setHelpMenu(menu3);
miAbout = new java.awt.MenuItem("About..");
menu3.add(miAbout);
mainMenuBar.add(menu3);
setMenuBar(mainMenuBar);
*/
//$$ mainMenuBar.move(4,277);
//}}
//{{REGISTER_LISTENERS
SymWindow aSymWindow = new SymWindow();
this.addWindowListener(aSymWindow);
SymAction lSymAction = new SymAction();
SymItem lSymItem = new SymItem();
SymKey lSymKey = new SymKey();
SymMouse lSymMouse = new SymMouse();
SymMouseMotion lSymMouseMotion = new SymMouseMotion();
//
mainMenuBar = new MenuBar();
menu1 = new Menu("Spiel");
mainMenuBar.add(menu1);
neu = new MenuItem("Neu", new MenuShortcut('N'));
neu .addActionListener(lSymAction);
menu1.add(neu);
laden = new MenuItem("Laden", new MenuShortcut('L'));
laden .addActionListener(lSymAction);
menu1.add(laden);
speichern = new MenuItem("Speichern", new MenuShortcut('S'));
speichern .addActionListener(lSymAction);
menu1.add(speichern);
menu1.addSeparator();
pause = new CheckboxMenuItem("Pause");
pause .addItemListener(lSymItem);
menu1.add(pause);
menu1.addSeparator();
beenden = new MenuItem("Beenden", new MenuShortcut('B'));
beenden .addActionListener(lSymAction);
menu1.add(beenden);
menu2 = new Menu("Politik");
mainMenuBar.add(menu2);
innenpolitik = new Menu("Innenpolitik");
menu2.add(innenpolitik);
steuern = new MenuItem("Steuern", new MenuShortcut('N'));
steuern .addActionListener(lSymAction);
innenpolitik.add(steuern);
gesetze = new MenuItem("Gesetze", new MenuShortcut('N'));
gesetze .addActionListener(lSymAction);
innenpolitik.add(gesetze);
aussenpolitik = new Menu("Außenpolitik");
menu2.add(aussenpolitik);
vertraege = new Menu("Verträge");
aussenpolitik.add(vertraege);
freundschaftsvertrag = new MenuItem("Freundschaftsvertrag", new MenuShortcut('N'));
freundschaftsvertrag .addActionListener(lSymAction);
vertraege.add(freundschaftsvertrag);
friedensvertrag = new MenuItem("Friedensvertrag", new MenuShortcut('N'));
friedensvertrag .addActionListener(lSymAction);
vertraege.add(friedensvertrag);
handelsvertrag = new MenuItem("Handelsvertrag", new MenuShortcut('N'));
handelsvertrag .addActionListener(lSymAction);
vertraege.add(handelsvertrag);
kriegserklaerung = new MenuItem("Kriegserklärung", new MenuShortcut('N'));
kriegserklaerung .addActionListener(lSymAction);
vertraege.add(kriegserklaerung);
militaerbuendnis = new MenuItem("Militärbündnis", new MenuShortcut('N'));
militaerbuendnis .addActionListener(lSymAction);
vertraege.add(militaerbuendnis);
nichtangriffspakt = new MenuItem("Nichtangriffspakt", new MenuShortcut('N'));
nichtangriffspakt .addActionListener(lSymAction);
vertraege.add(nichtangriffspakt);
vereinigunsvertrag = new MenuItem("Vereinigunsvertrag", new MenuShortcut('N'));
vereinigunsvertrag .addActionListener(lSymAction);
vertraege.add(vereinigunsvertrag);
unabhaengigkeitsvertrag = new MenuItem("Unabhängigkeitsvertrag", new MenuShortcut('N'));
unabhaengigkeitsvertrag .addActionListener(lSymAction);
vertraege.add(unabhaengigkeitsvertrag);
waffenstillstand = new MenuItem("Waffenstillstand", new MenuShortcut('N'));
waffenstillstand .addActionListener(lSymAction);
vertraege.add(waffenstillstand);
wirtschaftsvertrag = new MenuItem("Wirtschaftsvertrag", new MenuShortcut('N'));
wirtschaftsvertrag .addActionListener(lSymAction);
vertraege.add(wirtschaftsvertrag);
wissenschaftsvertrag = new MenuItem("Wissenschaftsvertrag", new MenuShortcut('N'));
wissenschaftsvertrag .addActionListener(lSymAction);
vertraege.add(wissenschaftsvertrag);
menu3 = new Menu("Sonstiges");
mainMenuBar.add(menu3);
boerse = new MenuItem("Börse", new MenuShortcut('N'));
boerse .addActionListener(lSymAction);
menu3.add(boerse);
weltatlas = new MenuItem("Weltatlas", new MenuShortcut('N'));
weltatlas .addActionListener(lSymAction);
menu3.add(weltatlas);
menu4 = new Menu("Fenster");
mainMenuBar.add(menu4);
oben = new CheckboxMenuItem("Obere Schaltleiste");
oben .addItemListener(lSymItem);
menu4.add(oben);
oben.setState(bObere_Infozeile);
unten = new CheckboxMenuItem("Untere Schaltleiste");
unten .addItemListener(lSymItem);
menu4.add(unten);
unten.setState(bUntere_Infozeile);
menu99 = new Menu("Hilfe");
mainMenuBar.add(menu99);
java_proberties = new MenuItem("Java Umgebung", new MenuShortcut('N'));
java_proberties .addActionListener(lSymAction);
menu99.add(java_proberties);
setMenuBar(mainMenuBar);
// PopupMe.add(oben);
// oben .addItemListener(lSymItem);
PopupMe.addSeparator();
// PopupMe.add(unten);
this. add(PopupMe);
//
Butt .addActionListener(lSymAction);
Butt2 .addActionListener(lSymAction);
Butt3 .addActionListener(lSymAction);
Butt4 .addActionListener(lSymAction);
Butt5 .addActionListener(lSymAction);
Butt6 .addActionListener(lSymAction);
Butt7 .addActionListener(lSymAction);
Butt8 .addActionListener(lSymAction);
Butt9 .addActionListener(lSymAction);
//miAbout .addActionListener(lSymAction);
//miExit .addActionListener(lSymAction);
Choi .addItemListener(lSymItem);
//Checkbo .addItemListener(lSymItem);
Checkbo2.addItemListener(lSymItem);
Checkbo3.addItemListener(lSymItem);
Checkbo4.addItemListener(lSymItem);
Checkbo5.addItemListener(lSymItem);
Checkbo6.addItemListener(lSymItem);
Checkbo7.addItemListener(lSymItem);
this .addKeyListener(lSymKey);
Choi .addKeyListener(lSymKey);
//Checkbo .addKeyListener(lSymKey);
Checkbo2.addKeyListener(lSymKey);
Checkbo3.addKeyListener(lSymKey);
Checkbo4.addKeyListener(lSymKey);
Checkbo5.addKeyListener(lSymKey);
Checkbo6.addKeyListener(lSymKey);
Checkbo7.addKeyListener(lSymKey);
TextFi .addKeyListener(lSymKey);
Message .addKeyListener(lSymKey);
TextAre .addKeyListener(lSymKey);
Butt .addKeyListener(lSymKey);
Butt2 .addKeyListener(lSymKey);
Butt3 .addKeyListener(lSymKey);
Butt4 .addKeyListener(lSymKey);
Butt5 .addKeyListener(lSymKey);
Butt6 .addKeyListener(lSymKey);
Butt7 .addKeyListener(lSymKey);
Butt8 .addKeyListener(lSymKey);
Butt9 .addKeyListener(lSymKey);
this .addMouseListener(lSymMouse);
this .addMouseMotionListener(lSymMouseMotion);
//}}
//Checkbo.setState(bSpurenzeichnen);
Checkbo2.setState(bWindrose);
Checkbo3.setState(bZeit);
Checkbo4.setState(bKarte);
Checkbo5.setState(bGitter);
Checkbo6.setState(bFocusOnSelect);
Checkbo7.setState(bWeltall);
pause.setState(bPause);
speichern.setEnabled(false);
TextAre.setEditable(false);
TextFi.setEditable(false);
Message.setEditable(false);
SCHRIFTGROESSE_BEI_ZOOM_100 = 12;
this.setBackground(Color.lightGray);
{
int nBreite = getToolkit().getScreenSize().width;
int nHoehe = getToolkit().getScreenSize().height;
this.setSize(nBreite, nHoehe);
nOrigin_x = nBreite / 2;
nOrigin_y = nHoehe / 2;
}
this.setIconImage(getToolkit().getImage("welt.gif"));
this.setLayout(new BorderLayout());
Choi.addItem("012 %");
Choi.addItem("025 %");
Choi.addItem("050 %");
Choi.addItem("075 %");
Choi.addItem("100 %");
Choi.addItem("200 %");
Choi.addItem("400 %");
Choi.addItem("600 %");
Choi.select(4);
PANEL_oben.add(Butt);
PANEL_oben.add(TextFi);
PANEL_oben.add(Choi);
PANEL_oben.add(Butt5);
PANEL_oben.add(Butt6);
PANEL_oben.add(Butt2);
PANEL_oben.add(Butt3);
PANEL_oben.add(Butt4);
PANEL_unten.add(Message);
//PANEL_unten.add(Checkbo);
PANEL_unten.add(Checkbo2);
PANEL_unten.add(Checkbo3);
PANEL_unten.add(Checkbo4);
PANEL_unten.add(Checkbo5);
PANEL_unten.add(Checkbo6);
PANEL_unten.add(Checkbo7);
// PANEL_links.add(Butt);
PANEL_rechts.add(TextAre);
PANEL_rechts.add(PANEL_rechts_unten);
PANEL_rechts_unten.add(Butt7);
PANEL_rechts_unten.add(Butt8);
PANEL_rechts_unten.add(Butt9);
/*
PANEL_rechts.add(Butt7);
PANEL_rechts.add(Butt8);
PANEL_rechts.add(Butt9);
*/
if(bObere_Infozeile == true){
this.add("North", PANEL_oben);
}
if(bUntere_Infozeile == true){
this.add("South", PANEL_unten);
}
this.add("East", PANEL_rechts);
// this.add("West", PANEL_links);
// this.add("Center", PANEL_rechts);
// this.setCursor(Cursor.CROSSHAIR_CURSOR);
Schriftgroesse_setzen();
/*
int nWert = 0;
Wert_x = new double[SPURENLAENGE][Text.length()];
Wert_y = new double[SPURENLAENGE][Text.length()];
for(int i2=0; i2<SPURENLAENGE;i2++){
for(int i=0; i<Text.length();i++){
char c[] = new char[1];
c[0] = Text.charAt(i);
Wert_x[i2][i] = 100 + i * 12;
// nWert += (this.getFontMetrics(Fon).stringWidth(new String(c)));
// Wert_x[i2][i] = 10 + nWert + i * 2;
Wert_y[i2][i] = 10;
}
}
*/
Shi = new Ship[10];
for(int i=0; i<10;i++){
Shi[i] = new Ship("St. Clara [" + i + "]", new Point((i + 1) * 34, (i + 1) * 44),
2, "X");
Shi[i].setZiel(new Point((i + 1) * 340, (i + 1) * 440));
switch(i){
case 0:
// Shi[i].bBlinken = true;
// Shi[i].nBlinkIntensity = Shi[i].BLINK_INTENSITY_FAST;
break;
}
}
Pla = new Planet[10];
for(int i=0; i<10;i++){
Pla[i] = new Planet("Erde [" + i + "]", new Point((i + 3) * 50, (i + 3) * 50),
5 - i / 5, 2 + i * 2);
// Pla[i] = new Planet("Erde [" + i + "]", new Point((i + 3) * 50, (i + 3) * 50),
0, 15 + i * 2);
}
Min = new Mine[10];
for(int i=0; i<10;i++){
Min[i] = new Mine("Death Point [" + i + "]", new Point((i + 1) * 134, (i + 1) *
244), 0, "#");
Min[i].setZiel(new Point((i + 1) * 340, (i + 1) * 440));
}
berech();
}
public Welt(String title)
{
this();
setTitle(title);
}
public synchronized void show()
{
move(0, 0);
super.show();
}
public void Schriftgroesse_setzen()
{
{
double x;
Integer Integ;
String Stri;
Stri = Choi.getSelectedItem();
Stri = Stri.substring(0, 3);
Integ = new Integer(Stri);
nZoom = Integ.intValue();
x = (SCHRIFTGROESSE_BEI_ZOOM_100 * ((double) nZoom / 100));
Fon = (new Font("Helvetica", Font.PLAIN, (int) Math.round(x)));
}
}
public void berech()
{
if(bPause == false){
/*
for(int i2=SPURENLAENGE - 1; i2>0;i2--){
for(int i=0; i<Text.length();i++){
Wert_x[i2][i] = Wert_x[i2 - 1][i];
Wert_y[i2][i] = Wert_y[i2 - 1][i];
}
}
for(int i=0; i<Text.length();i++){
double dx = Math.cos(dAngle / GRAD_PI) * Wert_x[0][i] - Math.sin(dAngle / GRAD_PI) * Wert_y[0][i];
double dy = Math.sin(dAngle / GRAD_PI) * Wert_x[0][i] + Math.cos(dAngle / GRAD_PI) * Wert_y[0][i];
Wert_x[0][i] = dx;
Wert_y[0][i] = dy;
}
*/
for(int i=0; i<10;i++){
Shi[i].doBefehl();
Pla[i].doBefehl();
Min[i].doBefehl();
}
}
}
public void run()
{
while(true){
berech();
repaint();
// System.out.println("running");
try {
th.sleep(100);
} catch (InterruptedException e){
System.out.println(e);
}
}
}
public void update(Graphics g)
{
paint(g);
}
public void paint(Graphics g)
{
// Hintergrund-Bild
if(BackgroundImage == null){
Image Imag = getToolkit().getImage("BackgroundImage.gif");
BackgroundImage = createImage(nOrigin_x * 2, nOrigin_y * 2);
MediaTracker Media = new MediaTracker(this);
Media.addImage(Imag, 0);
try {
Media.waitForID(0);
} catch (InterruptedException e) {
}
Graphics g2 = BackgroundImage.getGraphics();
g2.drawImage(Imag, 0, 0, nOrigin_x * 2, nOrigin_y * 2, null);
}
if(scr == null){
scr = createImage(nOrigin_x * 2, nOrigin_y * 2);
}
Graphics g2 = scr.getGraphics();
char[] c;
int nAdd_x = 0;
int nAdd_y = 0;
if(bFocusOnSelect == true){
if(Select.isEmpty() == false){
for(int i = 0; i < Select.size(); i++){
if(Select.elementAt(i) instanceof Ship){
if(Shi[i].bInHyperspace == false){
Ship Sh;
Sh = (Ship) Select.elementAt(i);
nAdd_x = -Sh.getPosition().x;
nAdd_y = -Sh.getPosition().y;
nUser_x = nAdd_x; // Positionscursor auf FocusShip
nUser_y = nAdd_y; // Positionscursor auf FocusShip
} else {
nAdd_x = nUser_x;
nAdd_y = nUser_y;
bFocusOnSelect = false;
Checkbo6.setState(bFocusOnSelect);
}
} else if(Select.elementAt(i) instanceof Planet){
Planet Pl;
Pl = (Planet) Select.elementAt(i);
nAdd_x = -Pl.getPosition().x;
nAdd_y = -Pl.getPosition().y;
} else if(Select.elementAt(i) instanceof Mine){
Mine Mi;
Mi = (Mine) Select.elementAt(i);
nAdd_x = -Mi.getPosition().x;
nAdd_y = -Mi.getPosition().y;
}
}
}
} else if(bFocusOnSelect == false){
nAdd_x = nUser_x;
nAdd_y = nUser_y;
}
g2.setFont(Fon);
g2.setColor(Color.black);
g2.fillRect(0, 0, nOrigin_x * 2, nOrigin_y * 2);
if(BackgroundImage != null){
if(bWeltall == true){
g2.drawImage(BackgroundImage, 0, 0, nOrigin_x * 2, nOrigin_y * 2, null);
}
}
// Koordinaten-Netz
if(bGitter == true){
int nSize = SCHRIFTGROESSE_BEI_ZOOM_100 * 10;
int nSize2;
double x;
double x2;
double y;
double y2;
g2.setColor(new Color(0x00, 0x00, 80));
nSize2 = (RASTER_SIZE) * nOrigin_x / (int) (nSize);
for(int i=0; i<nSize2 + 1;i++){
x = (i - nSize2 / 2) * nSize + nAdd_x;
x = x * ((double) nZoom / 100) + nOrigin_x;
y = (0 - nSize2 / 2) * nSize + nAdd_y;
y = y * ((double) nZoom / 100) + nOrigin_y;
y2 = (nSize2 - nSize2 / 2) * nSize + nAdd_y;
y2 = y2 * ((double) nZoom / 100) + nOrigin_y;
g2.drawLine((int) Math.round(x), (int) Math.round(y), (int) Math.round(x), (int) Math.round(y2));
}
nSize2 = (3 + RASTER_SIZE) * nOrigin_y / (int) (nSize);
for(int i=-1; i<nSize2 + 1;i++){
y = (i - nSize2 / 2) * nSize + nAdd_y;
y = y * ((double) nZoom / 100) + nOrigin_y;
x = (-1 - nSize2 / 2) * nSize + nAdd_x;
x = x * ((double) nZoom / 100) + nOrigin_x;
x2 = (nSize2 - nSize2 / 2) * nSize + nAdd_x;
x2 = x2 * ((double) nZoom / 100) + nOrigin_x;
g2.drawLine((int) Math.round(x), (int) Math.round(y), (int) Math.round(x2), (int) Math.round(y));
}
/*
nSize2 = 4 * nOrigin_y / (int) (nSize * ((double) nZoom / 100));
for(int i=0; i<nSize2;i++){
y = (i - nSize2 / 2) * nSize + nAdd_y;
y = y * ((double) nZoom / 100) + nOrigin_y;
g2.drawLine(0, (int) Math.round(y), nOrigin_x * 2, (int) Math.round(y));
}
*/
// Koordinaten-Mittelpunkt
nSize = (int) (nSize * ((double) nZoom / 100));
g2.setColor(Color.lightGray);
x = nAdd_x;
y = nAdd_y;
x = x * ((double) nZoom / 100) + nOrigin_x;
y = y * ((double) nZoom / 100) + nOrigin_y;
g2.drawLine((int) Math.round(x), (int) Math.round(y), (int) Math.round(x), (int) Math.round(y) - nSize
/ 2);
g2.drawLine((int) Math.round(x), (int) Math.round(y), (int) Math.round(x), (int) Math.round(y) + nSize
/ 2);
g2.drawLine((int) Math.round(x), (int) Math.round(y), (int) Math.round(x) - nSize / 2, (int) Math.round(y));
g2.drawLine((int) Math.round(x), (int) Math.round(y), (int) Math.round(x) + nSize / 2, (int) Math.round(y));
}
// aktueller View
{
int nSize = SCHRIFTGROESSE_BEI_ZOOM_100 * 10;
double x;
double y;
nSize = (int) (nSize * ((double) nZoom / 100));
g2.setColor(Color.orange);
x = nOrigin_x;
y = nOrigin_y;
g2.drawLine((int) Math.round(x), (int) Math.round(y), (int) Math.round(x), (int) Math.round(y) - nSize
/ 2);
g2.drawLine((int) Math.round(x), (int) Math.round(y), (int) Math.round(x), (int) Math.round(y) + nSize
/ 2);
g2.drawLine((int) Math.round(x), (int) Math.round(y), (int) Math.round(x) - nSize / 2, (int) Math.round(y));
g2.drawLine((int) Math.round(x), (int) Math.round(y), (int) Math.round(x) + nSize / 2, (int) Math.round(y));
}
// Sonne zeichnen
{
double x;
double y;
int nSize = SCHRIFTGROESSE_BEI_ZOOM_100 * 10;
g2.setColor(Color.yellow);
x = -nSize / 2 + nAdd_x;
y = -nSize / 2 + nAdd_y;
nSize = (int) (nSize * ((double) nZoom / 100));
x = x * ((double) nZoom / 100) + nOrigin_x;
y = y * ((double) nZoom / 100) + nOrigin_y;
g2.fillArc((int) Math.round(x), (int) Math.round(y), nSize, nSize, 0, 360);
}
// Planeten zeichnen
for(int i=0; i<10;i++){
double x;
double y;
int nSize = Pla[i].getSize();
nSize = (int) (nSize * ((double) nZoom / 100));
g2.setColor(Color.blue);
x = Pla[i].getPosition().x + nAdd_x - (nSize / 2);
y = Pla[i].getPosition().y + nAdd_y - (nSize / 2);
x = x * ((double) nZoom / 100) + nOrigin_x;
y = y * ((double) nZoom / 100) + nOrigin_y;
//if(i == 9){
// g2.drawArc((nOrigin_x + nAdd_x) - (int) Math.round(x) / 2, (nOrigin_y + nAdd_y) - (int) Math.round(y)
/ 2, (int) Math.round(x), (int) Math.round(x), 0, 360);
//}
g2.fillArc((int) Math.round(x), (int) Math.round(y), nSize, nSize, 0, 360);
if(Select.isEmpty() == false){
// nSize = (int) (nSize * ((double) nZoom / 100));
g2.setColor(Color.white);
for(int i2 = 0; i2 < Select.size(); i2++){
Planet Pl;
if(Select.elementAt(i2) instanceof Planet){
Pl = (Planet) Select.elementAt(i2);
if(Pl == Pla[i]){
g2.drawArc((int) Math.round(x), (int) Math.round(y), nSize + 1, nSize + 1, 0, 360);
}
}
}
}
g2.setColor(Color.blue);
g2.drawString(Pla[i].getName(), (int) Math.round(x), (int) Math.round(y) - 1);
}
/*
// Spuren zeichnen
{
double x;
double y;
if(bSpurenzeichnen == true){
for(int i=0; i<Text.length();i++){
for(int i2=1; i2<SPURENLAENGE;i2++){
g2.setColor(new Color((SPURENLAENGE - i2) * (0xFF / SPURENLAENGE), (SPURENLAENGE - i2)
* (0xFF / SPURENLAENGE), 0xFF));
x = Wert_x[i2][i] + nAdd_x;
y = Wert_y[i2][i] + nAdd_y;
// User-View berücksichtigen
// x = Math.cos(dUserView / GRAD_PI) * x - Math.sin(dUserView / GRAD_PI) * y;
// y = Math.sin(dUserView / GRAD_PI) * x + Math.cos(dUserView / GRAD_PI) * y;
x = (x * ((double) nZoom / 100) + nOrigin_x);
y = (y * ((double) nZoom / 100) + nOrigin_y);
g2.drawLine((int) Math.round(x), (int) Math.round(y), (int) Math.round(x), (int) Math.round(y));
}
}
}
}
*/
/*
// Text zeichnen
{
double x;
double y;
for(int i=0; i<Text.length();i++){
g2.setColor(Color.orange);
c = new char[1];
c[0] = Text.charAt(i);
x = Wert_x[0][i] + nAdd_x;
y = Wert_y[0][i] + nAdd_y;
// User-View berücksichtigen
// x = Math.cos(dUserView / GRAD_PI) * x - Math.sin(dUserView / GRAD_PI) * y;
// y = Math.sin(dUserView / GRAD_PI) * x + Math.cos(dUserView / GRAD_PI) * y;
x = x * ((double) nZoom / 100) + nOrigin_x;
y = y * ((double) nZoom / 100) + nOrigin_y;
g2.drawString(new String(c), (int) Math.round(x), (int) Math.round(y));
}
}
*/
// Minen zeichnen
for(int i=0; i<10;i++){
if(Min[i].bInHyperspace == false){
int nSize = SCHRIFTGROESSE_BEI_ZOOM_100 * 2;
double x;
double y;
double dBreite;
double dHoehe;
x = Min[i].getPosition().x + nAdd_x;
y = Min[i].getPosition().y + nAdd_y;
x = x * ((double) nZoom / 100) + nOrigin_x;
y = y * ((double) nZoom / 100) + nOrigin_y;
dBreite = (this.getFontMetrics(g2.getFont()).stringWidth(Min[i].getSymbol()));
x = x - dBreite / 2;
dHoehe = (this.getFontMetrics(g2.getFont()).getHeight());
y = y + dHoehe / 4;
if(Select.isEmpty() == false){
nSize = (int) (nSize * ((double) nZoom / 100));
g2.setColor(Color.white);
for(int i2 = 0; i2 < Select.size(); i2++){
Mine Mi;
if(Select.elementAt(i2) instanceof Mine){
Mi = (Mine) Select.elementAt(i2);
if(Mi == Min[i]){
g2.drawArc((int) Math.round(x - dBreite - 2), (int) Math.round(y - dHoehe - 2), nSize,
nSize, 0, 360);
}
}
}
}
g2.setColor(Color.green);
g2.drawString(Min[i].getSymbol(), (int) Math.round(x), (int) Math.round(y));
x = Min[i].getPosition().x + SCHRIFTGROESSE_BEI_ZOOM_100 / 2 + nAdd_x;
y = Min[i].getPosition().y + SCHRIFTGROESSE_BEI_ZOOM_100 / 2 + nAdd_y;
x = x * ((double) nZoom / 100) + nOrigin_x;
y = y * ((double) nZoom / 100) + nOrigin_y;
if(Choi.getSelectedIndex() != 1){ // nur != 25 %, Name anzeigen
g2.setColor(Color.green);
g2.drawString(Min[i].getName(), (int) Math.round(x), (int) Math.round(y));
}
if(Choi.getSelectedIndex() > 2){ // nur >= 75 %, Health anzeigen
g2.setColor(Color.green);
g2.setColor(g2.getColor().brighter());
String Stri = new String();
Stri = "";
for(int z = 0; z < Min[i].nHealthy / 10; z++){
Stri += ".";
}
x = Min[i].getPosition().x + SCHRIFTGROESSE_BEI_ZOOM_100 / 2 + nAdd_x;
// y = Min[i].getPosition().y + SCHRIFTGROESSE_BEI_ZOOM_100 / 2 + nAdd_y - SCHRIFTGROESSE_BEI_ZOOM_100
+ 2;
y = Min[i].getPosition().y + SCHRIFTGROESSE_BEI_ZOOM_100 / 2 + nAdd_y + 2;
x = x * ((double) nZoom / 100) + nOrigin_x;
y = y * ((double) nZoom / 100) + nOrigin_y;
g2.drawString(Stri, (int) Math.round(x), (int) Math.round(y));
/*
x = Min[i].getPosition().x + SCHRIFTGROESSE_BEI_ZOOM_100 / 2 + nAdd_x + (z * 2);
y = Min[i].getPosition().y + SCHRIFTGROESSE_BEI_ZOOM_100 / 2 + nAdd_y + 4;
x = x * ((double) nZoom / 100) + nOrigin_x;
y = y * ((double) nZoom / 100) + nOrigin_y;
g2.drawString(".", (int) Math.round(x), (int) Math.round(y));
*/
// g2.setColor(g2.getColor().brighter());
// }
}
} else {
// unselectMinp(Shi[i]);
}
}
// Schiffe zeichnen
for(int i=0; i<10;i++){
if(Shi[i].bInHyperspace == false){
int nSize = SCHRIFTGROESSE_BEI_ZOOM_100 * 2;
double x;
double y;
double dBreite;
double dHoehe;
x = Shi[i].getPosition().x + nAdd_x;
y = Shi[i].getPosition().y + nAdd_y;
x = x * ((double) nZoom / 100) + nOrigin_x;
y = y * ((double) nZoom / 100) + nOrigin_y;
dBreite = (this.getFontMetrics(g2.getFont()).stringWidth(Shi[i].getSymbol()));
x = x - dBreite / 2;
dHoehe = (this.getFontMetrics(g2.getFont()).getHeight());
y = y + dHoehe / 4;
if(Select.isEmpty() == false){
nSize = (int) (nSize * ((double) nZoom / 100));
g2.setColor(Color.white);
for(int i2 = 0; i2 < Select.size(); i2++){
Ship Sh;
if(Select.elementAt(i2) instanceof Ship){
Sh = (Ship) Select.elementAt(i2);
if(Sh == Shi[i]){
g2.drawArc((int) Math.round(x - dBreite - 2), (int) Math.round(y - dHoehe - 2), nSize,
nSize, 0, 360);
}
}
}
}
g2.setColor(Color.green);
g2.drawString(Shi[i].getSymbol(), (int) Math.round(x), (int) Math.round(y));
x = Shi[i].getPosition().x + SCHRIFTGROESSE_BEI_ZOOM_100 / 2 + nAdd_x;
y = Shi[i].getPosition().y + SCHRIFTGROESSE_BEI_ZOOM_100 / 2 + nAdd_y;
x = x * ((double) nZoom / 100) + nOrigin_x;
y = y * ((double) nZoom / 100) + nOrigin_y;
if(Choi.getSelectedIndex() != 1){ // nur != 25 %, Name anzeigen
boolean bDraw = true;
if(Shi[i].nHealthy<=10){
Shi[i].nBlinkIntensity = Shi[i].BLINK_INTENSITY_FAST;
Shi[i].bBlinken = true;
} else if(Shi[i].nHealthy<=20){
Shi[i].nBlinkIntensity = Shi[i].BLINK_INTENSITY_NORMAL;
Shi[i].bBlinken = true;
} else if(Shi[i].nHealthy<=30){
Shi[i].nBlinkIntensity = Shi[i].BLINK_INTENSITY_SLOW;
Shi[i].bBlinken = true;
} else {
Shi[i].bBlinken = false;
}
if(Shi[i].bBlinken == true){
Shi[i].nBlinkCounter++;
if(Shi[i].nBlinkCounter > Shi[i].nBlinkIntensity){
Shi[i].nBlinkCounter = 0;
bDraw = false;
}
}
if(bDraw == true){
g2.setColor(Color.green);
} else {
g2.setColor(g2.getColor().darker());
}
g2.drawString(Shi[i].getName(), (int) Math.round(x), (int) Math.round(y));
}
if(Choi.getSelectedIndex() > 2){ // nur >= 75 %, Health anzeigen
g2.setColor(Color.green);
g2.setColor(g2.getColor().brighter());
String Stri = new String();
Stri = "";
for(int z = 0; z < Shi[i].nHealthy / 10; z++){
Stri += ".";
}
x = Shi[i].getPosition().x + SCHRIFTGROESSE_BEI_ZOOM_100 / 2 + nAdd_x;
// y = Shi[i].getPosition().y + SCHRIFTGROESSE_BEI_ZOOM_100 / 2 + nAdd_y - SCHRIFTGROESSE_BEI_ZOOM_100
+ 2;
y = Shi[i].getPosition().y + SCHRIFTGROESSE_BEI_ZOOM_100 / 2 + nAdd_y + 2;
x = x * ((double) nZoom / 100) + nOrigin_x;
y = y * ((double) nZoom / 100) + nOrigin_y;
g2.drawString(Stri, (int) Math.round(x), (int) Math.round(y));
/*
x = Shi[i].getPosition().x + SCHRIFTGROESSE_BEI_ZOOM_100 / 2 + nAdd_x + (z * 2);
y = Shi[i].getPosition().y + SCHRIFTGROESSE_BEI_ZOOM_100 / 2 + nAdd_y + 4;
x = x * ((double) nZoom / 100) + nOrigin_x;
y = y * ((double) nZoom / 100) + nOrigin_y;
g2.drawString(".", (int) Math.round(x), (int) Math.round(y));
*/
// g2.setColor(g2.getColor().brighter());
// }
}
} else {
unselectShip(Shi[i]);
}
}
// Windrose
{
double x;
double y;
double x2;
double y2;
int poly_x[] = new int [3];
int poly_y[] = new int [3];
int nSize = 10;
if(bWindrose == true){
// Pfeil nach oben
g2.setColor(Color.red);
poly_x[0] = nSize / 2;
poly_y[0] = 0;
poly_x[1] = nSize;
poly_y[1] = nSize;
poly_x[2] = 0;
poly_y[2] = nSize;
x = nOrigin_x - nSize * 2;
y = 80;
for(int i=0; i<3;i++){
poly_x[i] += x;
poly_y[i] += y;
// poly_x[i] = (int) (Math.cos(dUserView / GRAD_PI) * poly_x[i] - Math.sin(dUserView / GRAD_PI)
* poly_y[i]);
// poly_y[i] = (int) (Math.sin(dUserView / GRAD_PI) * poly_x[i] + Math.cos(dUserView / GRAD_PI)
* poly_y[i]);
}
g2.fillPolygon(poly_x, poly_y, 3);
// Linie
g2.setColor(Color.orange);
x = nOrigin_x - nSize * 2;
y = 80 + nSize + 1;
x2 = nOrigin_x - nSize * 2 + nSize;
y2 = 80 + nSize + 1;
// x = Math.cos(dUserView / GRAD_PI) * x - Math.sin(dUserView / GRAD_PI) * y;
// y = Math.sin(dUserView / GRAD_PI) * x + Math.cos(dUserView / GRAD_PI) * y;
// x2 = Math.cos(dUserView / GRAD_PI) * x2 - Math.sin(dUserView / GRAD_PI) * y2;
// y2 = Math.sin(dUserView / GRAD_PI) * x2 + Math.cos(dUserView / GRAD_PI) * y2;
g2.drawLine((int) Math.round(x), (int) Math.round(y), (int) Math.round(x2), (int) Math.round(y2));
// Pfeil nach unten
g2.setColor(Color.blue);
poly_x[0] = 0;
poly_y[0] = nSize + 3;
poly_x[1] = nSize;
poly_y[1] = nSize + 3;
poly_x[2] = nSize / 2;
poly_y[2] = nSize + nSize + 3;
x = nOrigin_x - nSize * 2;
y = 80;
for(int i=0; i<3;i++){
poly_x[i] += x;
poly_y[i] += y;
// poly_x[i] = (int) (Math.cos(dUserView / GRAD_PI) * poly_x[i] - Math.sin(dUserView / GRAD_PI)
* poly_y[i]);
// poly_y[i] = (int) (Math.sin(dUserView / GRAD_PI) * poly_x[i] + Math.cos(dUserView / GRAD_PI)
* poly_y[i]);
}
g2.fillPolygon(poly_x, poly_y, 3);
// N und S
g2.setColor(Color.lightGray);
g2.setFont(new Font("Helvetica", Font.PLAIN, SCHRIFTGROESSE_BEI_ZOOM_100 / 2));
// N
x = nOrigin_x - nSize * 2 + nSize / 2;
y = 80;
// x = Math.cos(dUserView / GRAD_PI) * x - Math.sin(dUserView / GRAD_PI) * y;
// y = Math.sin(dUserView / GRAD_PI) * x + Math.cos(dUserView / GRAD_PI) * y;
g2.drawString("N", (int) Math.round(x), (int) Math.round(y));
// S
x = nOrigin_x - nSize * 2 + nSize / 2;
y = 80 + nSize + 8 + nSize;
// x = Math.cos(dUserView / GRAD_PI) * x - Math.sin(dUserView / GRAD_PI) * y;
// y = Math.sin(dUserView / GRAD_PI) * x + Math.cos(dUserView / GRAD_PI) * y;
g2.drawString("S", (int) Math.round(x), (int) Math.round(y));
}
}
// Zeit
{
double x;
double y;
String Stri;
int nSize = 10;
if(bPause == false){
if(nBeat > nBeat_Day){
nBeat = 0;
nDay++;
}
nBeat++;
}
if(bZeit == true){
g2.setColor(Color.red);
g2.setFont(new Font("Helvetica", Font.PLAIN, SCHRIFTGROESSE_BEI_ZOOM_100));
x = nOrigin_x - nSize * 14;
y = 80 + nSize;
Stri = "Tag " + nDay + ", Beats " + nBeat;
g2.drawString(Stri, (int) Math.round(x), (int) Math.round(y));
}
}
/*
// WegErmitteln()
{
int dx1, dy1, xa, ya;
int n, maxn;
int x1, y1, x2, y2;
boolean bWeiter = false;
x1 = 100;
y1 = 100;
x2 = 200;
y2 = 200;
dx1 = x2 - x1;
dy1 = y2 - y1;
maxn = Math.abs(dx1);
if(maxn < Math.abs(dy1)){
maxn = Math.abs(dy1);
}
if(maxn == 0){
maxn = 1;
}
for(n=0;bWeiter == false && n < maxn + 1;n++){
xa = x1 + (dx1 * n) / maxn;
ya = y1 + (dy1 * n) / maxn;
if(xa!=x1 || ya!=y1){
// Position.x = xa;
// Position.y = ya;
bWeiter = true;
}
g2.setColor(Color.orange);
g2.drawRect(xa, ya, 1, 1);
}
} */
// SelectPoint
if(bPause == false){
if(SelectPoint != null){
if(SelectPoint[1].x == 0){
SelectPoint[1].x = SelectPoint[0].x;
}
if(SelectPoint[1].y == 0){
SelectPoint[1].y = SelectPoint[0].y;
}
int nBreite = Math.max(SelectPoint[0].x, SelectPoint[1].x) - Math.min(SelectPoint[0].x, SelectPoint[1].x);
int nHoehe = Math.max(SelectPoint[0].y, SelectPoint[1].y) - Math.min(SelectPoint[0].y, SelectPoint[1].y);
g2.setColor(Color.white);
g2.drawRect(Math.min(SelectPoint[0].x, SelectPoint[1].x), Math.min(SelectPoint[0].y, SelectPoint[1].y),
nBreite, nHoehe);
}
}
// Pause
{
double x;
double y;
if(bPause == true){
// g2.setColor(new Color((int) (Math.random() * 0xFF) / 2 * 10, 0x00, 0x00));
// g2.setColor(new Color(nPauseCounter, 0x00, 0x00));
// g2.setColor(new Color(0x00, 0x00, 0x00));
g2.setColor(Color.red);
/*
if(nPauseCounterRichtung == 1){
nPauseCounter -= 10;
} else if(nPauseCounterRichtung == 0){
nPauseCounter += 10;
}
if(nPauseCounterAlt > 0xFF){
nPauseCounterRichtung = 1;
nPauseCounter = 0xFF;
} else if(nPauseCounterAlt < 0x00){
nPauseCounterRichtung = 0;
nPauseCounter = 0x00;
}
nPauseCounterAlt = nPauseCounter;
*/
g2.setFont(new Font("Helvetica", Font.PLAIN, SCHRIFTGROESSE_BEI_ZOOM_100 * 4));
x = nOrigin_x - (this.getFontMetrics(g2.getFont()).stringWidth("Pause")) / 2 - 0;
y = nOrigin_y + (this.getFontMetrics(g2.getFont()).getHeight()) / 4;
g2.drawString("Pause", (int) Math.round(x), (int) Math.round(y));
}
}
// Karte
if(bKarte == true){
int x = 40;
int y = 80;
{
if(scr2 == null){
scr2 = createImage(nOrigin_x * 2, nOrigin_y * 2);
}
Graphics g3 = scr2.getGraphics();
g3.drawImage(scr, 0, 0, null);
g3.drawImage(scr, x, y, x + 50, y + 50, null);
g3.setColor(Color.red);
g3.drawRect(x, y, x + 50, y + 50);
}
g.drawImage(scr2, 0, 0, null);
} else {
g.drawImage(scr, 0, 0, null);
}
TextFi.setText(nAdd_x + "/" + nAdd_y);
if(Select.isEmpty() == false){
for(int i = 0; i < Select.size(); i++){
if(Select.elementAt(i) instanceof Ship){
Ship Sh;
Sh = (Ship) Select.elementAt(i);
TextAre.setText(Sh.getInfo());
} else if(Select.elementAt(i) instanceof Planet){
Planet Pl;
Pl = (Planet) Select.elementAt(i);
TextAre.setText(Pl.getInfo());
} else if(Select.elementAt(i) instanceof Mine){
Mine Mi;
Mi = (Mine) Select.elementAt(i);
TextAre.setText(Mi.getInfo());
}
}
} else {
TextAre.setText("");
}
}
/*
static public void main(String args[])
{
Welt f;
f = new Welt();
f.show();
th = new Thread(f);
th.start();
}
*/
/*
public void addNotify()
{
// Record the size of the window prior to calling parents addNotify.
Dimension d = getSize();
super.addNotify();
if (fComponentsAdjusted)
return;
// Adjust components according to the insets
setSize(insets().left + insets().right + d.width, insets().top + insets().bottom + d.height);
Component components[] = getComponents();
for (int i = 0; i < components.length; i++)
{
Point p = components[i].getLocation();
p.translate(insets().left, insets().top);
components[i].setLocation(p);
}
fComponentsAdjusted = true;
}
*/
// Used for addNotify check.
// boolean fComponentsAdjusted = false;
//{{DECLARE_CONTROLS
//java.awt.FileDialog openFileDialog1;
//}}
//{{DECLARE_MENUS
/*
java.awt.MenuBar mainMenuBar;
java.awt.Menu menu1;
java.awt.MenuItem miNew;
java.awt.MenuItem miOpen;
java.awt.MenuItem miSave;
java.awt.MenuItem miSaveAs;
java.awt.MenuItem miExit;
java.awt.Menu menu2;
java.awt.MenuItem miCut;
java.awt.MenuItem miCopy;
java.awt.MenuItem miPaste;
java.awt.Menu menu3;
java.awt.MenuItem miAbout;
*/
//}}
void unselectShip(Ship Sh)
{
if(Select.isEmpty() == false){
Select.removeElement(Sh);
/*
for(int i = 0; i < Select.size(); i++){
if(Shi[i] == Sh){
Select.removeElementAt(i);
}
}
*/
}
}
void selectAction()
{
double x;
double y;
double x2;
double y2;
boolean bFind = false;
if(scr != null){
Graphics g2 = scr.getGraphics();
if(bPause == false && bControl == false && SelectPoint != null){
if(SelectPoint[1].x == 0){
SelectPoint[1].x = SelectPoint[0].x;
}
if(SelectPoint[1].y == 0){
SelectPoint[1].y = SelectPoint[0].y;
}
int nBreite = Math.max(SelectPoint[0].x, SelectPoint[1].x) - Math.min(SelectPoint[0].x, SelectPoint[1].x);
int nHoehe = Math.max(SelectPoint[0].y, SelectPoint[1].y) - Math.min(SelectPoint[0].y, SelectPoint[1].y);
x = Math.min(SelectPoint[0].x, SelectPoint[1].x) - nOrigin_x - (int) (nUser_x * ((double) nZoom /
100));
y = Math.min(SelectPoint[0].y, SelectPoint[1].y) - nOrigin_y - (int) (nUser_y * ((double) nZoom /
100));
x2 = x + nBreite;
y2 = y + nHoehe;
Select.removeAllElements();
// Ship selektiert?
for(int i = 0; i < 10; i++){
int nTx = (int) (Shi[i].getPosition().x * ((double) nZoom / 100));
int nTy = (int) (Shi[i].getPosition().y * ((double) nZoom / 100));
if((nTx >= x && nTx <= x2)
&& (nTy >= y && nTy <= y2))
{
if(Shi[i].bInHyperspace == false){
bFind = true;
Select.addElement(Shi[i]);
}
}
}
// Planet selektiert?
for(int i = 0; i < 10; i++){
int nTx = (int) (Pla[i].getPosition().x * ((double) nZoom / 100));
int nTy = (int) (Pla[i].getPosition().y * ((double) nZoom / 100));
if((nTx >= x && nTx <= x2)
&& (nTy >= y && nTy <= y2))
{
bFind = true;
Select.addElement(Pla[i]);
}
}
// Mine selektiert?
for(int i = 0; i < 10; i++){
int nTx = (int) (Min[i].getPosition().x * ((double) nZoom / 100));
int nTy = (int) (Min[i].getPosition().y * ((double) nZoom / 100));
if((nTx >= x && nTx <= x2)
&& (nTy >= y && nTy <= y2))
{
bFind = true;
Select.addElement(Min[i]);
}
}
SelectPoint = null;
bSelectKlicked = true;
}
}
}
void Welt_WindowClosing(java.awt.event.WindowEvent event)
{
hide(); // hide the Frame
dispose(); // free the system resources
System.exit(0); // close the application
}
class SymWindow extends java.awt.event.WindowAdapter
{
public void windowClosing(java.awt.event.WindowEvent event)
{
Object object = event.getSource();
if (object == Welt.this){
Welt_WindowClosing(event);
}
}
}
class SymAction implements java.awt.event.ActionListener
{
public void actionPerformed(java.awt.event.ActionEvent event)
{
Object object = event.getSource();
if (object == boerse){
bPause = true;
(new Boerse(Welt.this, true)).show();
bPause = false;
} else if (object == weltatlas){
bPause = true;
(new Weltatlas(Welt.this, true)).show();
bPause = false;
} else if (object == java_proberties){
bPause = true;
(new JavaProperties(Welt.this, true)).show();
bPause = false;
} else if (object == beenden){
Welt_WindowClosing(null);
} else if (object == Butt){
Welt_WindowClosing(null);
} else if (object == Butt2){
if(bFocusOnSelect == true){
/*
int x = 0;
int y = 0;
if(Select.isEmpty() == false){
for(int i = 0; i < Select.size(); i++){
Ship Sh;
Sh = (Ship) Select.elementAt(i);
Sh.setZiel(new Point((int) Math.round(x), (int) Math.round(y)));
}
}
*/
bFocusOnSelect = false;
Checkbo6.setState(bFocusOnSelect);
nUser_x = 0;
nUser_y = 0;
} else if(bFocusOnSelect == false){
nUser_x = 0;
nUser_y = 0;
}
} else if (object == Butt3){
Choi.select(1);
Schriftgroesse_setzen();
} else if (object == Butt4){
Choi.select(4);
Schriftgroesse_setzen();
} else if (object == Butt5){
int nMax = Choi.getItemCount();
int nNeu = Choi.getSelectedIndex() + 1;
if(nNeu<=nMax){
Choi.select(nNeu);
Schriftgroesse_setzen();
}
} else if (object == Butt6){
int nNeu = Choi.getSelectedIndex() - 1;
if(nNeu>=0){
Choi.select(nNeu);
Schriftgroesse_setzen();
}
} else if (object == Butt7){
if(Select.isEmpty() == false){
for(int i = 0; i < Select.size(); i++){
if(Select.elementAt(i) instanceof Ship){
Ship Sh;
Sh = (Ship) Select.elementAt(i);
Sh.jumpToHyperspace(new Point((int) (Math.random() * 10000), (int) (Math.random() *
10000)));
}
}
}
} else if (object == Butt8){
if(Select.isEmpty() == false){
for(int i = 0; i < Select.size(); i++){
if(Select.elementAt(i) instanceof Ship){
Ship Sh;
Sh = (Ship) Select.elementAt(i);
Sh.nHealthy -= 10;
if(Sh.nHealthy <= 0){
Sh.nHealthy = 100;
}
}
}
}
} else if (object == Butt9){
}
/*
if (object == miOpen)
miOpen_Action(event);
else if (object == miAbout)
miAbout_Action(event);
else if (object == miExit)
miExit_Action(event);
*/
}
}
class SymItem implements java.awt.event.ItemListener
{
public void itemStateChanged(java.awt.event.ItemEvent event)
{
Object object = event.getSource();
if (object == Choi){
Schriftgroesse_setzen();
// } else if (object == Checkbo){
// bSpurenzeichnen = Checkbo.getState();
} else if (object == Checkbo2){
bWindrose = Checkbo2.getState();
} else if (object == Checkbo3){
bZeit = Checkbo3.getState();
} else if (object == Checkbo4){
bKarte = Checkbo4.getState();
} else if (object == Checkbo5){
bGitter = Checkbo5.getState();
} else if (object == Checkbo6){
bFocusOnSelect = Checkbo6.getState();
} else if (object == Checkbo7){
bWeltall = Checkbo7.getState();
} else if (object == pause){
if(bPause == false){
bPause = true;
} else if(bPause == true){
bPause = false;
}
} else if (object == oben){
if(bObere_Infozeile == false){
bObere_Infozeile = true;
} else if(bObere_Infozeile == true){
bObere_Infozeile = false;
}
if(bObere_Infozeile == true){
add("North", PANEL_oben);
} else if(bObere_Infozeile == false){
remove(PANEL_oben);
}
} else if (object == unten){
if(bUntere_Infozeile == false){
bUntere_Infozeile = true;
} else if(bUntere_Infozeile == true){
bUntere_Infozeile = false;
}
if(bUntere_Infozeile == true){
add("South", PANEL_unten);
} else if(bUntere_Infozeile == false){
remove(PANEL_unten);
}
}
}
}
class SymKey implements java.awt.event.KeyListener
{
public void keyPressed(java.awt.event.KeyEvent event)
{
int nAdd_x = 0;
int nAdd_y = 0;
if (event.getKeyCode() == java.awt.event.KeyEvent.VK_LEFT){
nAdd_x += 10;
}
if (event.getKeyCode() == java.awt.event.KeyEvent.VK_RIGHT){
nAdd_x -= 10;
}
if (event.getKeyCode() == java.awt.event.KeyEvent.VK_UP){
nAdd_y += 10;
}
if (event.getKeyCode() == java.awt.event.KeyEvent.VK_DOWN){
nAdd_y -= 10;
}
if(bFocusOnSelect == false){
nUser_x += nAdd_x;
nUser_y += nAdd_y;
} else if(bFocusOnSelect == true){
if(Select.isEmpty() == false){
for(int i = 0; i < Select.size(); i++){
if(Select.elementAt(i) instanceof Ship){
Ship Sh;
Sh = (Ship) Select.elementAt(i);
int x = Sh.getPosition().x - nAdd_x;
int y = Sh.getPosition().y - nAdd_y;
Sh.setZiel(new Point(x, y));
}
}
}
}
if (event.getKeyCode() == java.awt.event.KeyEvent.VK_CONTROL){
bControl = true;
}
/*
if (event.getKeyCode() == java.awt.event.KeyEvent.VK_PAGE_DOWN){
dUserView -= 45;
if(dUserView < 0.0){
dUserView = 359.0;
}
}
if (event.getKeyCode() == java.awt.event.KeyEvent.VK_PAGE_UP){
dUserView += 45;
if(dUserView > 359.0){
dUserView = 0.0;
}
}
*/
}
public void keyReleased(java.awt.event.KeyEvent event)
{
if (event.getKeyCode() == java.awt.event.KeyEvent.VK_PAUSE){
if(bPause == false){
bPause = true;
} else if(bPause == true){
bPause = false;
}
pause.setState(bPause);
}
if(bControl == true){
bControl = false;
}
}
public void keyTyped(java.awt.event.KeyEvent event)
{
}
}
class SymMouse implements java.awt.event.MouseListener
{
/*
Frame1 Origin;
public SymMouse(Frame1 Origin){
this.Origin = Origin;
}
*/
public void mouseClicked(java.awt.event.MouseEvent event)
{
selectAction();
}
public void mouseEntered(java.awt.event.MouseEvent event)
{
selectAction();
}
public void mouseExited(java.awt.event.MouseEvent event)
{
selectAction();
}
public void mousePressed(java.awt.event.MouseEvent event)
{
selectAction();
}
public void mouseReleased(java.awt.event.MouseEvent event)
{
selectAction();
if(event.isPopupTrigger()){
/*
bPause = true;
PopupMe.show(event.getComponent(), event.getX(), event.getY());
// java.awt.event.ProcessMouseEvent(event);
bPause = false;
*/
double x;
double y;
if(bFocusOnSelect == true){
bFocusOnSelect = false;
Checkbo6.setState(bFocusOnSelect);
}
x = event.getPoint().x - nOrigin_x;
x = x - nUser_x * ((double) nZoom / 100);
y = event.getPoint().y - nOrigin_y;
y = y - nUser_y * ((double) nZoom / 100);
x = x * (1 / ((double) nZoom / 100));
y = y * (1 / ((double) nZoom / 100));
nUser_x = (int) Math.round(-x);
nUser_y = (int) Math.round(-y);
} else if(bPause == false){
double x;
double y;
Graphics g2 = scr.getGraphics();
boolean bFind = false;
x = event.getPoint().x - nOrigin_x;
x = x - nUser_x * ((double) nZoom / 100);
y = event.getPoint().y - nOrigin_y;
y = y - nUser_y * ((double) nZoom / 100);
x = x * (1 / ((double) nZoom / 100));
y = y * (1 / ((double) nZoom / 100));
if(bControl == false){ // nur neue Selektion bestimmen
// Ship selektiert?
for(int i = 0; bFind == false && i < 10; i++){
int x2 = - (Welt.this.getFontMetrics(g2.getFont()).stringWidth(Shi[i].getSymbol())) / 2;
int y2 = (Welt.this.getFontMetrics(g2.getFont()).getHeight()) / 2;
x2 *= 2;
y2 *= 2;
if(Shi[i].getPosition().x > (x + x2) && Shi[i].getPosition().x < (x - x2)
&& Shi[i].getPosition().y > (y - y2) && Shi[i].getPosition().y <
(y + y2))
{
if(Shi[i].bInHyperspace == false){
Select.removeAllElements();
bFind = true;
Select.addElement(Shi[i]);
}
}
}
// Planet selektiert?
for(int i = 0; bFind == false && i < 10; i++){
int x2 = (int) (Pla[i].getSize() / 2 * ((double) nZoom / 100));
int y2 = (int) (Pla[i].getSize() / 2 * ((double) nZoom / 100));
//int nTx = (int) (Pla[i].getPosition().x * ((double) nZoom / 100));
//int nTy = (int) (Pla[i].getPosition().y * ((double) nZoom / 100));
int nTx = (int) (Pla[i].getPosition().x * (1 / ((double) nZoom / 100)));
int nTy = (int) (Pla[i].getPosition().y * (1 / ((double) nZoom / 100)));
if((nTx <= (x + x2) && nTx >= (x - x2))
&& (nTy <= (y + y2) && nTy >= (y - y2)))
{
// int nTx = (int) (Pla[i].getPosition().x);
// int nTy = (int) (Pla[i].getPosition().y);
// if(Pla[i].getPosition().x > (x + x2) && Pla[i].getPosition().x < (x - x2)
// && Pla[i].getPosition().y > (y - y2) && Pla[i].getPosition().y
< (y + y2))
// {
Select.removeAllElements();
bFind = true;
Select.addElement(Pla[i]);
}
}
// Mine selektiert?
for(int i = 0; bFind == false && i < 10; i++){
int x2 = - (Welt.this.getFontMetrics(g2.getFont()).stringWidth(Min[i].getSymbol())) / 2;
int y2 = (Welt.this.getFontMetrics(g2.getFont()).getHeight()) / 2;
x2 *= 2;
y2 *= 2;
if(Min[i].getPosition().x > (x + x2) && Min[i].getPosition().x < (x - x2)
&& Min[i].getPosition().y > (y - y2) && Min[i].getPosition().y <
(y + y2))
{
Select.removeAllElements();
bFind = true;
Select.addElement(Min[i]);
}
}
} else if(Select.isEmpty() == false && bControl == true){ // aktuelle Selektion anwenden,
Ziel suchen
Vector ZielSelect = new Vector();
// Ship selektiert?
for(int i = 0; bFind == false && i < 10; i++){
int x2 = - (Welt.this.getFontMetrics(g2.getFont()).stringWidth(Shi[i].getSymbol())) / 2;
int y2 = (Welt.this.getFontMetrics(g2.getFont()).getHeight()) / 2;
x2 *= 2;
y2 *= 2;
if(Shi[i].getPosition().x > (x + x2) && Shi[i].getPosition().x < (x - x2)
&& Shi[i].getPosition().y > (y - y2) && Shi[i].getPosition().y <
(y + y2))
{
if(Shi[i].bInHyperspace == false){
ZielSelect.removeAllElements();
bFind = true;
ZielSelect.addElement(Shi[i]);
}
}
}
// Planet selektiert?
for(int i = 0; bFind == false && i < 10; i++){
int x2 = (int) (Pla[i].getSize() / 2 * ((double) nZoom / 100));
int y2 = (int) (Pla[i].getSize() / 2 * ((double) nZoom / 100));
//int nTx = (int) (Pla[i].getPosition().x * ((double) nZoom / 100));
//int nTy = (int) (Pla[i].getPosition().y * ((double) nZoom / 100));
int nTx = (int) (Pla[i].getPosition().x * (1 / ((double) nZoom / 100)));
int nTy = (int) (Pla[i].getPosition().y * (1 / ((double) nZoom / 100)));
if((nTx <= (x + x2) && nTx >= (x - x2))
&& (nTy <= (y + y2) && nTy >= (y - y2)))
{
// int nTx = (int) (Pla[i].getPosition().x);
// int nTy = (int) (Pla[i].getPosition().y);
// if(Pla[i].getPosition().x > (x + x2) && Pla[i].getPosition().x < (x - x2)
// && Pla[i].getPosition().y > (y - y2) && Pla[i].getPosition().y
< (y + y2))
// {
ZielSelect.removeAllElements();
bFind = true;
ZielSelect.addElement(Pla[i]);
}
}
// Mine selektiert?
for(int i = 0; bFind == false && i < 10; i++){
int x2 = - (Welt.this.getFontMetrics(g2.getFont()).stringWidth(Min[i].getSymbol())) / 2;
int y2 = (Welt.this.getFontMetrics(g2.getFont()).getHeight()) / 2;
x2 *= 2;
y2 *= 2;
if(Min[i].getPosition().x > (x + x2) && Min[i].getPosition().x < (x - x2)
&& Min[i].getPosition().y > (y - y2) && Min[i].getPosition().y <
(y + y2))
{
ZielSelect.removeAllElements();
bFind = true;
ZielSelect.addElement(Min[i]);
}
}
if(ZielSelect.isEmpty() == false){
for(int i = 0; i < ZielSelect.size(); i++){
if(ZielSelect.elementAt(i) instanceof Planet){
Planet Pl;
Pl = (Planet) ZielSelect.elementAt(i);
for(int z = 0; z < Select.size(); z++){
if(Select.elementAt(z) instanceof Ship){
Ship Sh;
Sh = (Ship) Select.elementAt(z);
Sh.setEnterPlanet(Pl);
}
}
}
}
}
}
// Befehl setZiel
if(bControl == false && bFind == false){
if(bSelectKlicked == false){
if(Select.isEmpty() == false){
for(int i = 0; i < Select.size(); i++){
if(Select.elementAt(i) instanceof Ship){
Ship Sh;
Sh = (Ship) Select.elementAt(i);
Sh.setZiel(new Point((int) Math.round(x), (int) Math.round(y)));
} else if(Select.elementAt(i) instanceof Mine){
Mine Mi;
Mi = (Mine) Select.elementAt(i);
Mi.setZiel(new Point((int) Math.round(x), (int) Math.round(y)));
}
}
}
} else if(bSelectKlicked == true){
bSelectKlicked = false;
}
}
}
}
}
class SymMouseMotion implements java.awt.event.MouseMotionListener
{
public void mouseDragged(java.awt.event.MouseEvent event)
{
double x;
double y;
if(bPause == false){
x = event.getPoint().x;
// x = x * ((double) nZoom / 100);
y = event.getPoint().y;
// y = y * ((double) nZoom / 100);
// x = x * (1 / ((double) nZoom / 100));
// y = y * (1 / ((double) nZoom / 100));
if(bSelectKlicked == false){
if(SelectPoint == null){
SelectPoint = new Point[2];
SelectPoint[0] = new Point((int) Math.round(x), (int) Math.round(y));
SelectPoint[1] = new Point((int) Math.round(0), (int) Math.round(0));
} else {
// if(SelectPoint[0].x != 0 && SelectPoint[0].y != 0){
SelectPoint[1] = new Point((int) Math.round(x), (int) Math.round(y));
// } else {
}
} else if(bSelectKlicked == true){
bSelectKlicked = false;
}
}
}
public void mouseMoved(java.awt.event.MouseEvent event)
{
}
}
/*
void miAbout_Action(java.awt.event.ActionEvent event)
{
//{{CONNECTION
// Action from About Create and show as modal
bPause = true;
(new AboutDialog(this, true)).show();
bPause = false;
//}}
}
void miExit_Action(java.awt.event.ActionEvent event)
{
//{{CONNECTION
// Action from Exit Create and show as modal
(new QuitDialog(this, true)).show();
//}}
}
void miOpen_Action(java.awt.event.ActionEvent event)
{
//{{CONNECTION
// Action from Open... Show the OpenFileDialog
openFileDialog1.show();
//}}
}
*/
}