/**
 * Title:        Pommeja taivaalta
 * Description:  Geneerinen räiskintäpeli Javalla
 * Copyright:    Copyright (c) 2003
 *
 * @author Juho Makkonen
 * @version 1.0
 */


import java.awt.Dimension;
import java.awt.Toolkit;
import java.io.File;
import javax.swing.JDialog;
import javax.swing.JEditorPane;
import javax.swing.JPanel;


/**
 * Luokka <code>Ohjekehys</code> on komponentin
 * <code>JDialog</code> laajennus. Luokan olio
 * on ikkuna, joss näkyvät pelin ohjeet.
 */
public class Ohjekehys extends JDialog {

    /** Komponentti, johon teksti tulee. */
    private JEditorPane tekstinnayttaja;


    /**
     * Luo uuden ohjekehyksen.
     */
    public Ohjekehys() {

	// Ikkunan otsikko.
	this.setTitle("Peliohjeet");

	// Muita ikkunoita ei voi käyttää, ennen
	// kuin sulkee tämän ikkunan.
	this.setModal(true);

	// Alustetaan tekstikomponentti. Luokan
	// <code>JEditorPane</code> olio osaa
	// lukea html-koodia.
	tekstinnayttaja = new JEditorPane();

	// Asetetaan sisällön tyypiksi html.
	tekstinnayttaja.setContentType("text/html");

	// Pelaaja ei saa editoida tekstiä.
	tekstinnayttaja.setEditable(false);

	
	// Tätä ratkaisua en saanut toimimaan:
	//
	// String ohjeet = ("file:"+System.getProperty("user.dir")
	//  + File.separator + "ohjeet.html");
	// tekstinnayttaja.setText(ohjeet);
	//
	// Siksi urakka piti tehdä "käsin", eli kirjoittaa tagit
	// suoraan koodiin.
	tekstinnayttaja.setText("<html><head></head><body bgcolor = #00FFFF´>"
				+ "<center><h1>Pommeja taivaalta - peliohjeet</h1></center><blockquote>"
				+ "Pelin idea on yksinkertainen. Pelaajan pitää suojella ruudun alareunassa näkyvää"
				+ " kaupunkia, jota uhkaavat taivaalta tippuvat pommit.<p>"
				+ "Pommien tuhoamista varten pelaajalla on käytössään viimeisen teknologian mukainen"
				+ " sähkömagneettisia pulsseja lähettävä antenni. Antennin toimintaa ohjataan hiirellä."
				+ " Kun pelaaja klikkaa jotakin kohtaa ruudulla, antenni laukaisee pulssin, joka kysei"
				+ "seen pisteeseen ehdittyään tuhoaa kaikki pommit vaikutusalueellaan. Vaikutusaluetta"
				+ " ilmaisee ruudulle piirtyvä punainen ympyrä. Kannattaa huomata, että pulssin laukea"
				+ "minen kestää sitä kauemmin, mitä kauempana klikattava piste on antennista. Lisäksi"
				+ " antenni joutuu latautumaan jokaisen laukauksen jälkeen hetken, ennen kuin se pystyy"
				+ " laukaisemaan uuden pulssin. Uusi pulssi on laukaisuvalmis siinä vaiheessa, kun "
				+ " edellinen katoaa ruudulta.<p>"
				+ "Pommien tulokulma ja -vauhti määräytyvät satunnaisesti. Pommit osaavat korjata"
				+ " suuntaansa automaattisesti, jos ne havaitsevat olevansa menossa ohi kohteensa. Pom"
				+ "meja sataa taivaalta jatkuvasti kiihtyvässä tahdissa, kunnes lopulta pelaaja ei eh"
				+ "di enää tuhota niitä kaikkia. Peli päättyy, kun viisi pommia on pudonnut kaupunkiin."
				+ " Pelaajan pisteet määräytyvät sen mukaan, kuinka monta pommia hän on tuhonnut. Jo"
				+ "kaisesta tuhotusta pommista saa 10 pistettä. Jos samalla laukauksella onnistuu tu"
				+ "hoamaan useampia pommeja, kerrotaan näistä pommeista saadut pisteet pommien määräl"
				+ "lä. Siis jos samalla laukauksella tuhoaa kaksi pommia, saa pisteitä 10 x 2 x 2 eli"
				+ " 40, jos taas kolme, pisteitä kertyy 10 x 3 x 3 = 90. Kannattaa myös ampua tarkas"
				+ "ti, sillä jokaisesta ohilaukauksesta sakotetaan 5 pistettä.<p>"
				+ "Jos paniikki iskee, voi pelaaja laukausta voimakkaan ydinlatauksen, joka tuhoaa"
                                + " kaikki ruudulla näkyvät pommit. Ydinlataus laukaistaan painamalla välilyöntiä. Tätä"
				+ " konstia kannattaa kuitenkin käyttää harkiten, sillä ydinlatauksia on mahdollista"
				+ " laukaista vain kaksi peliä kohden. Lisäksi moisesta ekologisesta piittaamattomuu"
				+ "desta sakotetaan 50 pistettä, eikä pelaaja myöskään saa pisteitä ydinlatauksen tu"
				+ "hoamista pommeista, eikä näitä pommeja lisätä tuhottuihin pommeihin."
			 	+ "</body></html>"  );

	// Asetetaan tekstikomponenti suosituskoko.
	Dimension d = new Dimension(575,675);
	tekstinnayttaja.setPreferredSize(d);
	
	// Asetetaan ikkunan koko samaksi kuin tekstikomponentin koko.
	this.setSize(d);

	// Sijoitetaan ikkuna keskelle näyttöä.
	Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
	this.setLocation((dim.width - getSize().width) / 2,
			 (dim.height - getSize().height) / 2);

	// Lisätään tekstikomponentti ikkunaan.
	this.getContentPane().add(tekstinnayttaja);
	
	// Laitetaan ikkunan koko vastaamaan tekstikomponentin kokoa.
	pack();

    }

}

