home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Internet 1996 World Exposition
/
park.org.s3.amazonaws.com.7z
/
park.org.s3.amazonaws.com
/
Japan
/
Public
/
Hiroshima
/
java
/
Itsukushima.java
< prev
next >
Encoding:
Amiga
Atari
Commodore
DOS
FM Towns/JPY
Macintosh
Macintosh JP
NeXTSTEP
RISC OS
UTF-8
Wrap
Java Source
|
2017-09-21
|
30.4 KB
|
1,143 lines
/*----------------------------------------------------------------------------
*
* Itsukushima.java 1.00 96/02/19 S.Nakagawa
*
* Copyright (c) 1996 KOTOBUKI SYSTEM CO.,LTD. All Rights Reserved.
*
* ï@ö\ : âuâëâEâUü[Åπé╔ò╜û╩É}â}âbâvé≡ò\Īé╖éΘüB
* âTâuâEâBâôâhâEé╔î╡ôçÉ_Ä╨é╠ë±ÿLòαìsâCâüü[âWé≡ò\Īé╖éΘüB
*
* âpâëâüü[â^ : map â}âbâvâtâ@âCâïû╝é≡ÄwÆΦé╖éΘüB
*
* Ägùpùß : <APPLET CODES="Sample.class" WIDTH=320 HEIGHT=240>
* <PARAM NAME=MAP VALUE="MAP.GIF">
* </APPLET>
---------------------------------------------------------------------------*/
import java.applet.Applet;
import java.applet.AudioClip;
import java.awt.Font;
import java.awt.Image;
import java.awt.Color;
import java.awt.Event;
import java.awt.Panel;
import java.awt.Window;
import java.awt.Frame;
import java.awt.Button;
import java.awt.Canvas;
import java.awt.Polygon;
import java.awt.Graphics;
import java.awt.Dimension;
import java.awt.Component;
import java.awt.Rectangle;
import java.awt.FontMetrics;
import java.awt.BorderLayout;
import java.awt.MediaTracker;
import java.util.StringTokenizer;
import java.lang.Math;
import java.io.InputStream;
import java.io.DataInputStream;
import java.net.URL;
import java.net.MalformedURLException;
/*----------------------------------------------------------------------------
* Itsukushima Class.
*
* ì∞ɼÄ╥ : S.nakagawa
* Version : 1.00 96/01/23
---------------------------------------------------------------------------*/
public
class Itsukushima extends Applet implements Runnable
{
/* âfâoâbâOùp */
boolean DEBUG = false; /* âfâoâbâOâtâëâO */
/* î┼ÆΦò╧Éö */
final int YES = 1; /* é═éó */
final int NO = 2; /* éóéóéª */
final int TICKET = 4; /* â`âPâbâgìwôⁿ */
final int START = 8; /* ë±ÿLé╓Éié▐ */
final int MONEY = 16; /* ÄQöq */
final int OMIKUJI = 32; /* îΣÉ_Γ▄ */
final int BACK = 64; /* û▀éΘ */
final int NEXT = 128; /* ăé╓Éié▐ */
final int BUTAI = 256; /* ò╜òææΣé╓ */
final int EXIT = 512; /* Åoî√é╓ */
final int LEFT = 1024; /* ì╢é≡î⌐éΘ */
final int RIGHT = 2048; /* ëEé≡î⌐éΘ */
final int HITASAKI = 4096; /* ë╬Å─ɵé╓Éié▐ */
final int HONSYA = 8192; /* û{Ä╨û{ôaé╓Éié▐ */
final int MORE = 16384; /* éαéñêΩôx */
/* âvâìâZâXüAâXâîâbâhè╓ÿA */
Thread engine = null; /* âXâîâbâhÅεò± */
boolean threadSuspended = false; /* âXâîâbâhÆΓÄ~âtâëâO */
int errorCode = 0; /* âGâëü[âRü[âh */
boolean evtStatus = false; /* âCâxâôâgö¡É╢âtâëâO */
boolean startFaq = true; /* èJÄnâCâxâôâg */
boolean noStart = false; /* èJÄnö█âtâëâO */
boolean omikujiFlag = false; /* îΣÉ_Γ▄âtâëâO */
boolean nowLoading = false; /* âìü[âfâBâôâOÆåâtâëâO */
boolean arrowFlag = false; /* ûεê≤é╠ùßèOÅêù¥ */
boolean preArrow = false; /* ûεê≤é╠ùßèOÅêù¥ */
/* âIâtâXâNâèü[âôù╠êµ */
Graphics offScrGraph = null; /* âCâüü[âWüEâRâôâeâLâXâg */
Image offScrImage = null; /* âCâüü[âWÅεò± */
/* â}âbâvâtâ@âCâïè╓ÿA */
String mapFile = null; /* â}âbâvâtâ@âCâïû╝ */
Image mapImage = null; /* â}âbâvâCâüü[âWÅεò± */
/* âIü[âfâBâI */
AudioClip mainBgm = null; /* âüâCâôBGM */
AudioClip evtBgm = null; /* âCâxâôâgBGM */
boolean bgmFound = false; /* BGM ùLî° */
boolean bgmStop = false; /* BGM ÆΓÄ~ */
int bgmSleep = 0; /* BGM æ╥òbÉö */
/* âüâCâôâtâîü[âÇ */
Frame mainFrame = null; /* âüâCâôâtâîü[âÇ */
Panel mainPanel = null; /* âüâCâôâpâlâï */
ImageCanvas mainCanvas = null; /* âLâââôâpâX */
/* âTâuâtâîü[âÇ */
EventFrame evtFrame = null; /* âCâxâôâgâtâîü[âÇ */
/* âCâüü[âWâtâ@âCâïè╓ÿA */
int imgTable = 0; /* î╗ì▌é╠âeü[âuâïö╘ìå */
int imgSlot = 0; /* î╗ì▌é╠âXâìâbâgö╘ìå */
int preSlot = 0; /* Æ╝æOé╠âXâìâbâgö╘ìå */
int maxImage = 0; /* âCâüü[âWâeü[âuâïÆåé╠ì┼æσÉö */
int maxTable = 0; /* âCâüü[âWâeü[âuâïÉö */
int initTable = 0; /* ì┼Åëé╠âeü[âuâïö╘ìå */
int initSlot = 0; /* ì┼Åëé╠âXâìâbâgö╘ìå */
int maxSlot[] = null; /* âCâüü[âWÉö */
Image imgs[] = null; /* âCâüü[âWÅεò± */
MediaTracker mt = null; /* âüâfâBâAüEâgâëâbâJü[ */
String photoPath = null; /* Ä╩É^èiö[âpâX */
String boardPath = null; /* Éαû╛ò╢èiö[âpâX */
String bgmPath = null; /* î°ë╩ë╣èiö[âpâX */
String buttonPath = null; /* â{â^âôèiö[âpâX */
/* âCâxâôâgÅεò± */
int eventNo[] = null; /* âCâxâôâgö╘ìå */
int xPos[] = null; /* â}âbâvÅπé╠ê╩Æu( x ) */
int yPos[] = null; /* â}âbâvÅπé╠ê╩Æu( y ) */
int xSize[] = null; /* â}âbâvÅπé╠ò¥ */
int ySize[] = null; /* â}âbâvÅπé╠ìéé│ */
int arrowType[] = null; /* ûεê≤é╠îⁿé½ */
boolean loadMsg = true; /* âìü[âhâüâbâZü[âWò\ĪùLû│ */
/*------------------------------------------------------------------------
* Åëè·Åêù¥
* <PARAM NAME=....>éµéΦôné│éΩé╜âpâëâüü[â^é≡ĵô╛é╖éΘ
-----------------------------------------------------------------------*/
public void init()
{
if ( DEBUG ) nowMemory( "init" );
/* â}âbâvâtâ@âCâï */
mapFile = getParameter( "map" );
if ( mapFile == null ) errorCode = 1;
/* âCâüü[âWâtâ@âCâïÉöïyé╤ì┼æσâCâüü[âWÉö */
maxTable = 1;
while ( true )
{
String at = getParameter( "table" + maxTable );
if ( at == null ) break;
int keyEnd = at.indexOf( "," );
String tableFile = at.substring( 0, keyEnd );
StringTokenizer st = new StringTokenizer( at.substring( keyEnd + 1 ), "," );
maxImage = Math.max( maxImage, Integer.valueOf( st.nextToken() ).intValue() );
maxTable++;
}
maxTable--;
/* èJÄnâeü[âuâï */
String at = getParameter( "table" );
initTable = ( at != null ) ? Integer.valueOf(at).intValue() : 0;
/* èJÄnâXâìâbâg */
at = getParameter( "slot" );
initSlot = ( at != null ) ? Integer.valueOf(at).intValue() : 0;
/* Ä╩É^èiö[âpâX */
photoPath = getParameter( "photo" );
/* Éαû╛ò╢èiö[âpâX */
boardPath = getParameter( "board" );
/* Éαû╛ò╢èiö[âpâX */
bgmPath = getParameter( "bgm" );
/* â{â^âôèiö[âpâX */
buttonPath = getParameter( "button" );
/* âìü[âhé≡É▌ÆΦé╖éΘ */
nowLoading = true;
}
/*------------------------------------------------------------------------
* âCâüü[âWé≡âCâüü[âWâeü[âuâïé╔âìü[âhé╡é╜îπüAò\Īé≡èJÄné╖éΘüB
-----------------------------------------------------------------------*/
public void run()
{
if ( DEBUG ) nowMemory( "run" );
/* âGâëü[âRü[âhé¬ 0 ê╚èOé╚éτé╬Åêù¥é╡é╚éó */
if ( errorCode != 0 )
{
if ( errorCode == 1 )
{
showStatus( "\"map\" parameter not appoint" );
return ;
}
}
/* âCâüü[âWâeü[âuâïÉöé¬ 0 é╚éτé╬Åêù¥é╡é╚éó */
if ( maxTable == 0 )
{
showStatus( "\"table\" parameter not appoint" );
return ;
}
/* î╗âXâîâbâhé╠ùDɵÅçê╩é≡É▌ÆΦé╖éΘ */
Thread.currentThread().setPriority( Thread.MIN_PRIORITY );
/* âîâCâAâEâgé≡É▌ÆΦé╖éΘ */
setLayout( new BorderLayout() );
/* èJÄné╖éΘé⌐ö█é⌐é≡æIæ≡é╖éΘ */
startFaq = true;
eventSub( "START", null, null, "faq-init.gif", null, YES + NO );
/* æIæ≡é│éΩéΘé╠é≡æ╥é┬ */
while ( startFaq == true )
{
try {
Thread.sleep( 100 );
} catch ( InterruptedException e ) {
return ;
}
}
/* "NO"é¬æIæ≡é│éΩé╜ÅΩìçüAÅêù¥é≡ÅIù╣é╖éΘ */
if ( noStart == true )
{
return ;
}
/* â}âbâvâtâ@âCâïé≡âìü[âhé╖éΘ */
mapImage = getImage( getDocumentBase(), mapFile );
/* âCâüü[âWé¬ null é╚éτé╬Åêù¥é╡é╚éó */
if ( mapImage == null )
{
showStatus( "map not found \"" + mapFile + "\"" );
return ;
}
/* âüâfâBâAüEâgâëâbâJü[é≡ì∞ɼé╖éΘ */
mt = new MediaTracker( this );
/* âìü[âhé╠ÅIù╣é≡æ╥é┬ */
mt.addImage( mapImage, 0 );
try {
showStatus( "loading : " + mapFile );
mt.waitForID( 0 );
} catch ( InterruptedException e ) {
return ;
}
/* ù╠êµé≡èmò█é╖éΘ */
maxSlot = new int[maxTable];
/* âCâüü[âWé≡Åëè·âìü[âhé╖éΘ */
imgTable = initTable;
nowLoading = true;
if ( loadImage() == false ) return ;
/* âCâüü[âWö╘ìåé≡Åëè·ë╗é╖éΘ */
imgSlot = initSlot;
/* âìü[âhé≡ÅIù╣é╖éΘ */
nowLoading = false;
/* âüâCâôâtâîü[âÇé≡ì∞ɼé╖éΘ */
mainFrame = new Frame( "ITSUKUSHIMA" );
add( mainFrame );
mainFrame.setLayout( new BorderLayout() );
/* âpâlâïé≡ì∞ɼé╖éΘ */
mainPanel = new Panel();
/* âLâââôâpâXé≡ì∞ɼé╖éΘ */
mainCanvas = new ImageCanvas( imgs[imgSlot] );
/* âLâââôâpâXé≡âpâlâïé╔ô\éΦòté»éΘ */
mainPanel.add( mainCanvas );
/* âpâlâïé≡âtâîü[âÇé╔ô\éΦòté»éΘ */
mainFrame.add( "North", mainPanel );
/* âtâîü[âÇé≡ò\Īé╖éΘ */
mainFrame.pack();
mainFrame.move( 0, 0 );
mainFrame.show();
/* ò`ëµâXâîâbâhÅIù╣âgâèâKü[é¬É▌ÆΦé│éΩé─éóé╚éóÅΩìçé╔âïü[âvé╖éΘ */
while ( engine != null )
{
/* âCâüü[âWé≡âìü[âhé╖éΘ */
if ( nowLoading == true )
{
loadImage();
nowLoading = false;
loadMsg = true;
}
/* âCâüü[âWé≡ò\Īé╖éΘ */
if ( preSlot != imgSlot || preArrow != arrowFlag )
{
repaint();
preArrow = arrowFlag;
}
/* âCâxâôâgö¡É╢Æåé═Åêù¥é╡é╚éó */
if ( evtStatus == false )
{
int evtNo; /* âCâxâôâgö╘ìå */
evtNo = eventNo[imgSlot];
/* âCâxâôâgö╘ìåé¬ 0 ê╚èOé╠ÅΩìçüAâCâxâôâgé≡ö¡É╢é╖éΘ */
if ( evtNo != 0 )
{
switch ( evtNo )
{
/* ôîë⌠ÿLüEôⁿî√ */
case 1: eventSub( "EXTRANCE", "tt-a.gif", "a.gif", "exp-a.gif", null, TICKET );
break;
/* ïqÉ_Ä╨üEöqôaæO */
case 2: eventSub( "HAIDEN", null, null, "faq-b.gif", null, YES + NO );
break;
/* ï╛é╠Ær */
case 3: eventSub( "KAGAMI-NO-IKE", null, null, "faq-c.gif", null, YES + NO );
break;
/* ôîë⌠ÿLüEæσÆ╣ïÅ */
case 4: eventSub( "OH-TORII", null, null, "faq-di.gif", null, YES + NO );
break;
/* ôîë⌠ÿL -> û{Ä╨û{ôa */
case 5: eventSub( "MESSAGE", null, null, "exp-e.gif", null, NEXT );
break;
/* û{Ä╨û{ôaüEöqôaæO */
case 6: eventSub( "HAIDEN", null, null, "faq-f.gif", null, YES + NO );
break;
/* ò╜òææΣüEÉ╝ë⌠ÿLò¬è≥ô_ */
case 7: eventSub( "BRANCH", null, null, "faq-g.gif", null, BUTAI + EXIT );
break;
/* ò╜òææΣüEÆåë¢ */
case 8: eventSub( "HIRA-BUTAII", null, null, "exp-h.gif", null,
LEFT + RIGHT + HITASAKI + HONSYA );
break;
/* ë╬Å─æOüEɵÆ[ */
case 9: eventSub( "OH-TORII", null, null, "faq-di.gif", null, YES + NO );
break;
/* É╝ë⌠ÿLüEö\òææΣ */
case 10: eventSub( "NOU-BUTAI", null, null, "faq-l.gif", null, YES + NO );
break;
/* É╝ë⌠ÿLüEÅoî√ */
case 11: eventSub( "EXIT", null, null, "exp-o.gif", null, MORE );
break;
/* ò╜òææΣ -> û{Ä╨û{ôa */
case 12: nowLoading = true;
loadMsg = false;
imgTable = 2;
imgSlot = 0;
evtNo = 0;
break;
/* ë╬Å─æO -> ò╜òææΣ */
case 13: imgSlot = 50;
evtNo = 0;
break;
default: break;
}
/* âCâxâôâgö¡É╢âtâëâOé≡É▌ÆΦé╖éΘ */
if ( evtNo != 0 ) evtStatus = true;
}
else
{
if ( preSlot == imgSlot ) imgSlot++;
}
}
/* âXâîâbâhé≡ïxÄ~é╖éΘüB */
try {
Thread.sleep( 1000 );
} catch ( InterruptedException e ) {
break;
}
/* âüâCâôBGMé≡èJÄné╖éΘ */
if ( bgmFound == true && ( bgmStop == true || bgmSleep > 0 ) )
{
if ( --bgmSleep <= 0 )
{
mainBgm.loop();
bgmStop = false;
}
}
}
/* âìü[âhé≡É▌ÆΦé╖éΘ */
nowLoading = true;
}
/*------------------------------------------------------------------------
* âCâüü[âWé≡âìü[âhé╖éΘüB
-----------------------------------------------------------------------*/
boolean loadImage()
{
/* image âpâëâüü[â^é╔ïLÅqé│éΩé─éóéΘÅεò±é≡ĵô╛é╖éΘ */
int imgLoad = imgTable + 1;
String at = getParameter( "table" + imgLoad );
/* âCâüü[âWâeü[âuâïâtâ@âCâïû╝é≡ĵô╛é╖éΘ */
int keyEnd = at.indexOf( "," );
String tableFile = at.substring( 0, keyEnd );
/* âtâHü[â}âbâgòté½é╠ò╢ÄÜù±é≡ì∞ɼé╖éΘ */
StringTokenizer st = new StringTokenizer( at.substring( keyEnd + 1 ), "," );
/* âCâüü[âWÉöé≡ĵô╛é╖éΘ */
maxSlot[imgTable] = Integer.valueOf( st.nextToken() ).intValue();
/* âCâüü[âWù╠êµé≡èmò█é╖éΘ */
if ( imgs == null )
{
eventNo = new int[maxImage];
xPos = new int[maxImage];
yPos = new int[maxImage];
xSize = new int[maxImage];
ySize = new int[maxImage];
arrowType = new int[maxImage];
imgs = new Image[maxImage];
}
/* âCâüü[âWâeü[âuâïâtâ@âCâïé≡âIü[âvâôé╖éΘ */
showStatus( "open table file : " + tableFile );
InputStream is;
try {
is = new URL( getDocumentBase(), tableFile ).openStream();
} catch ( Exception e ) {
return false;
}
/* âCâüü[âWâeü[âuâïâtâ@âCâïé¬âIü[âvâôÅoùêé╚éóÅΩìçüAâvâìâZâXé≡ÆåÆfé╖éΘ */
if ( is == null ) return false;
/* âXâgâèü[âÇé≡ë₧ùpé╠ùÿé¡î`é╔ò╧éªéΘ */
DataInputStream ds = new DataInputStream( is );
/* âtâ@âCâïé╠ɵô¬é╔éáéΘâRâüâôâgìsïyé╤ï≤öÆìsé≡ô╟é▌ö≥é╬é╖ */
String lineBuffer;
imgSlot = 0;
while ( true )
{
/* éPìsé≡ô╟é▌ì₧é▐ */
try {
lineBuffer = ds.readLine();
} catch ( Exception e ) {
try {
is.close();
} catch ( Exception e2 ) {
return false;
};
return false;
}
/* EOFé╚éτé╬âïü[âvé≡ö▓é»éΘ */
if ( lineBuffer == null ) break;
/* âRâüâôâgìsûöé═ï≤öÆìsé═ô╟é▌ö≥é╬é╖ */
if ( lineBuffer.length() == 0 || lineBuffer.charAt( 0 ) == '#' ) continue;
/* ÆåÆfFé╚éτé╬âïü[âvé≡ö▓é»éΘ */
if ( lineBuffer.charAt( 0 ) == '!' ) break;
/* âCâôâfâbâNâXé¬ maxSlot é≡Æ┤éªé╜ÅΩìçüAâïü[âvé≡ö▓é»éΘ */
if ( imgSlot == maxSlot[imgTable] ) break;
/* âCâüü[âWâtâ@âCâïû╝é≡ĵô╛é╖éΘ */
keyEnd = lineBuffer.indexOf( "," );
String imgFile = lineBuffer.substring( 0, keyEnd );
/* âtâHü[â}âbâgòté½é╠ò╢ÄÜù±é≡ì∞ɼé╖éΘ */
st = new StringTokenizer( lineBuffer.substring( keyEnd + 1 ), "," );
/* â}âbâvÅπé╠ì└òWüAâTâCâYé≡ĵô╛é╖éΘ */
eventNo[imgSlot] = Integer.valueOf( st.nextToken() ).intValue();
xPos[imgSlot] = Integer.valueOf( st.nextToken() ).intValue();
yPos[imgSlot] = Integer.valueOf( st.nextToken() ).intValue();
xSize[imgSlot] = Integer.valueOf( st.nextToken() ).intValue();
ySize[imgSlot] = Integer.valueOf( st.nextToken() ).intValue();
arrowType[imgSlot] = Integer.valueOf( st.nextToken() ).intValue();
/* âCâüü[âWâtâ@âCâïé≡âìü[âhé╖éΘ */
imgs[imgSlot] = getImage( getDocumentBase(), imgFile );
mt.addImage( imgs[imgSlot], imgSlot );
/* âCâüü[âWé╠âìü[âhé≡æ╥é┬ */
try {
repaint();
if ( loadMsg == true ) showStatus( "loading : " + imgFile );
mt.waitForID( imgSlot );
} catch ( InterruptedException e ) {
return false;
}
/* âCâôâfâbâNâXé≡ìXÉVé╖éΘ */
imgSlot++;
}
/* âCâüü[âWÉöé≡ìXÉVé╖éΘ */
maxSlot[imgTable] = imgSlot;
/* âCâüü[âWö╘ìåé≡Åëè·ë╗é╖éΘ */
imgSlot = 0;
/* âCâüü[âWâeü[âuâïâtâ@âCâïé≡âNâìü[âYé╖éΘ */
try {
is.close();
} catch ( Exception e ) {
return false;
};
/* âKâxü[âWâRâîâNâVâçâôé≡ïNô«é╖éΘ */
System.gc();
if ( DEBUG ) nowMemory( "gc" );
return true;
}
/*------------------------------------------------------------------------
* âCâxâôâgé╠âtâîü[âÇÅêù¥é≡é╖éΘ
-----------------------------------------------------------------------*/
void eventSub( String frameName, String title, String photo, String board, String audio, int button )
{
/* âtâîü[âÇé≡ì∞ɼé╖éΘ */
evtFrame = new EventFrame( frameName, boardPath, photoPath, buttonPath,
title, photo, board, button, this );
/* âtâîü[âÇé≡Æ╟ë┴é╖éΘ */
add( evtFrame );
/* âTâCâYé≡É▌ÆΦé╖éΘ */
evtFrame.resize( evtFrame.width + 8, evtFrame.height + 30 + 23 );
/* âtâîü[âÇé≡ò\Īé╖éΘ */
if ( startFaq == true ) evtFrame.move( 0, 0 );
else evtFrame.move( mainFrame.size().width, 0 );
evtFrame.show();
/* âCâxâôâgî°ë╩ë╣é≡ĵô╛é╖éΘ */
if ( audio != null )
{
try {
evtBgm = getAudioClip( getCodeBase(), bgmPath + "/" + audio );
} catch ( OutOfMemoryError e ) {
System.out.println( "Itsukushima.class : catch OutOfMemoryError" );
showStatus( "Itsukushima.class : catch OutOfMemoryError" );
evtBgm = null;
}
}
else
{
evtBgm = null;
}
}
/*------------------------------------------------------------------------
* âCâxâôâgé╠âtâîü[âÇé≡Å┴ïÄé╖éΘüB
-----------------------------------------------------------------------*/
void eventFrameHide()
{
/* âtâHü[âJâXé≡ô╛éΘ */
requestFocus();
/* âtâîü[âÇé≡Å┴ïÄé╖éΘé╖éΘé╞ô»Ä₧é╔ù╠êµé≡Åëè·ë╗é╖éΘ */
evtFrame.hide();
evtFrame.removeAll();
remove( evtFrame );
evtFrame.dispose();
/* âKâxü[âWâRâîâNâVâçâôé≡ïNô«é╖éΘ */
System.gc();
if ( DEBUG ) nowMemory( "gc" );
}
/*------------------------------------------------------------------------
* èeâ{â^âôé╔æ╬ë₧é╖éΘÅêù¥é≡ìséñüB
-----------------------------------------------------------------------*/
public boolean action( Event ev, Object arg )
{
int evtNo = 0; /* âCâxâôâgö╘ìå */
/* âCâxâôâgö╘ìåé≡É▌ÆΦé╖éΘ */
if ( eventNo != null ) evtNo = eventNo[imgSlot];
/* â{â^âôüEâCâxâôâgé╠Åêù¥ */
if ( ev.target instanceof Button )
{
String label = (String)arg;
/* â`âPâbâgìwôⁿ */
if ( label.equals( "TICKET" ) )
{
/* âtâîü[âÇé≡Å┴ïÄé╖éΘ */
eventFrameHide();
/* â`âPâbâgìwôⁿâCâxâôâgé╓ */
eventSub( "TICKET", "tt-tick.gif", "ticket.gif", "exp-tick.gif", null, START );
}
/* ë⌠ÿLé╓Éié▐ */
else if ( label.equals( "START" ) )
{
/* âtâîü[âÇé≡Å┴ïÄé╖éΘ */
eventFrameHide();
/* âCâxâôâgö¡É╢âtâëâOé≡Åëè·ë╗é╖éΘ */
evtStatus = false;
/* âCâôâfâbâNâXé≡Éié▀éΘ */
imgSlot++;
}
/* û▀éΘ */
else if ( label.equals( "BACK" ) )
{
/* âtâîü[âÇé≡Å┴ïÄé╖éΘ */
eventFrameHide();
/* îΣÉ_Γ▄é⌐éτû▀éΘÅΩìç */
if ( omikujiFlag == true )
{
/* û{Ä╨û{ôaüEöqôaæOâCâxâôâgé╓ */
eventSub( "HAIDEN", "tt-f.gif", "f.gif", "exp-f.gif", "coin.au", MONEY + OMIKUJI + BACK );
arrowFlag = true;
omikujiFlag = false;
}
/* é╗é╠æ╝é╠ÅΩìç */
else
{
/* âCâxâôâgö¡É╢âtâëâOé≡Åëè·ë╗é╖éΘ */
arrowFlag = false;
evtStatus = false;
}
}
/* ăé╓Éié▐ */
else if ( label.equals( "NEXT" ) )
{
/* âtâîü[âÇé≡Å┴ïÄé╖éΘ */
eventFrameHide();
/* û{Ä╨û{ôaâCâüü[âWé╠âìü[âhÅÇö⌡é≡é╖éΘ */
nowLoading = true;
imgTable = 2;
imgSlot = 0;
evtStatus = false;
}
/* ÄQöq */
else if ( label.equals( "MONEY" ) )
{
bgmStop = true;
bgmSleep = 3;
mainBgm.stop();
if ( evtBgm != null ) evtBgm.play();
}
/* é¿é▌é¡é╢ */
else if ( label.equals( "OMIKUJI" ) )
{
/* âtâîü[âÇé≡Å┴ïÄé╖éΘ */
eventFrameHide();
/* ùÉÉöé╔éµéΦîΣÉ_Γ▄é≡ò╧éªéΘ */
switch ( (int)( ( Math.random() * 10 ) % 3 ) )
{
/* æσïg */
case 0: eventSub( "OMIKUJI", null, null, "exp-o1.gif", null, BACK );
break;
/* Æåïg */
case 1: eventSub( "OMIKUJI", null, null, "exp-o2.gif", null, BACK );
break;
/* żïg */
case 2: eventSub( "OMIKUJI", null, null, "exp-o3.gif", null, BACK );
break;
}
/* îΣÉ_Γ▄âtâëâOé≡É▌ÆΦé╖éΘ */
omikujiFlag = true;
}
/* ò╜òææΣé╓Éié▐ */
else if ( label.equals( "BUTAI" ) )
{
/* âtâîü[âÇé≡Å┴ïÄé╖éΘ */
eventFrameHide();
/* ò╜òææΣâCâüü[âWé╠âìü[âhÅÇö⌡é≡é╖éΘ */
nowLoading = true;
imgTable = 3;
imgSlot = 0;
evtStatus = false;
}
/* Åoî√é╓Éié▐ */
else if ( label.equals( "EXIT" ) )
{
/* âtâîü[âÇé≡Å┴ïÄé╖éΘ */
eventFrameHide();
/* É╝ë⌠ÿLâCâüü[âWé╠âìü[âhÅÇö⌡é≡é╖éΘ */
nowLoading = true;
imgTable = 1;
imgSlot = 0;
evtStatus = false;
}
/* ì╢é≡î⌐éΘ */
else if ( label.equals( "LEFT" ) )
{
switch ( imgSlot )
{
case 17: imgSlot = 55; break;
case 49: imgSlot = 17; break;
default: imgSlot--; break;
}
}
/* ëEé≡î⌐éΘ */
else if ( label.equals( "RIGHT" ) )
{
switch ( imgSlot )
{
case 17: imgSlot = 49; break;
case 55: imgSlot = 17; break;
default: imgSlot++; break;
}
}
/* û{Ä╨û{ôaé╓Éié▐ */
else if ( label.equals( "HONSYA" ) )
{
if ( imgSlot == 17 )
{
/* âtâîü[âÇé≡Å┴ïÄé╖éΘ */
eventFrameHide();
/* âCâüü[âWö╘ìåé╠É▌ÆΦ */
imgSlot = 18;
evtStatus = false;
}
}
/* ë╬Å─æOé╓Éié▐ */
else if ( label.equals( "HITASAKI" ) )
{
if ( imgSlot == 54 )
{
/* âtâîü[âÇé≡Å┴ïÄé╖éΘ */
eventFrameHide();
/* âCâüü[âWö╘ìåé╠É▌ÆΦ */
imgSlot = 35;
evtStatus = false;
}
}
/* éαéñêΩôx */
else if ( label.equals( "MORE" ) )
{
/* âtâîü[âÇé≡Å┴ïÄé╖éΘ */
eventFrameHide();
/* âCâüü[âWö╘ìåé≡Åëè·ë╗é╖éΘ */
nowLoading = true;
imgTable = 0;
imgSlot = 0;
evtStatus = false;
for ( int i = 0; i < maxTable; i++ ) maxSlot[i] = 0;
}
/* é═éó */
else if ( label.equals( "YES" ) )
{
/* âtâîü[âÇé≡Å┴ïÄé╖éΘ */
eventFrameHide();
/* èJÄnæIæ≡é╠ÅΩìç */
if ( startFaq == true )
{
noStart = false;
startFaq = false;
}
else
{
/* âCâxâôâgé≡ö¡É╢é╖éΘ */
switch ( evtNo )
{
/* ïqÉ_Ä╨üEöqôaò\Ī */
case 2: eventSub( "HAIDEN", "tt-b.gif", "b.gif", "exp-b.gif",
"coin.au", MONEY + BACK );
arrowFlag = true;
break;
/* ï╛é╠Ærò\Ī */
case 3: eventSub( "KAGAMI-NO-IKE", "tt-c.gif", "c.gif", "exp-c.gif",
null, BACK );
arrowFlag = true;
break;
/* ôîë⌠ÿLüEæσÆ╣ïÅò\Ī */
case 4: eventSub( "OH-TORII", "tt-di.gif", "d.gif", null, null, BACK );
arrowFlag = true;
break;
/* û{Ä╨û{ôaüEöqôaò\Ī */
case 6: eventSub( "HAIDEN", "tt-f.gif", "f.gif", "exp-f.gif",
"coin.au", MONEY + OMIKUJI + BACK );
arrowFlag = true;
break;
/* ë╬Å─æOɵÆ[üEæσÆ╣ïÅò\Ī */
case 9: eventSub( "OH-TORII", "tt-di.gif", "i.gif", "exp-i.gif", null, BACK );
break;
/* É╝ë⌠ÿLüEö\òææΣò\Ī */
case 10: eventSub( "NOH-BUTAI", "tt-l.gif", "l.gif", "exp-l.gif", null, BACK );
arrowFlag = true;
break;
default: break;
}
}
}
/* éóéóéª */
else if ( label.equals( "NO" ) )
{
/* âtâîü[âÇé≡Å┴ïÄé╖éΘ */
eventFrameHide();
/* èJÄnæIæ≡é╠ÅΩìç */
if ( startFaq == true )
{
noStart = true;
startFaq = false;
}
else
{
if ( evtNo == 9 ) imgSlot = 42;
else imgSlot++;
evtStatus = false;
}
}
}
return false;
}
/*------------------------------------------------------------------------
* î╗âtâîü[âÇé≡ò\Īé╖éΘüB
-----------------------------------------------------------------------*/
public void paint( Graphics g )
{
/* âIâtâXâNâèü[âôé≡ì∞ɼé╖éΘ */
if ( offScrImage == null )
{
offScrImage = createImage( size().width, size().height );
offScrGraph = offScrImage.getGraphics();
}
/* âIâtâXâNâèü[âôé╔â}âbâvé≡ò`ëµé╖éΘ */
offScrGraph.setColor( Color.lightGray );
offScrGraph.fillRect( 0, 0, size().width, size().height );
if ( mapImage != null ) offScrGraph.drawImage( mapImage, 0, 0, this );
/* âCâüü[âWâìü[âhæOé═Åêù¥é╡é╚éó */
if ( maxSlot != null && maxSlot[imgTable] != 0 )
{
/* âGâëü[é╠ÅΩìç */
if ( mt.isErrorID( imgSlot ) )
{
/* âüâbâZü[âWé≡ò\Īé╖éΘ */
int now = imgSlot + 1;
String word = "Error!! " + now + " / " + maxSlot;
Font font = new Font( "TimesRoman", Font.BOLD, ( size().width / word.length() ) );
offScrGraph.setFont( font );
FontMetrics fm = offScrGraph.getFontMetrics();
offScrGraph.setColor( Color.red );
offScrGraph.fillRect( 0, 0, size().width, size().height );
offScrGraph.setColor( Color.yellow );
int x = ( size().width / 2 ) - ( fm.stringWidth( word ) / 2 );
int y = ( size().height / 2 ) + ( font.getSize() / 2 );
offScrGraph.drawString( word, x, y );
}
/* âìü[âhì╧é▌é╠ÅΩìç */
else if ( mt.checkID( imgSlot ) && nowLoading == false )
{
if ( imgs[imgSlot] != null && preSlot != imgSlot ) mainCanvas.showImage( imgs[imgSlot] );
/* ûεê≤é≡ò`ëµé╖éΘ */
setArrow( imgTable, imgSlot );
preSlot = imgSlot;
}
/* âìü[âhÆåé╠ÅΩìç */
else
{
/* âìü[âhì╧é▌âtâ@âCâïÉöé≡ò\Īé╖éΘ */
if ( loadMsg == true )
{
int now = imgSlot + 1;
String word = "Loading Now!! " + now + " / " + maxSlot[imgTable];
Font font = new Font( "TimesRoman", Font.BOLD, ( size().width / word.length() ) );
offScrGraph.setFont( font );
FontMetrics fm = offScrGraph.getFontMetrics();
int x = ( size().width / 2 ) - ( fm.stringWidth( word ) / 2 );
int y = size().height - font.getSize();
offScrGraph.setColor( Color.red );
offScrGraph.drawString( word, x, y );
offScrGraph.setColor( Color.gray );
}
}
}
/* Ä└ëµû╩é╔âCâüü[âWé≡ò`ëµé╖éΘ */
g.drawImage( offScrImage, 0, 0, this );
}
public void update( Graphics g )
{
paint( g );
}
/*------------------------------------------------------------------------
* â}âbâvÅπé╔ûεê≤é≡ò\Īé╖éΘüB
-----------------------------------------------------------------------*/
void setArrow( int tableNo, int slotNo )
{
int evtNo; /* âCâxâôâgö╘ìå */
int x, y; /* ûεê≤ê╩Æu */
int w, h; /* ûεê≤âTâCâY */
int arwType; /* ûεê≤é╠îⁿé½ */
/* âCâxâôâgö╘ìåüAûεê≤ê╩Æué≡É▌ÆΦé╖éΘ */
evtNo = eventNo[slotNo];
x = xPos[slotNo];
y = yPos[slotNo];
w = xSize[slotNo];
h = ySize[slotNo];
arwType = arrowType[slotNo];
/* â|âèâSâôù╠êµé≡èmò█é╖éΘ */
Polygon p = new Polygon();
/* Ä╩É^ò\Īé╠ÅΩìçé═üAé╗é╠ò√îⁿé╔ûεê≤é≡îⁿé»éΘ */
if ( arrowFlag == true )
{
switch ( evtNo )
{
case 2:
case 3: arwType = 2;
break;
case 4:
case 10: arwType = 1;
break;
case 6: arwType = 3;
break;
}
}
/* ûεê≤é╠ì└òWé≡É▌ÆΦé╖éΘ */
switch ( arwType )
{
/* Åπûεê≤ */
case 1: p.addPoint( x + ( w / 2 ), y );
p.addPoint( x, y + ( h / 2 ) );
p.addPoint( x + ( w / 4 ), y + ( h / 2 ) );
p.addPoint( x + ( w / 4 ), y + h );
p.addPoint( x + ( w / 4 * 3 ), y + h );
p.addPoint( x + ( w / 4 * 3 ), y + ( h / 2 ) );
p.addPoint( x + w, y + ( h / 2 ) );
p.addPoint( x + ( w / 2 ), y );
break;
/* ëEûεê≤ */
case 2: p.addPoint( x + ( w / 2 ), y );
p.addPoint( x + ( w / 2 ), y + ( h / 4 ) );
p.addPoint( x, y + ( h / 4 ) );
p.addPoint( x, y + ( h / 4 * 3 ) );
p.addPoint( x + ( w / 2 ), y + ( h / 4 * 3 ) );
p.addPoint( x + ( w / 2 ), y + h );
p.addPoint( x + w, y + ( h / 2 ) );
p.addPoint( x + ( w / 2 ), y );
break;
/* ë║ûεê≤ */
case 3: p.addPoint( x + ( w / 4 ), y );
p.addPoint( x + ( w / 4 ), y + ( h / 2 ) );
p.addPoint( x, y + ( h / 2 ) );
p.addPoint( x + ( w / 2 ), y + h );
p.addPoint( x + w, y + ( h / 2 ) );
p.addPoint( x + ( w / 4 * 3 ), y + ( h / 2 ) );
p.addPoint( x + ( w / 4 * 3 ), y );
p.addPoint( x + ( w / 4 ), y );
break;
/* ì╢ûεê≤ */
case 4: p.addPoint( x + ( w / 2 ), y );
p.addPoint( x, y + ( h / 2 ) );
p.addPoint( x + ( w / 2 ), y + h );
p.addPoint( x + ( w / 2 ), y + ( h / 4 * 3 ) );
p.addPoint( x + w, y + ( h / 4 * 3 ) );
p.addPoint( x + w, y + ( h / 4 ) );
p.addPoint( x + ( w / 2 ), y + ( h / 4 ) );
p.addPoint( x + ( w / 2 ), y );
break;
default: break;
}
/* É╘ÉFé≡É▌ÆΦé╖éΘ */
offScrGraph.setColor( Color.red );
/* ûεê≤é≡ò`ëµé╖éΘ */
offScrGraph.fillPolygon( p );
/* û╛éΘéóâOâîü[é≡É▌ÆΦé╖éΘ */
offScrGraph.setColor( Color.lightGray );
}
/*------------------------------------------------------------------------
* âXâîâbâhé≡èJÄné╖éΘüB
-----------------------------------------------------------------------*/
public void start()
{
if ( DEBUG ) nowMemory( "start" );
/* âXâîâbâhé≡èJÄné╖éΘ */
if ( engine == null )
{
engine = new Thread( this );
engine.start();
}
/* âüâCâôBGMé≡èJÄné╖éΘ */
bgmFound = false;
try {
mainBgm = getAudioClip( getCodeBase(), bgmPath + "/" + "gagaku.au" );
} catch( OutOfMemoryError e ) {
System.out.println( "Itsukushima.class : catch OutOfMemoryError" );
showStatus( "Itsukushima.class : catch OutOfMemoryError" );
mainBgm = null;;
}
if ( mainBgm != null )
{
bgmFound = true;
bgmStop = false;
bgmSleep = 0;
mainBgm.loop();
}
}
/*------------------------------------------------------------------------
* âXâîâbâhé≡ÆΓÄ~é╖éΘüB
-----------------------------------------------------------------------*/
public void stop()
{
if ( DEBUG ) nowMemory( "stop" );
/* âüâCâôBGMé≡ÆΓÄ~é╖éΘ */
if ( mainBgm != null ) mainBgm.stop();
mainBgm = null;
/* âCâxâôâgBGMé≡ÆΓÄ~é╖éΘ */
if ( evtBgm != null ) evtBgm.stop();
evtBgm = null;
/* âtâîü[âÇé≡Å┴ïÄé╖éΘ */
if ( evtFrame != null )
{
evtFrame.hide();
evtFrame.removeAll();
remove( evtFrame );
evtFrame.dispose();
}
if ( mainFrame != null )
{
mainFrame.hide();
mainFrame.removeAll();
remove( mainFrame );
mainFrame.dispose();
}
evtFrame = null;
mainFrame = null;
/* âXâîâbâhé≡ÆΓÄ~é╖éΘ */
if ( engine != null )
{
engine.stop();
try {
engine.destroy();
} catch ( NoSuchMethodError e ) {
;
}
}
engine = null;
/* èmò█é╡é╜ù╠êµé≡Åëè·ë╗é╖éΘ */
if ( imgs != null )
{
for ( int i = 0; i < maxSlot[imgTable]; i++ )
{
imgs[i] = null;
}
}
maxSlot = eventNo = null;
arrowType = null;
xPos = yPos = xSize = ySize = null;
mapImage = null;
startFaq = true;
imgs = new Image[0];
offScrGraph.dispose();
offScrGraph = null;
offScrImage = null;
/* âKâxü[âWâRâîâNâVâçâôé≡ïNô«é╖éΘ */
System.gc();
if ( DEBUG ) nowMemory( "gc" );
}
/*------------------------------------------------------------------------
* âüâéâèò\Ī
-----------------------------------------------------------------------*/
void nowMemory( String title )
{
System.out.println( title + " : " + Runtime.getRuntime().freeMemory() + "/" + Runtime.getRuntime().totalMemory() );
}
}