Manic Miner
Source Code

package manicminer;

import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.util.Random;
import java.awt.image.*;
import java.applet.AudioClip;

/**
* Title:
* Description:
* Copyright: Copyright (c) 2002
* Company:
* @author
* @version 1.0
*/

public class ManicMinerApplet extends Applet implements Runnable{
systemInfo gameInfo = new systemInfo();
PropsControl propsControl = new PropsControl();
ActorControl actorControl = new ActorControl();
LevelControl levelControl = new LevelControl();
StageControl stageControl = new StageControl();
SpecialControl specialControl = new SpecialControl();

DrawGame drawGame = new DrawGame();
Level level = new Level(levelControl, specialControl);
Willy willy = new Willy(level, actorControl, levelControl);
Baddies baddies = new Baddies(level, actorControl, levelControl);
Stage stage = new Stage(level, levelControl, stageControl);
Props props = new Props(level, levelControl, propsControl);
Special special = new Special(specialControl, level);
Cheats cheats = new Cheats(specialControl);

AudioClip deathscene;
AudioClip die;
AudioClip falling;
AudioClip ingametune;
AudioClip jump;
AudioClip oxygen;
AudioClip titletune;
AudioClip wingame;

Thread anim;
Image offscreenImage;
Graphics bufferStore;

static int timeToWait=77;

boolean isStandalone = false;
/**Get a parameter value*/
public String getParameter(String key, String def) {
return isStandalone ? System.getProperty(key, def) :
(getParameter(key) != null ? getParameter(key) : def);
}

/**Construct the applet*/
public ManicMinerApplet(){
}
/**Initialize the applet*/
public void init() {
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
offscreenImage=createImage(gameInfo.ScreenWidth,gameInfo.ScreenHeight);
bufferStore=offscreenImage.getGraphics();
repaint();
level.gameDev = "Bug-Byte";
gameInfo.setTime();
initAudio();
}

public void initAudio(){
deathscene = getAudioClip(getDocumentBase(), "deathscene.au");
die = getAudioClip(getDocumentBase(), "die.au");
falling = getAudioClip(getDocumentBase(), "falling.au");
ingametune = getAudioClip(getDocumentBase(), "ingametune.au");
jump = getAudioClip(getDocumentBase(), "jump.au");
oxygen = getAudioClip(getDocumentBase(), "oxygen.au");
titletune = getAudioClip(getDocumentBase(), "titletune.au");
wingame = getAudioClip(getDocumentBase(), "wingame.au");

deathscene.play();
die.play();
falling.play();
ingametune.play();
jump.play();
oxygen.play();
titletune.play();
wingame.play();

deathscene.stop();
die.stop();
falling.stop();
ingametune.stop();
jump.stop();
oxygen.stop();
titletune.stop();
wingame.stop();
}//endinitaudio

/**Component initialization*/
private void jbInit() throws Exception {
this.setFont(new java.awt.Font("Monospaced", 0, 12));
this.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyReleased(KeyEvent e) {
this_keyReleased(e);
}
});
this.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(KeyEvent e) {
this_keyPressed(e);

}
});
}//endjbinit

/* -------------------------- Applet Functions ------------------------------ */
/**Start the applet*/
public void start() {
anim = new Thread(this);
anim.start();
}
/**Stop the applet*/
public void stop() {
endApplet();
}//endstop

/**Destroy the applet*/
public void destroy() {
endApplet();
}//enddestroy

/**Get Applet information*/
public String getAppletInfo() {
return "Applet Information";
}
/**Get parameter info*/
public String[][] getParameterInfo() {
return null;
}

public void endApplet(){
deathscene.stop();
die.stop();
falling.stop();
ingametune.stop();
jump.stop();
oxygen.stop();
titletune.stop();
wingame.stop();

if(anim!=null){anim = null;};
}//endendapplett
/* -------------------------- Applet Functions ------------------------------ */
/* --------------------------- Thread Details ------------------------------- */

public void run() {
Thread me = Thread.currentThread();
while (anim == me) {
switch(special.programState.charAt(0)){
case 'L' : loadingScreen(); break;
case 'T' : titleScreen(); break;
case 'P' : playGame(); break;
case 'G' : gameOver(); break;
default : playGame(); break;
}//endswitch
}// endwhile
}// endrun
// boolean hasStored = false;

public void cheatLevelChange(){
if(cheats.cheatLevel!=0){
level.currentLevel=cheats.cheatLevel;
playLevelInit();
cheats.cheatLevel=0;
}//endif
}//endcheatlevelchange

public void loadingScreen(){
special.loadingScreenInit();
while(special.programState.charAt(0)=='L'){
bufferStore=special.loadingScreen(bufferStore, drawGame);
repaint();
loopPause(50);
}//endwhile
}//enddisplayloadingscreen

public void titleScreenInit(){
special.programState="TitleScreen";
special.titleState="IntroMusic";
special.globalCounter=0;
special.willyCounter=0;
special.scrolleyText="";

ingametune.stop();
titletune.play();
}//endtitlescreeninit

public void titleScreen(){
while(special.programState.charAt(0)=='T'){
switch(special.titleState.charAt(0)){
case 'I' : bufferStore=special.titleScreenBackground(bufferStore, drawGame, willy);
bufferStore=special.titleScreenIntroMusic(bufferStore, drawGame);
repaint();
loopPause(290);
// special.titleState="Scrolley";
break;
case 'S' : bufferStore=special.titleScreenBackground(bufferStore, drawGame, willy);
special.titleScreenScrolleyText(specialControl);
repaint();
loopPause(timeToWait);
// special.titleState="PreviewInit";
break;
case 'P' : switch(special.titleState.charAt(7)){
case 'I' : titleScreenPreviewInit(); break;
case 'P' : titleScreenPreviewPlay(); break;
case 'C' : titleScreenPreviewConclude(); break;
} break;
}//endswitch
}//endwhile
}//enddisplaytitlescreen

public void titleScreenPreviewControl(){
special.globalCounter=0;
special.programState="TitleScreen";
special.titleState="PreviewPlay";
willy.posXY[1]=gameInfo.ScreenHeight+255;
if(level.gameDev=="Bug-Byte"){if(level.currentLevel==20){level.score=200;}else{level.score=100;}}//endif
}//endpreviewcontrol

public void titleScreenPreviewConclude(){
ingametune.stop();
flash(4, 4);
level.nextLevel();
playLevelInit();
titleScreenPreviewControl();
}//endlevelcomplete

public void titleScreenPreviewInit(){
playGameInit();
titleScreenPreviewControl();
ingametune.loop();
}//endinitthepreview

public void titleScreenPreviewPlay(){
playLevelMoveBaddies();
playLevelUpdate();
playLevelDisplay(timeToWait);
if(special.globalCounter>=68){special.titleState="PreviewConclude";}
special.globalCounter++;
}//endplaythepreview

public void gameOverSquash(){
Image[] Monty = new Image[4];
int posY=0;
specialControl.setColourLock(Color.black, Color.white);
deathscene.play();
do{
if(specialControl.paper.equals(Color.black)){specialControl.paper=Color.green;}
specialControl.paper=gameInfo.nextColour(specialControl.paper);

Monty=specialControl.grabMonty();
Monty[2] = willy.animate[1][3];

posY+=gameInfo.cellSize*2;
bufferStore = drawGame.drawGameOverScreen(bufferStore, Monty, posY, specialControl.paper);

repaint();
loopPause(40);
}while(posY<(gameInfo.blockSize*12));
deathscene.stop();
specialControl.colourLock=false;
}//endgrableg

public void gameOverMessage(){
Color currentColour=Color.black;
for(int counter=0; counter<148; counter++){
bufferStore = drawGame.drawGameOverText(bufferStore, currentColour);
repaint();
loopPause(28);
currentColour=gameInfo.nextColour(currentColour);
}//endfor
}//enddisplaygameover

public void gameOver(){
gameOverSquash();
gameOverMessage();
level.updateHighScore();
titleScreenInit();
}//enddeathscene

ActorCollision actorCollision = new ActorCollision();
LevelCollision levelCollision = new LevelCollision();
public void playLevelMoveActors(){
playLevelMoveBaddies();
playLevelMoveWilly();
}//endmoveactors

public void playLevelMoveBaddies(){
if(willy.hasHit==false){baddies.movement(1, level, stage, props);}
if(willy.hasHit==false){willy.hasHit=actorCollision.ActorHit(willy, baddies);}
if(willy.hasHit==false){baddies.movement(2, level, stage, props);}
if(willy.hasHit==false){willy.hasHit=actorCollision.ActorHit(willy, baddies);}
if(willy.hasHit==false){baddies.movement(3, level, stage, props); if(level.currentLevel!=14){baddies.upDateBaddiesImage();}}//endif
if(willy.hasHit==false){willy.hasHit=actorCollision.ActorHit(willy, baddies);}
}//endmovebaddies

public void playLevelMoveWilly(){
if(willy.hasHit==false){willy.willyMove();}
if(willy.hasHit==false){willy.hasHit=actorCollision.ActorHit(willy, baddies);}
if(willy.hasHit==false){levelCollision.levelHit(willy, 1, stage, props, level );}
if(willy.hasHit==false){willy.willyMove();}
if(willy.hasHit==false){willy.hasHit=actorCollision.ActorHit(willy, baddies);}
if(willy.hasHit==false){levelCollision.levelHit(willy, 2, stage, props, level);}
}//endmovewilly

int timerCount=0;
public void playLevelUpdate(){
if(level.gameDev=="Bug-Byte"){willy.animateLives(timerCount);}
else{if((level.score>0)&&(level.score%10000==0)){willy.lives+=1; level.score+=100;}}
timerCount=level.oxygenUpdate(timerCount);
if(level.oxygen<=0){willy.hasHit=true;}
stage.moveConveyer();//conveyer belt
cheatLevelChange();
playPause();
if(level.levelComplete==true){gameState="ConcludeLevel";}
}//endupdatelevel

boolean fallSound=false;
boolean jumpSound=false;
public void playSoundCheck(){
if(willy.isFalling==false){fallSound=true; falling.stop();}
if((willy.isFalling==true)&&(fallSound==true)){falling.loop(); fallSound=false;}

if(willy.moveArray[0][0]==false){jumpSound=true; jump.stop();}
if((willy.moveArray[0][0]==true)&&(jumpSound==true)){jump.play(); jumpSound=false;}
}//endsoundcheck

public void playLevelResolveHit(){
if(willy.hasHit==true){
jump.stop();
falling.stop();
die.play();
if(level.musicOn==true){ingametune.stop();}
if(willy.lives>0){willy.lives--; flash(7, 3); playLevelInit(); willy.hasHit=false; willy.updateCounter=1;}
else{special.programState="GameOver"; }
}//endoif
}//endresolvehit

public void playPause(){
if(level.gamePaused==true){
if(level.musicOn==true){ingametune.stop();}
falling.stop();
jump.stop();
do{}while(level.gamePaused==true);
if(level.musicOn==true){ingametune.loop();}
if((willy.isFalling==true)){falling.loop();}
if(willy.moveArray[0][0]==true){jump.play();}
}//endif
}//endcheckpause

static String gameState="InitGame";
char drawType='G';
public void playGame(){
switch(gameState.charAt(0)){
case 'I' : playLevelInit(); break;
case 'P' : playLevel(); break;
case 'C' : playLevelConclude(); break;
}//endswitch
}//endplaythegame

public void playLevel(){
playLevelMoveActors();
playLevelResolveHit();
playLevelUpdate();
playSoundCheck();
playLevelDisplay(timeToWait);
}//endlevelPlay

public void loopPause(long timetopause){
/*
long actualTimetoPause=0;
actualTimetoPause=gameInfo.timeDifference();
actualTimetoPause=timetopause-actualTimetoPause;
if(actualTimetoPause>0){gameInfo.holdMe(actualTimetoPause);}else{actualTimetoPause=5;}
gameInfo.setTime();
*/
gameInfo.holdMe(timetopause);
}//endlooppause

public void playLevelDisplay(int pauseTime){
bufferStore = drawGame.drawPlay(bufferStore, level, stage, props, willy, baddies, propsControl, specialControl, special, cheats);
repaint();
loopPause(pauseTime);
}//enddrawgame

public void flashScreen(int pauseTime, int c3){
bufferStore = drawGame.drawFlash(bufferStore, level, stage, props, willy, baddies, c3, special);
repaint();
gameInfo.holdMe(pauseTime);
}//enddrawgame

public void flashStage(int inkStart){
for(int c3=inkStart; c3<7; c3++){
stage.flashDataSetup(stageControl, specialControl.paper, specialControl.ink);
props.flashDataSetup(propsControl, specialControl.paper, specialControl.ink, level.currentLevel);
flashScreen(1, c3);
specialControl.ink=gameInfo.nextColour(specialControl.ink);
}//endfor
}//endstageflash

public void flash(int paperStart, int inkStart){
specialControl.colourLock=true;
specialControl.paper=Color.magenta;
for(int c2=paperStart; c2<8; c2++){
stage.backgroundColour=specialControl.paper;
specialControl.ink=Color.magenta;
flashStage(inkStart);
specialControl.paper=gameInfo.nextColour(specialControl.paper);
}//endfor
specialControl.colourLock=false;
}//endblackgroundflash

public void playLevelConcludeOxygenCountDown(){
while(level.oxygen>0){
level.oxygencountDown();
bufferStore = drawGame.drawScreenBase(bufferStore);
bufferStore = drawGame.drawOxygenBar(bufferStore, level);
bufferStore = drawGame.drawScore(bufferStore, level);
bufferStore = drawGame.drawLevelTitle(bufferStore, level);
repaint();
loopPause(16);
}//endwhile
}//enddrawoxyencountdown

public void playLevelConclude(){
ingametune.stop();
falling.stop();
jump.stop();
if((level.currentLevel==20)&&(cheats.cheatsOn==false)){playGameWon();}//endif
flash(4, 4);
oxygen.loop();
playLevelConcludeOxygenCountDown();
oxygen.stop();
level.nextLevel();
gameState="InitLevel";
}//endlevelcomplete

public void playGameWon(){
level.gameWon=true;

willy.posCounter=2;
willy.updateImage();
willy.posXY[0]=gameInfo.blockSize*19;
willy.posXY[1]=gameInfo.blockSize*2;

bufferStore = drawGame.drawPlay(bufferStore, level, stage, props, willy, baddies, propsControl, specialControl, special, cheats);
repaint();
if(level.musicOn==true){ingametune.stop();}
wingame.loop();
loopPause(500); /* should be approx 6 seconds */
wingame.stop();
gameState="InitLevel";
}//endwingame

public void playLevelInit(){
level.initLevel(levelControl);
props.initProps(level, levelControl, propsControl);
stage.initStage(level, levelControl, stageControl);
willy.initPos(level, levelControl);
baddies.grabBaddies(level, actorControl, levelControl);
gameState="PlayLevel";
if(level.musicOn==true){ingametune.loop();}
}//endinitlevel

public void playGameInit(){
int tempHighScore = level.highscore;
level = new Level(levelControl, specialControl);
willy = new Willy(level, actorControl, levelControl);
baddies = new Baddies(level, actorControl, levelControl);
props = new Props(level, levelControl, propsControl);
stage = new Stage(level, levelControl, stageControl);
level.highscore = tempHighScore;
special.programState="PlayTheGame";
gameState="InitLevel";
gameInfo.setTime();
titletune.stop();
}//endprepgame
/* --------------------------- Thread Details ------------------------------- */
/* -------------------------- Paint and Update ------------------------------ */

private void checkOffscreen(){
final Dimension size = getSize();

if (offscreenImage == null
|| offscreenImage.getWidth(null) != size.width
|| offscreenImage.getHeight(null) != size.height){
if (offscreenImage != null){
offscreenImage.flush();
bufferStore.dispose();
}//endif
offscreenImage = createImage(size.width,size.height);
bufferStore = offscreenImage.getGraphics();
}//endif
}//endcheckoffscreen

public void update(Graphics g) {
checkOffscreen();
bufferStore.setClip(g.getClip());

super.paint(bufferStore);
g.drawImage(offscreenImage,0,0,null);
}//endupdate

public void paint(Graphics g) {
update(g);
}

/* -------------------------- Paint and Update ------------------------------ */
/* ------------------------- Events & Listeners ----------------------------- */
void this_keyPressed(KeyEvent e) {
int holder = e.getKeyCode();
// System.out.println("holder : "+holder);

switch(special.programState.charAt(0)){
default : this_keyPressedPlayTheGame(holder);
cheats.checkCheatsOn(e.getKeyChar());
break;
}//endswitch

}// endthiskeypressed

void this_keyReleased(KeyEvent e) {
int holder = e.getKeyCode();

switch(special.programState.charAt(0)){
case 'L' : this_keyReleasedLoadingScreen(); break;
case 'T' : this_keyReleasedTitleScreen(holder); break;
default : this_keyReleasedPlayTheGame(holder);
cheats.checkCheatsOff(e.getKeyChar());
break;
}//endswitch
} //end this_keyreleased

//**-- Key Pressed
public void this_keyPressedPlayTheGame(int holder){
switch(holder){
case 17 : case 16 : case 18 : case 44 : case 46 : //CTRL, SHIFT, ALT, ',', '.'
case 90 : case 88 : case 67 : case 86 : case 66 : //Z, X, C, V, B
case 78 : case 77 : case 47 : //N, M, '/'
case 32 : willy.moveArray[0][0] = true; break; //SPACE jump
case 80 : case 73 : case 89 : case 82 : case 87 : //P, I, Y, R, W
case 39 : willy.moveArray[0][4] = true; break; //right arrow key
case 79 : case 85 : case 84 : case 69 : case 81 : //O, U, T, E, Q
case 37 : willy.moveArray[0][3] = true; break; //left arrow key
}//endswitchholder
}//endkeypressedplaythegame

//**-- Key Released
public void this_keyReleasedPlayTheGame(int holder){
switch(holder){
case 80 : case 73 : case 89 : case 82 : case 87 : //P, I, Y, R, W
case 39 : willy.moveArray[0][4] = false; break; //right arrow key
case 79 : case 85 : case 84 : case 69 : case 81 : //O, U, T, E, Q
case 37 : willy.moveArray[0][3] = false; break; //left arrow key
case 107 : timeToWait++; break; // + key
case 109 : if(timeToWait>0){timeToWait--;} break; // - key
case 72 : case 74 : case 75 : //H, J, K, L Music on/off
case 76 : if(level.musicOn==true){level.musicOn=false; ingametune.stop();}else{level.musicOn=true; ingametune.loop();}
}//endswitchholder
if(gameState=="PlayLevel"){checkPause(holder);}//endif
}//endkeyreleasedplaythegame

public void this_keyReleasedLoadingScreen(){
special.titletopImage = specialControl.grabTitleTop(level.gameDev);
special.titlemidImage = specialControl.grabTitleMid();
titleScreenInit();
}//endkeyreleasedloadingscreen

public void this_keyReleasedTitleScreen(int holder){
if(special.titleState.charAt(0)=='P'){
if(checkPause(holder)==false){level.gamePaused=false; titleScreenInit();}
}//endif

switch(holder){
case 107 : willy.setWillyImage("bowo", '+', actorControl); break;
case 109 : willy.setWillyImage("bowo", '-', actorControl); break;
case 32 : if(level.gameDev=="Bug-Byte"){level.gameDev="Software Projects";}else{level.gameDev="Bug-Byte";}
special.titletopImage=specialControl.grabTitleTop(level.gameDev); break;
case 10 : if(special.titleState.charAt(0)!='P'){playGameInit();}else{titleScreenInit();} break;
}//endswitch
ingametune.stop();
}//endkeyreleasedloadingscreen

public boolean checkPause(int holder){
boolean hasPaused=false;
switch(holder){
case 65 : case 83 : case 68 : case 70 :
case 71 : level.gamePaused=true; hasPaused=true; break;
default : if(level.gamePaused==true){level.gamePaused=false;} break;
}//endswitch
return hasPaused;
}//endcheckpause

/* ------------------------- Events & Listeners ----------------------------- */
/* -------------------------------- Main ------------------------------------ */
/**Main method*/
public static void main(String[] args) {
ManicMinerApplet applet = new ManicMinerApplet();
applet.isStandalone = true;
Frame frame;
frame = new Frame() {
protected void processWindowEvent(WindowEvent e) {
super.processWindowEvent(e);
if (e.getID() == WindowEvent.WINDOW_CLOSING) {
System.exit(0);
}
}
public synchronized void setTitle(String title) {
super.setTitle(title);
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
}
};
frame.setTitle("Applet Frame");
frame.add(applet, BorderLayout.CENTER);
applet.init();
applet.start();
frame.setSize(512,384);
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
frame.setLocation((d.width - frame.getSize().width) / 2, (d.height - frame.getSize().height) / 2);
frame.setVisible(true);
}
/* -------------------------------- Main ------------------------------------ */
}
/* ------------------------- Manic Miner Applet ----------------------------- */
/* ------------------------ BaddiesWilly Class ---------------------------- */
class Baddies{
systemInfo gameInfo = new systemInfo();

Actor[]Baddies = new Actor[12];
int baddieCount=0;

public Baddies(Level level, ActorControl actorControl, LevelControl levelControl){
for(int counter=0; counter<12; counter++){
Baddies[counter]=new Actor();
}//endfor
grabBaddies(level, actorControl, levelControl);
}//endconstructor

public void upDateBaddiesImage(){
for(int counter=0; counter<baddieCount; counter++){
Baddies[counter].updateImage();
}//endfor
}//endupdatebaddiesiumage


public void grabImage(ActorControl actorControl){
for(int counter=0; counter<baddieCount; counter++){
Baddies[counter].currantImage=actorControl.StringToImage(Baddies[counter].actorData[Baddies[counter].direction][Baddies[counter].posCounter]);
Baddies[counter].currantImage=actorControl.setTrasparent(Baddies[counter].currantImage, actorControl.paper);
}//endfor
}//endgrabimage

public void flashDataSetup(ActorControl actorControl){
actorControl.colourLock=true;
actorControl.ink=Color.white;
actorControl.paper=Color.black;
for(int counter=0; counter<baddieCount; counter++){

for(int xcounter=0; xcounter<8; xcounter++){
for(int ocounter=0; ocounter<2; ocounter++){
for(int icounter=0; icounter<4; icounter++){
Baddies[counter].actorFlash[xcounter][ocounter][icounter]=Baddies[counter].animate[ocounter][icounter];
Baddies[counter].actorFlash[xcounter][ocounter][icounter]=actorControl.setMono(Baddies[counter].actorFlash[xcounter][ocounter][icounter], actorControl.paper, actorControl.ink);
}//endfor
}//endfor
actorControl.ink=gameInfo.nextColour(actorControl.ink);
}//endfor

}//endfor
actorControl.colourLock=false;
}//endflashdatasetup

public void grabBaddies(Level level, ActorControl actorControl, LevelControl levelControl){

int baddieCounter=0;
int posCounter=0;

String baddieInfo = levelControl.grabInfo('n', level.currentLevel);
switch(level.currentLevel){
case 17 : if(level.gameDev=="Software Projects"){baddieInfo = baddieInfo.replace('X', '3');} break;
case 18 : if(level.gameDev=="Software Projects"){baddieInfo = baddieInfo.replace('Z', '4');} break;
}//endswitch

while(posCounter<baddieInfo.length()){
// grab actor image string
Baddies[baddieCounter].actorData = actorControl.grabImageString(baddieInfo.charAt(posCounter));

switch(level.currentLevel){
case 19 : Baddies[baddieCounter].animate=actorControl.grabBaddie(baddieInfo.substring(posCounter, (posCounter+=1)), baddieInfo.substring((posCounter), (posCounter+=4)), 2); break;
default : Baddies[baddieCounter].animate=actorControl.grabBaddie(baddieInfo.substring(posCounter, (posCounter+=1)), baddieInfo.substring((posCounter), (posCounter+=4)), 1); break;
}//endif
Baddies[baddieCounter].currantImage=Baddies[baddieCounter].animate[0][0];

//grab max/min xy
int calcPos=0;
for(int ocounter=0;ocounter<2; ocounter++){
for(int icounter=0; icounter<2; icounter++){
calcPos=Integer.parseInt(baddieInfo.substring(posCounter, (posCounter+=3)));
Baddies[baddieCounter].maxMinPos[ocounter][icounter]=(calcPos*gameInfo.cellSize);//6
}//endfor
}//endfor

// grab initXY
for(int counter=0; counter<2; counter++){
calcPos=Integer.parseInt(baddieInfo.substring(posCounter, (posCounter+=3)));
Baddies[baddieCounter].posXY[counter]=(calcPos*gameInfo.cellSize);//6
}//endfor

// set inital direction
switch(baddieInfo.charAt(posCounter++)){
case 'L' : Baddies[baddieCounter].direction=0; break;
case 'R' : Baddies[baddieCounter].direction=1; break;
}//endswitch

//set move speed
Baddies[baddieCounter].movementSpeed=Character.getNumericValue(baddieInfo.charAt(posCounter++));
baddieCounter++;
}//endwhile

baddieCount=baddieCounter;
flashDataSetup(actorControl);
}//endgrabnastie

public void movement(int moveCounter, Level level, Stage stage, Props props){
switch(level.currentLevel){
case 19: moveSolarBeam(stage);
movePosition(moveCounter); break;
case 14: if(moveCounter==1){moveSkyLab();} break;
case 12:
case 8 : moveKongBeast(props);
default : movePosition(moveCounter); break;
}//endswitch
}//endmove

public void movePosition(int moveCounter){
for(int counter=0; counter<baddieCount; counter++){
if(moveCounter<=Baddies[counter].movementSpeed){
if(Baddies[counter].direction==0){
if(Baddies[counter].posXY[0]>Baddies[counter].maxMinPos[0][0]){Baddies[counter].movePos('l');}else
if(Baddies[counter].posXY[1]>Baddies[counter].maxMinPos[0][1]){Baddies[counter].movePos('u');}
else{Baddies[counter].direction=1;}//endif
}else{
if(Baddies[counter].posXY[0]<Baddies[counter].maxMinPos[1][0]){Baddies[counter].movePos('r');}else
if(Baddies[counter].posXY[1]<Baddies[counter].maxMinPos[1][1]){Baddies[counter].movePos('d');}
else{Baddies[counter].direction=0;}//endif
}//endif

}//endfor
}//endfor
}//endmovebaddies

public void moveKongBeast(Props props){
switch(props.buttonsLeft){
case 0 : Baddies[0].posXY[1]=256;
Baddies[1].posXY[1]=0; break;
case 1 : Baddies[2].maxMinPos[1][0]=(18*gameInfo.blockSize); break;
}//endswitch
}//endmovekongbeast

boolean beamDirection=true; //false=down, true=left
public void moveSolarBeam(Stage stage){
int[] bposXY = new int[2];
boolean wallHit=false;

bposXY[0]=23;
bposXY[1]=0;
beamDirection=true;

// clean beam from map
char[] tempHold = stage.levelInfo.toCharArray();
for(int counter=0; counter<stage.levelInfo.length(); counter++){
if(tempHold[counter]=='N'){tempHold[counter]='O';}
}//endfor

// loop from starting point
tempHold[(bposXY[1]*32)+bposXY[0]]='N';

while((bposXY[0]>0)&&(bposXY[1]<15)&&(wallHit==false)){

for(int counter=0; counter<baddieCount; counter++){
if(checkBoundingBoxCollision(bposXY, Baddies[counter])==true){//if beam collides with baddie
if(beamDirection==true){beamDirection=false;}else{beamDirection=true;}//endif
}//endif
}//endfor

tempHold[(bposXY[1]*32)+bposXY[0]]='N';
if(beamDirection==true){bposXY[1]+=1;}else{bposXY[0]-=1;}//endif

if((tempHold[(bposXY[1]*32)+bposXY[0]]!='O')&&(tempHold[(bposXY[1]*32)+bposXY[0]]!='o')){
wallHit=true;
}//endif

}//endwhile

stage.levelInfo = new String(tempHold);
}//endchecksolorbeamstate

public boolean checkBoundingBoxCollision(int[] bbeamPos, Actor baddie){
boolean hasHit=false;
int BeamWH = gameInfo.blockSize;
int[] beamPos = new int[2];
beamPos[0] = bbeamPos[0]*gameInfo.blockSize;
beamPos[1] = bbeamPos[1]*gameInfo.blockSize;

if((beamPos[0]>=baddie.posXY[0])&&(beamPos[0]<=(baddie.posXY[0]+baddie.posWH[0]))){// left inbetween baddie
if((beamPos[1]>=baddie.posXY[1])&&(beamPos[1]<=(baddie.posXY[1]+baddie.posWH[1]))){hasHit=true;}// left inbetween baddie
if((beamPos[1]+BeamWH>=baddie.posXY[1])&&((beamPos[1]+BeamWH)<=(baddie.posXY[1]+baddie.posWH[1]))){hasHit=true;}//right
}//endif

if((beamPos[0]+BeamWH>=baddie.posXY[0])&&((beamPos[0]+BeamWH)<=(baddie.posXY[0]+baddie.posWH[0]))){//right
if((beamPos[1]>=baddie.posXY[1])&&(beamPos[1]<=(baddie.posXY[1]+baddie.posWH[1]))){hasHit=true;}// left inbetween baddie
if((beamPos[1]+BeamWH>=baddie.posXY[1])&&((beamPos[1]+BeamWH)<=(baddie.posXY[1]+baddie.posWH[1]))){hasHit=true;}//right
}//endif

return hasHit;
}//endcheckboundingboxcollision

public void moveSkyLab(){
for(int icounter=0; icounter<3; icounter++){
if(Baddies[icounter].posCounter!=4){

if(Baddies[icounter].posXY[1]<Baddies[icounter].maxMinPos[1][1]){
for(int mcounter=0; mcounter<Baddies[icounter].movementSpeed; mcounter++){
Baddies[icounter].movePos('d');
Baddies[icounter].updateImage();
}//endfor
}else{shiftImage(icounter, icounter+3);}//endif

}else{moveSkyLabExplosion(icounter+3);}//endif
}//endfor
}//endmoveskylababddies

public void shiftImage(int oldIndex, int newIndex){
Baddies[oldIndex].posCounter=4;
Baddies[newIndex].posXY[0]=Baddies[oldIndex].posXY[0];
Baddies[newIndex].posXY[1]=Baddies[oldIndex].posXY[1];
Baddies[oldIndex].posXY[0]=-900;
Baddies[oldIndex].posXY[1]=-900;
}//endshiftimage

public void resetSkyLab(int icounter){
Baddies[icounter].posXY[1]=Baddies[icounter].maxMinPos[0][1];// reset Y Pos
// move baddie along & reset if at edge of screen
Baddies[icounter].posXY[0]+=8*gameInfo.blockSize;
if(Baddies[icounter].posXY[0]>(gameInfo.blockSize*32)){
Baddies[icounter].posXY[0]=(icounter*(gameInfo.blockSize*2))+gameInfo.blockSize;
}//endif
}//endresetskylab

public void moveSkyLabExplosion(int icounter){
if(Baddies[icounter].posCounter!=4){
Baddies[icounter].updateImage();
if(Baddies[icounter].posCounter==0){shiftImage(icounter, icounter+3);}//endif

}else if(Baddies[icounter+3].posCounter!=4){
Baddies[icounter+3].updateImage();
if(Baddies[icounter+3].posCounter==0){shiftImage(icounter+3, icounter-3);}//endif
}//endif

if(Baddies[icounter+3].posCounter==4){
for(int counter=icounter-3; counter<icounter+6; counter+=3){Baddies[counter].posCounter=0;}//endfor
resetSkyLab(icounter-3);
}//endif
}//endmoveskylabexplosion

}//endbaddiesclass
/* ------------------------ BaddiesWilly Class ---------------------------- */
/* ------------------------- StageCollision Class --------------------------- */
class LevelCollision{
systemInfo gameInfo = new systemInfo();

public LevelCollision(){
}//endconstructor

// convertXY pos into map coords
public int[] findPos(Willy will, int extraX, int extraY, int shiftX, int shiftY){
int[] XposXY = new int[2];
int xPos = will.posXY[0]+will.skipPixels;
int yPos = will.posXY[1];//+1;

int addY = ((will.posWH[1]/2)*extraY)+shiftY;
int addX = ((will.posWH[0]/2)*extraX)+shiftX;
XposXY[0] = (xPos+addX)/gameInfo.blockSize;
XposXY[1] = (yPos+addY)/gameInfo.blockSize;

return XposXY;
}//end

public Willy checkJump(Willy will, Stage stage){
if(Level.currentLevel!=20){
int[][] mapXY = new int[3][2];
char[] valueHolder = new char[3];

mapXY[0]=findPos(will, 0, 0, 2, -1);//check Top Left Point
mapXY[1]=findPos(will, 1, 0, 0, -1);//check Top Mid Point
mapXY[2]=findPos(will, 2, 0, -2, -1);//check Top Right Point

for(int counter=0; counter<3; counter++){
valueHolder[counter]=stage.mapInfo(mapXY[counter][0], mapXY[counter][1]);
}//endfor

if(orHolds(valueHolder, 'W')){will.endJump=true;}
else{if(will.moveArray[0][0]==false){will.endJump=false;}}
}//endif
return will;
}//endcheckjump

public Willy levelHit(Willy will, int whichRun, Stage stage, Props props, Level level){
int[][] mapXY = new int[3][2];

// Top
mapXY[0]=findPos(will, 0, 0, 2, 0);//check Top Left Point
mapXY[1]=findPos(will, 1, 0, 0, 0);//check Top Mid Point
mapXY[2]=findPos(will, 2, 0, -2, 0);//check Top Right Point
will=stageHit(mapXY, 0, will, stage, level, whichRun);
will=propHit(mapXY, 0, will, stage, props, level);

// Base
mapXY[0]=findPos(will, 0, 2, 2, 0);//check Bottom Left Point
mapXY[1]=findPos(will, 1, 2, 0, 0);//check Bottom Right Point
mapXY[2]=findPos(will, 2, 2, -2, 0);//check Bottom Mid Point
will=stageHit(mapXY, 1, will, stage, level, whichRun);
will=propHit(mapXY, 1, will, stage, props, level);

// Left
mapXY[0]=findPos(will, 0, 0, 0, 1);//check Top Left Point
mapXY[1]=findPos(will, 0, 1, 0, 0);//Check Mid Left Point
mapXY[2]=findPos(will, 0, 2, 0, -1);//check Bottom Left Point
will=stageHit(mapXY, 2, will, stage, level, whichRun);
will=propHit(mapXY, 2, will, stage, props, level);

// Right
mapXY[0]=findPos(will, 2, 0, 0, 1);//check Top Right Point
mapXY[1]=findPos(will, 2, 1, 0, 0);//Check Mid Right Point
mapXY[2]=findPos(will, 2, 2, 0, -1);//check Bottom Right Point
will=stageHit(mapXY, 3, will, stage, level, whichRun);
will=propHit(mapXY, 3, will, stage, props, level);

will=checkJump(will, stage);
return will;
}//endcollisioncheck

public boolean orHolds(char[] Holdee, char holder){
boolean isHolding=false;

for(int counter=0; counter<3; counter++){
if(Holdee[counter]==holder){isHolding=true;}//endif
}//endfor

return isHolding;
}//enddoeshold

public boolean andHolds(char[] Holdee, char holder){
boolean isHolding=true;

for(int counter=0; counter<3; counter++){
if(Holdee[counter]!=holder){isHolding=false;}//endif
}//endfor

return isHolding;
}//enddoeshold

public boolean onlyHolds(char[] Holdee, char holder, char holder2){
boolean isHolding=true;

for(int counter=0; counter<3; counter++){
if((Holdee[counter]!=holder)&&(Holdee[counter]!=holder2)){isHolding=false;}//endif
}//endfor

return isHolding;
}//enddoeshold

public Willy propHit(int[][] mapXY, int hitPos, Willy will, Stage stage, Props props, Level level){
int[] tempXY = {0,0};
char[] valueHolder = new char[3];

for(int counter=0; counter<3; counter++){
valueHolder[counter]=stage.mapInfo(mapXY[counter][0], mapXY[counter][1]);
}//endfor

if((hitPos==0)||(hitPos==2)){
if((valueHolder[0]=='D')||(valueHolder[1]=='D')){
resolveDoor(level);
}//endif
}//endif

if(orHolds(valueHolder, 'K')){
if(valueHolder[0]=='K'){tempXY=mapXY[0];}
if(valueHolder[1]=='K'){tempXY=mapXY[1];}
if(valueHolder[2]=='K'){tempXY=mapXY[2];}
resolveKey(tempXY, stage, props, level);
}//endif

if(orHolds(valueHolder, 'X')){
if(valueHolder[0]=='X'){tempXY=mapXY[0];}
if(valueHolder[1]=='X'){tempXY=mapXY[1];}
if(valueHolder[2]=='X'){tempXY=mapXY[2];}
resolveSwitch(tempXY, stage, props);
}//endif

if(orHolds(valueHolder, 'N')){will.hasHit=true;}//endif
if(orHolds(valueHolder, 'n')){will.hasHit=true;}//endif

return will;
}//endprophit

public Willy stageHit(int[][] mapXY, int hitPos, Willy will, Stage stage, Level level, int whichRun){
int[] tempXY = {0,0};
char[] valueHolder = new char[3];

for(int counter=0; counter<3; counter++){
valueHolder[counter]=stage.mapInfo(mapXY[counter][0], mapXY[counter][1]);
}//endfor

if( (orHolds(valueHolder, 'S')) || (orHolds(valueHolder, 's')) ){
for(int counter=0; counter<3; counter++){
if(valueHolder[counter]=='S'){valueHolder[counter]=stage.sType[0];}
if(valueHolder[counter]=='s'){valueHolder[counter]=stage.sType[1];}
}//endfor
}//endif

if(hitPos==1){
if(onlyHolds(valueHolder, 'O', 'D')){will=resolveFalling(will);}else
if(andHolds(valueHolder, 'O')){will=resolveFalling(will);}else
if(andHolds(valueHolder, 'O')){will=resolveFalling(will);}else
if(andHolds(valueHolder, 'o')){will=resolveFalling(will);}//endif

if(orHolds(valueHolder, 'W')){will=resolveFloor(will);}//endif
if(orHolds(valueHolder, 'F')){will=resolveFloor(will);}//endif
if(orHolds(valueHolder, 'C')){will=resolveConveyer(will, stage.conveyerDirection);}else{will.onConveyer=false;}//endif

for(int counter=8; counter>0; counter--){
if( (orHolds(valueHolder, Integer.toString(counter).charAt(0))) && (whichRun==1) ){

if(valueHolder[0]==Integer.toString(counter).charAt(0)){
tempXY=mapXY[0];
will=resolveCrumblingFloor(will, tempXY, counter, stage);
}//endif

if(valueHolder[1]==Integer.toString(counter).charAt(0)&&(mapXY[0]!=mapXY[1])){
tempXY=mapXY[1];
will=resolveCrumblingFloor(will, tempXY, counter, stage);
}//endif

if(valueHolder[2]==Integer.toString(counter).charAt(0)&&(mapXY[1]!=mapXY[2])){
tempXY=mapXY[2];
will=resolveCrumblingFloor(will, tempXY, counter, stage);
}//endif
}//endif
}//endfor

}//endif

if(orHolds(valueHolder, 'W')){
if(hitPos!=1){resolveWall(will, hitPos);}//endif
}else{will.moveArray[1][hitPos]=false;}//endif

return will;
}//endresolvebase

public Willy resolveFloor(Willy will){
if((will.moveArray[0][0]==true)&&(will.jumpCounter>will.jumpMid)){ // IF JUMP=TRUE AND JUMP=FALLING
if((will.posXY[1]+will.posWH[1])%gameInfo.blockSize==0){ // IF HIT BLOCK AT BLOCK LEVEL
will.endJump=true;
}//endif
}//endif

will.isFalling=false;
if(will.fallCounter>32){will.hasHit=true;}
will.fallCounter=0;
return will;
}//endresolvefloor

public void resolveDoor(Level level){
if(Props.keysLeft<=0){
level.levelComplete=true;
}//endif
}//endresolveDoor

public Willy resolveFalling(Willy will){
if(will.moveArray[0][0]==false){ // IF JUMP==FALSE
will.isFalling=true;
will.movePos('d');
will.fallCounter++;
will.keepMoving=' ';
}//endif
return will;
}//endresolvefallingfalling

public void resolveKey(int[] mapXY, Stage stage, Props props, Level level){
stage.setMap(mapXY, 'O');
props.keysLeft--;
level.updateScore();
}//endresolvekey

public void resolveSwitch(int[] mapXY, Stage stage, Props props){
char charToFind = 'S';
stage.setMap(mapXY, 'x');
int[] counter = new int[2];

if(props.buttonsLeft==1){charToFind = Character.toLowerCase(charToFind);}

for(counter[0]=0; counter[0]<16; counter[0]++){
for(counter[1]=0; counter[1]<32; counter[1]++){
if(stage.levelInfo.charAt( (counter[0]*32)+counter[1])==charToFind){
stage.setMap(counter, 'O');
}//endif
}//endfor
}//endfor
props.buttonsLeft--;
}//endresolveswitch

public Willy resolveCrumblingFloor(Willy will, int[] mapXY, int holder, Stage stage){
char temp;
resolveFloor(will);

if(will.moveArray[0][0]==false){
will.fallCounter=0;
holder--;
temp = Integer.toString(holder).charAt(0);

if(holder==0){
stage.setMap(mapXY, 'O');
if(mapXY[1]<16){mapXY[1]+=1;}
if(stage.mapInfo(mapXY[0], mapXY[1])=='o'){stage.setMap(mapXY, 'O');}
if(mapXY[1]<16){mapXY[1]-=1;}
}else{stage.setMap(mapXY, temp);}//endif

}else{
resolveFloor(will);
}//endif

return will;
}//endresolvecrumblingfloor

public Willy resolveWall(Willy will, int hitPos){
will.moveArray[1][hitPos]=true; // if willy is trying to move into the wall

if(hitPos==0){ // is direction is up
if((will.moveArray[0][0]==true)&&(will.jumpCounter<=will.jumpMid)){
will.endJump=true;
will.keepMoving=' '; // stop the movement animation
}//endif
}else{
will.moveArray[1][hitPos]=true;// stop willy from moving left or right
// will.keepMoving=' '; // stop the movement animation
}//endif

return will;
}//endresolvewall

public Willy resolveConveyer(Willy will, char conveyerDirection){
resolveFloor(will);

if((will.moveArray[0][0]==false)&&(will.endJump==false)){
if(conveyerDirection=='l'){
if((will.moveArray[0][4]==false)||(will.onConveyer==true)){
will.movePos('l');
will.keepMoving='l';
will.direction=0;
will.onConveyer=true;
will.updateImage();
}else{
will.keepMoving=' ';
}//endif
}else//endif

if(conveyerDirection=='r'){
if((will.moveArray[0][3]==false)||(will.onConveyer==true)){
will.movePos('r');
will.keepMoving='r';
will.direction=1;
will.onConveyer=true;
}else{
will.keepMoving=' ';
}//endif
}//endif
}//endif
return will;
}//endresolveconveyer

}//endstagecollision
/* ------------------------- StageCollision Class --------------------------- */
/* ------------------------- ActorCollision Class --------------------------- */
class ActorCollision{
systemInfo gameInfo = new systemInfo();
public ActorCollision(){
}//endconstructor

public boolean ActorHit(Willy willy, Baddies baddies){
boolean hasHit=false;
for(int counter=0; counter<baddies.baddieCount; counter++){
if(baddieCollision(willy, baddies.Baddies[counter])==true){hasHit=true;}//endif
}//endfor
return hasHit;
}//endhavehit

public boolean baddieCollision(Willy willy, Actor baddie){
boolean hasHit=false;
if(checkBoundingBoxCollision(willy, baddie)==true){ //if bounding box collision
findCollisionBoxXYValues(willy, baddie); // find&set collision box XY values
convertFromScreenPosToStringPos(willy, baddie); // convertXY values to character values
if(checkGuardianCollision(willy, baddie)==true){hasHit=true;}// check for collision
}//endif
return hasHit;
}//endbaddiecollision

public boolean checkGuardianCollision(Willy will, Actor bad){
boolean hasHit=false;

char[][] baddieStore = new char[16][16];
char[][] willyStore = new char[16][16];
for(int counter=0; counter<16; counter++){
for(int icounter=0; icounter<16; icounter++){
willyStore[counter][icounter]=will.actorData[will.direction][will.posCounter].charAt((counter*16)+icounter);
baddieStore[counter][icounter]=bad.actorData[bad.direction][bad.posCounter].charAt((counter*16)+icounter);
}//endfor
}//endcounter

String tempString="";
String tempString2="";
for(int ycounter=0; ycounter<boxWH[1]; ycounter++){
for(int xcounter=0; xcounter<boxWH[0]; xcounter++){

tempString+=willyStore[willyPosXY[1]+ycounter][willyPosXY[0]+xcounter];
tempString2+=baddieStore[baddiePosXY[1]+ycounter][baddiePosXY[0]+xcounter];

if(baddieStore[baddiePosXY[1]+ycounter][baddiePosXY[0]+xcounter]=='1'){
if(willyStore[willyPosXY[1]+ycounter][willyPosXY[0]+xcounter]=='1'){
hasHit=true;
xcounter=boxWH[0]+1;
ycounter=boxWH[1]+1;
}//endif
}//endif

}//endfor

tempString="";
tempString2="";
}//endyfor

return hasHit;
}//endcheckguardiancollision

int[] willyPosXY = new int[2];
int[] baddiePosXY = new int[2];
int[] boxSize = new int[4];
int[] boxWH = new int[2];

public void convertFromScreenPosToStringPos(Willy willy, Actor baddie){
boxWH[0]=(boxSize[2]-boxSize[0])/gameInfo.cellSize;
boxWH[1]=(boxSize[3]-boxSize[1])/gameInfo.cellSize;
boxWH[0]--;
boxWH[1]--;

for(int counter=0; counter<2; counter++){
if(baddie.posXY[counter]<willy.posXY[counter]){
baddiePosXY[counter]=(15-boxWH[counter]);
willyPosXY[counter]=0;
}else{
willyPosXY[counter]=(15-boxWH[counter]);
baddiePosXY[counter]=0;
}//endif
}//endfor
}//endconvertfromscreenpostostringpos

public void findCollisionBoxXYValues(Willy willy, Actor baddie){
//baddie pos further left use for willy x otherwise use baddy
if(baddie.posXY[0]<willy.posXY[0]){boxSize[0]=willy.posXY[0];}else{boxSize[0]=baddie.posXY[0];}
//baddie pos higher than willy, use willy, otherwise use baddie
if(baddie.posXY[1]<willy.posXY[1]){boxSize[1]=willy.posXY[1];}else{boxSize[1]=baddie.posXY[1];}

//baddie pos further right use willy for width, otherwise use baddie
if(baddie.posXY[0]<willy.posXY[0]){boxSize[2]=baddie.posXY[0]+32;}else{boxSize[2]=willy.posXY[0]+32;}
//baddie pos lower than willy, use baddie, otherwise use willy
if(baddie.posXY[1]<willy.posXY[1]){boxSize[3]=baddie.posXY[1]+32;}else{boxSize[3]=willy.posXY[1]+32;}
}//endfindcollisionboxxyvalues

public boolean checkBoundingBoxCollision(Willy willy, Actor baddie){
boolean hasHit=false;
int plusValue=0;

for(int counter=0; counter<2; counter++){
if((willy.posXY[0]+plusValue>=baddie.posXY[0])&&(willy.posXY[0]+plusValue<=(baddie.posXY[0]+32))){
if((willy.posXY[1]>=baddie.posXY[1])&&(willy.posXY[1]<=(baddie.posXY[1]+32))){//left inbetween baddie
hasHit=true;
}//endif

if((willy.posXY[1]+32>=baddie.posXY[1])&&((willy.posXY[1]+32)<=(baddie.posXY[1]+32))){//right
hasHit=true;
}//endif
}//endif
plusValue=32;
}//endfor

return hasHit;
}//endcheckboundingboxcollision

}//endactorcollisionclass
/* ------------------------- ActorCollision Class --------------------------- */
/* --------------------------- MinerWilly Class ----------------------------- */
class Willy extends Actor{

Image[] livesImage = new Image[4];
static char willyType='+'; // Miner willy r JetSetWilly image
static int livesCounter;// which animation iage for lives
static int lives; // no of lives left
static int fallCounter=0;

public Willy(Level level, ActorControl actorControl, LevelControl levelControl){
skipPixels = gameInfo.cellSize*3;
posWH[1] = (gameInfo.blockSize*2);
posWH[0] = (gameInfo.blockSize*2)-(skipPixels*2);

livesCounter = 0;
lives = 2;

animate = actorControl.grabWilly("b0c0", willyType);
for(int counter=0; counter<4; counter++){
livesImage[counter]=animate[1][counter];
}//endfor
actorData = actorControl.grabImageString(willyType);

animate = actorControl.grabWilly("bowd", willyType);
initPos(level, levelControl);
flashDataSetup(actorControl);
}//endconstructor

public void setWillyImage(String colour, char type, ActorControl actorControl){
willyType=type;
animate = actorControl.grabWilly(colour, willyType);
}//endgrabwilleyimage

public void grabImage(ActorControl actorControl){
currantImage=actorControl.StringToImage(actorData[direction][posCounter]);
currantImage=actorControl.setTrasparent(currantImage, actorControl.paper);
}//endgrabimage

public void grabImage(int direction, int frame, ActorControl actorControl){
currantImage=actorControl.StringToImage(actorData[direction][frame]);
currantImage=actorControl.setTrasparent(currantImage, actorControl.paper);
}//endgrabimage

public void initPos(Level level, LevelControl levelControl){
int[] whichImage = new int[2];
String tempString;

tempString = levelControl.grabStartPos(level.currentLevel);

posXY[0]=Integer.parseInt(tempString.substring(0, 3));
posXY[1]=Integer.parseInt(tempString.substring(3, 6));
posXY[0]*=gameInfo.cellSize;
posXY[1]*=gameInfo.cellSize;

if(tempString.charAt(6)=='L'){whichImage[0]=0;}else{whichImage[0]=1;}
whichImage[1]=Integer.parseInt(tempString.substring(7, 8));
currantImage = animate[whichImage[0]][whichImage[1]];

clearJump();
clearMoves();
}//endinitpos

public void flashDataSetup(ActorControl actorControl){
actorControl.colourLock=true;
actorControl.ink=Color.white;

for(int xcounter=0; xcounter<8; xcounter++){
for(int ocounter=0; ocounter<2; ocounter++){
for(int icounter=0; icounter<4; icounter++){
actorFlash[xcounter][ocounter][icounter]=animate[ocounter][icounter];
actorFlash[xcounter][ocounter][icounter]=actorControl.setMono(actorFlash[xcounter][ocounter][icounter], actorControl.paper, actorControl.ink);
}//endfor
}//endfor
actorControl.ink=gameInfo.nextColour(actorControl.ink);
}//endfor

actorControl.colourLock=false;
}//endflashdatasetup

public void animateLives(int timerCount){
// if(timerCount%2==0){
// if(livesCounter==3){livesCounter=0;}else{livesCounter++;}
// }//endif
if(timerCount%2==0){
if(livesCounter>=3){livesCounter=0;}else{livesCounter++;}//endif
}//endif
}//endanimatelives

int updateCounter=0;
public void willyMove(){
if((move()==true)||(onConveyer==true)){updateCounter++;}
if(updateCounter==2){updateCounter=0; nextImage();}
}//endwillymove

public void nextImage(){
if((keepMoving!=' ')&&((moveArray[0][0]==true)||(isFalling==true))){
updateImage();
}else//endif

if( (((moveArray[0][3]==true)||(moveArray[0][4]==true))&&(moveArray[0][0]==false))||(keepMoving!=' ') ){
if((moveArray[1][1]==false)&&(moveArray[1][0]==false)&&(moveArray[1][2]==false)&&(moveArray[1][3]==false)&&(isFalling==false)){
updateImage();
}//endif
}//endif

}//endnextimage
}//endwillyclass
/* --------------------------- MinerWilly Class ---------------------------- */
/* ----------------------------- Actor Class ------------------------------- */
class Actor{
systemInfo gameInfo = new systemInfo();

Image currantImage;
Image[][] animate = new Image[2][4];
Image[][][] actorFlash = new Image[8][2][4];
String[][] actorData = new String[2][4];

int[] posXY = new int[2];
int[] posWH = new int[2];

// 0=Desired Direction || 1=Actual direction
// 0=Jump | 1=Up | 2=Down | 3=Left | 4=Right
boolean[][] moveArray = new boolean[2][5];
char[][] hitStore = new char[4][3];
// . . .
// . .
// . .
// . .
// . . .

int currentPos;

int direction;
boolean moveType; //movedirection

int skipPixels;

int posCounter;
int jumpCounter;
char keepMoving;
boolean isFalling;
static boolean hasHit;
static boolean onConveyer=false;

// Baddie Specific
int movementSpeed; // Move ments speed -1=slow 0=normal 1=fast
int[][] maxMinPos = new int[2][2];// extreame left/right top/base positions
boolean doLoop;

public Actor(){
for(int outerCounter=0; outerCounter<2; outerCounter++){
for(int innerCounter=0; innerCounter<5; innerCounter++){
moveArray[outerCounter][innerCounter]=false;
}//endfor
}//endfor

moveType=false;
direction=0;
isFalling=false;
posCounter=0;
jumpCounter=0;
keepMoving = ' ';

currentPos=0;

movementSpeed=0;
doLoop=true;

posWH[0]=gameInfo.blockSize*2;
posWH[1]=gameInfo.blockSize*2;

hasHit=false;
}//endconstructor

int moveCounter=0;
public boolean move(){
boolean hasMoved=false;
if((moveArray[0][0]==false)&&(isFalling==false)&&(onConveyer==false)){
if(moveArray[0][3]==true){setDir(); movePos('l'); hasMoved=true;}//endif
if(moveArray[0][4]==true){setDir(); movePos('r'); hasMoved=true;}//endif
if(moveArray[0][1]==true){setDir(); movePos('u'); hasMoved=true;}//endif
if(moveArray[0][2]==true){setDir(); movePos('d'); hasMoved=true;}//endif
}else{
if(isFalling==true){moveArray[0][0]=false;}
if((moveArray[0][0]==true)&&(isFalling==false)){jump(); hasMoved=true;}
}//endif

return hasMoved;
}//endmove

public void clearMoves(){
for(int ocounter=0; ocounter<2; ocounter++){
for(int icounter=0; icounter<4; icounter++){
moveArray[ocounter][icounter]=false;
}//endfor
}//endfor
keepMoving=' ';
}//endclearmoves

public void clearJump(){
jumpCounter=0;
moveArray[0][0]=false;
keepMoving=' ';
endJump=false;
}//endclearjump

public void movePos(char direction){
switch(direction){
case 'u' : if(moveArray[1][0]==false){posXY[1]-=gameInfo.cellSize;} break;
case 'd' : if(moveArray[1][1]==false){posXY[1]+=gameInfo.cellSize;} break;
case 'l' : if(moveArray[1][2]==false){posXY[0]-=gameInfo.cellSize;} break;
case 'r' : if(moveArray[1][3]==false){posXY[0]+=gameInfo.cellSize;} break;
}//endswitch
}//endmove

public void setDir(){
if(moveType==false){
if(moveArray[0][3]==true){direction=0;}//endif
if(moveArray[0][4]==true){direction=1;}//endif
}else{
if(moveArray[0][1]==true){direction=0;}//endif
if(moveArray[0][2]==true){direction=1;}//endif
}//endif
}//endsetDir

int jumpMax = 36;
int jumpMid = jumpMax/2;
public void jump(){
if(isFalling==false){
if(jumpCounter==0){jumpInit();}
if(endJump==false){if(jumpCounter<=jumpMax){jumpMove();}}
if((jumpCounter>jumpMax)||(endJump==true)){jumpConclude();}
}//endif
}//endjump

public void jumpInit(){
if(onConveyer==false){
if(moveArray[0][3]==true){keepMoving='l';}
if(moveArray[0][4]==true){keepMoving='r';}
setDir();
}//endif
}//endinitaliseJump

char[] valueHolder = new char[3];
boolean endJump=false;
public void jumpMove(){
if(keepMoving=='l'){movePos('l');}else
if(keepMoving=='r'){movePos('r');}

if(jumpCounter<16){
movePos('u');
if(jumpCounter<4){
movePos('u');
}//endif
}else

if(jumpCounter>20){
if(endJump==false){movePos('d');}
if(jumpCounter>32){
if(endJump==false){movePos('d');}
}//endif
}//endif

jumpCounter++;
}//endmovejump

public void jumpConclude(){
jumpCounter=0;
moveArray[0][0]=false;
keepMoving=' ';
endJump=false;
}//endconcludejump

public void updateImage(){
if(posCounter>=3){posCounter=0;}else{posCounter++;}//endif
currantImage=animate[direction][posCounter];
}//endupdateimage

}//endactorclass
/* ----------------------------- Actor Class ------------------------------- */
/* ----------------------------- Stage Class ------------------------------- */
class Stage{
systemInfo gameInfo = new systemInfo();

static String levelInfo;
static String stageInfo;
static Color backgroundColour;
static Image conveyer;
static Image background;
static Image wall;
static Image floor;
static Image crumblingfloor;
static Image[] spare = new Image[2];
static Image[] conveyerStore = new Image[4];

static char conveyerDirection;
static char[] sType = new char[2];//holds the values of the 'special'/'spare' e.g. w=wall, f=floor, etc
int posCounter;

public Stage(Level level, LevelControl levelControl, StageControl stageControl){
initStage(level, levelControl, stageControl);
}//endconstructor

public void initStage(Level level, LevelControl levelControl, StageControl stageControl){
variableInit();
levelDataSetup(level, levelControl, stageControl);
}//endstageinit

public void variableInit(){
posCounter=0;
conveyerDirection='l';
backgroundColour = Color.black;
sType[0]='O';
sType[1]='O';
}//endvariableInit

public void flashDataSetup(StageControl stageControl, Color paper, Color ink){
stageControl.colourLock=true;
stageControl.ink=ink;
stageControl.paper=paper;
Image[] conveyerStore2 = new Image[4];
wall=stageControl.grabSetPiece(stageInfo.substring(6, 8), stageInfo.substring(8, 12));
floor=stageControl.grabSetPiece(stageInfo.substring(12, 14), stageInfo.substring(14, 18));
crumblingfloor=stageControl.grabSetPiece(stageInfo.substring(18, 20), stageInfo.substring(20, 24));
conveyer=stageControl.grabConveyerFrame(stageInfo.substring(24, 26), stageInfo.substring(26, 30), posCounter);
spare[0]=stageControl.grabSetPiece(stageInfo.substring(31, 33), stageInfo.substring(33, 37));
spare[1]=stageControl.grabSetPiece(stageInfo.substring(37, 39), stageInfo.substring(39, 43));
stageControl.colourLock=false;
}//endflashdatasetup

public void levelDataSetup(Level level, LevelControl levelControl, StageControl stageControl){
levelInfo = levelControl.grabInfo('m', level.currentLevel);
stageInfo = levelControl.grabInfo('s', level.currentLevel);

backgroundColour = stageControl.colourGrab(stageInfo.substring(2, 6));
background = stageControl.grabSetPiece(stageInfo.substring(0, 2), stageInfo.substring(2, 6));
wall = stageControl.grabSetPiece(stageInfo.substring(6, 8), stageInfo.substring(8, 12));
floor = stageControl.grabSetPiece(stageInfo.substring(12, 14), stageInfo.substring(14, 18));
crumblingfloor = stageControl.grabSetPiece(stageInfo.substring(18, 20), stageInfo.substring(20, 24));

conveyerStore = stageControl.grabConveyer(stageInfo.substring(24, 26), stageInfo.substring(26, 30));
conveyerDirection = Character.toLowerCase(stageInfo.charAt(30));

sType[0] = stageInfo.charAt(31);
spare[0] = stageControl.grabSetPiece(stageInfo.substring(31, 33), stageInfo.substring(33, 37));
sType[1] = stageInfo.charAt(37);
spare[1] = stageControl.grabSetPiece(stageInfo.substring(37, 39), stageInfo.substring(39, 43));
}//endleveldatasetup

public void moveConveyer(){
switch(conveyerDirection){
case 'l' : if(posCounter<=0){posCounter=2;}else{posCounter--;} break;
case 'r' : if(posCounter>=2){posCounter=0;}else{posCounter++;} break;
}//endswitch
conveyer = conveyerStore[posCounter];
}//endmoveconveyer

public char mapInfo(int posX, int posY){
int counter=(posY*32)+posX;
return levelInfo.charAt(counter);
}//endmapinfo

public void setMap(int[] posXY, char value){
char[] temp;
int counter=(posXY[1]*32)+posXY[0];
temp = levelInfo.toCharArray();
temp[counter]=value;
levelInfo = new String(temp);
}//endsetMap

public int setYPos(int index, int posY){
int crumbleHolder = Character.getNumericValue(levelInfo.charAt(index));
int yPos = posY+gameInfo.blockSize;
yPos -= crumbleHolder*(gameInfo.blockSize/8);
return yPos;
}//endsetcrumblingfloor

}//endstageclass
/* ----------------------------- Stage Class ------------------------------- */
/* ---------------------------- DrawGame Class ------------------------------ */
class DrawGame{
systemInfo gameInfo = new systemInfo();
Banner banner = new Banner();

public DrawGame(){
}//endconstructor

public Graphics drawGameOverText(Graphics g, Color messColour){
return banner.setBanner((gameInfo.cellSize*88), (gameInfo.cellSize*64), "Game Over", g, messColour);
}//enddrawgameover

public Graphics drawLoadingScreen(Graphics g, int whichScreen){
g.setColor(Color.black);

g.fillRect(0, 0, gameInfo.ScreenWidth, gameInfo.ScreenHeight);
switch(whichScreen){
case 0 : g.setColor(Color.red);
g=banner.altSetBanner(16*gameInfo.cellSize, 72*gameInfo.cellSize, 8, "M", g);
g.setColor(Color.yellow);
g=banner.altSetBanner(64*gameInfo.cellSize, 80*gameInfo.cellSize, 8, "A", g);
g.setColor(Color.green);
g=banner.altSetBanner(112*gameInfo.cellSize, 72*gameInfo.cellSize, 8, "N", g);
g.setColor(Color.cyan);
g=banner.altSetBanner(152*gameInfo.cellSize, 88*gameInfo.cellSize, 8, "I", g);
g.setColor(Color.magenta);
g=banner.altSetBanner(192*gameInfo.cellSize, 80*gameInfo.cellSize, 8, "C", g);
break;
case 1 : g.setColor(Color.cyan);
g=banner.altSetBanner(16*gameInfo.cellSize, 88*gameInfo.cellSize, 8, "M", g);
g.setColor(Color.magenta);
g=banner.altSetBanner(56*gameInfo.cellSize, 72*gameInfo.cellSize, 8, "I", g);
g.setColor(Color.red);
g=banner.altSetBanner(96*gameInfo.cellSize, 80*gameInfo.cellSize, 8, "N", g);
g.setColor(Color.yellow);
g=banner.altSetBanner(144*gameInfo.cellSize, 72*gameInfo.cellSize, 8, "E", g);
g.setColor(Color.green);
g=banner.altSetBanner(192*gameInfo.cellSize, 88*gameInfo.cellSize, 8, "R", g);
break;
}//endswwitch

g.setColor(Color.white);
g=banner.setBanner(20*gameInfo.cellSize, 180*gameInfo.cellSize, "(press any key when ready)", g);
return g;
}//enddrawladingscreen

public Graphics drawScreenBase(Graphics g){
//Draw LevelTitleBar
int tempX=gameInfo.blockSize*10;
int tempY=(gameInfo.blockSize*16);
Color barColour = Color.yellow.darker();
g.setColor(barColour);
g.fillRect(0, tempY, gameInfo.ScreenWidth, gameInfo.blockSize);

// draw oxygen banner
tempY=gameInfo.blockSize*17;
tempX=gameInfo.blockSize*10;
g.setColor(Color.red);
g.fillRect(0, tempY, tempX, gameInfo.blockSize);
g.setColor(Color.green);
g.fillRect(tempX, tempY, gameInfo.blockSize*22, gameInfo.blockSize);

//Draw score&lives
tempY = gameInfo.blockSize*18;
g.setColor(Color.black);
g.fillRect(0, tempY, gameInfo.ScreenWidth, (gameInfo.blockSize*6));

return g;
}//enddrawscreenbase

public String setScore(int score){
String tempString = Integer.toString(score);
int scoreLength = tempString.length();
for(int counter=0; counter<(6-scoreLength); counter++){
tempString="0"+tempString;
}//endfor
return tempString;
}//endsetscore

public Graphics drawScore(Graphics g, Level level){
String tempString;

tempString = "High Score ";
tempString+= setScore(level.highscore);
tempString+= " Score ";
tempString+= setScore(level.score);

g.setColor(Color.yellow);
g=banner.setBanner(0, gameInfo.blockSize*19, tempString, g);

return g;
}//enddrawlaives

public Graphics drawLives(Graphics g, Willy willy, Level level, Cheats cheats){
int tempY = gameInfo.blockSize*21;
int tempX = (gameInfo.cellSize*willy.livesCounter);

for(int counter=0; counter<willy.lives; counter++){
g.setColor(Color.cyan);
g.drawImage(willy.livesImage[willy.livesCounter], tempX, tempY, gameInfo.blockSize*2, gameInfo.blockSize*2, null);
tempX+=gameInfo.blockSize*2;
}//endfor

if(cheats.cheatsOn==true){
tempX=(willy.lives*(gameInfo.blockSize*2))+1;
g.drawImage(cheats.cheatingFoot, tempX, tempY, gameInfo.blockSize*2, gameInfo.blockSize*2, null);
}//endif

return g;
}//enddrawlaives

public Graphics drawOxygenBar(Graphics g, Level level){
int tempY=gameInfo.blockSize*17;
int tempX=gameInfo.blockSize*10;

tempX=gameInfo.blockSize*4;
tempY=(gameInfo.blockSize*17)+(gameInfo.cellSize*2);
g.setColor(Color.white);
g.fillRect(tempX, tempY, ((level.oxygen)*(gameInfo.blockSize/8)), (gameInfo.blockSize/2));
g=banner.setBanner(0, gameInfo.blockSize*17, "AIR", g);

return g;
}//enddrawoxygenbar

public Graphics drawLevelTitle(Graphics g, Level level){
int tempX = (32-level.levelTitle.length())/2;
tempX*=gameInfo.blockSize;
int tempY = (gameInfo.blockSize*16);

g.setColor(Color.black);
g=banner.setBanner(tempX, tempY, level.levelTitle, g);

return g;
}//enddrawroomtitle

public Graphics screenBlank(Graphics g, Color colour){
if(colour==null){colour=Color.black;}
g.setColor(colour);
g.fillRect(0, 0, (gameInfo.blockSize*32), (gameInfo.blockSize*16));
return g;
}//endblackout

public Graphics drawPianoPlayer(Graphics g, int index){
int[] cyanHand={17,21,23,8,27,8,25,8,17,21,23,23,9,27,9,25,9,16,19,24,9,27,9,25,9,16,19,24,8,27,8,25,8,17,21,23,25,12,28,12,27,12,17,21,23,25,14,29,14,27,1,19,21,24,14,24,14,22,23,8,27,8,25,21,19,24,23,8,01,17,8};
int[] redHand= {0,0,0,12,28,12,27,12,0,0,0,21,12,28,12,27,12,0,0,0,12,29,12,27,12,0,0,0,12,29,12,27,12,17,0,0,0,17,29,17,28,17,0,0,0,0,17,0,17,29,0,0,0,0,24,0,24,0,0,27,0,27,0,0,0,0,0,17,17,0,17};
if(cyanHand[index]>0){
// if(index>0){
// g.setColor(Color.white);
// g.fillRect( (gameInfo.blockSize*cyanHand[index-1]), (gameInfo.blockSize*15), (gameInfo.blockSize-gameInfo.cellSize), gameInfo.blockSize);
// }//endif
g.setColor(Color.cyan);
g.fillRect( (gameInfo.blockSize*cyanHand[index]), (gameInfo.blockSize*15), (gameInfo.blockSize-gameInfo.cellSize), gameInfo.blockSize);
}//endif
if(redHand[index]>0){
// if(index>0){
// g.setColor(Color.white);
// g.fillRect( (gameInfo.blockSize*cyanHand[index-1]), (gameInfo.blockSize*15), (gameInfo.blockSize-gameInfo.cellSize), gameInfo.blockSize);
// }//endif
g.setColor(Color.red);
g.fillRect( (gameInfo.blockSize*redHand[index]), (gameInfo.blockSize*15), (gameInfo.blockSize-gameInfo.cellSize), gameInfo.blockSize);
}//endif
return g;
}//enddrawpianoplayer

public Graphics drawActor(Graphics g, Actor actor){
g.drawImage(actor.currantImage, actor.posXY[0], actor.posXY[1], (gameInfo.blockSize*2), (gameInfo.blockSize*2), null);
return g;
}//enddrawwilly

public Graphics drawGameOverScreen(Graphics g, Image[] python, int tposY, Color currentColour){
g.setColor(currentColour);
g.fillRect(0, 0, gameInfo.ScreenWidth, (gameInfo.blockSize*16));

int posX=(gameInfo.blockSize*15);
int posY=(gameInfo.blockSize*12);

g.drawImage(python[2], posX, posY, gameInfo.blockSize*2, gameInfo.blockSize*2, null);
posY=(gameInfo.blockSize*14);
g.drawImage(python[3], posX, posY, gameInfo.blockSize*2, gameInfo.blockSize*2, null);
posY=tposY;
g.drawImage(python[1], posX, posY, gameInfo.blockSize*2, gameInfo.blockSize*2, null);

do{
posY-=gameInfo.blockSize*2;
g.drawImage(python[0], posX, posY, gameInfo.blockSize*2, gameInfo.blockSize*2, null);
}while(posY>-(gameInfo.blockSize*2));

return g;
}//enddrawgameoverscreen

public Graphics drawTitleScreen(Graphics g, String textToShow){
g=drawScreenBase(g);
g.setColor(Color.black);
g.fillRect(0,0,(gameInfo.blockSize*32),(gameInfo.blockSize*8));
g.setColor(Color.red);
g.fillRect(0,(gameInfo.blockSize*8), (gameInfo.blockSize*32),(gameInfo.blockSize*8));

int tempY=gameInfo.blockSize*18;
g.setColor(Color.yellow);
g=banner.setBanner(0, tempY, textToShow, g);

return g;
}//enddrawtitlescreen

public Graphics drawPlay(Graphics g, Level level, Stage stage, Props props, Willy willy, Baddies baddies, PropsControl propsControl, SpecialControl specialControl, Special special, Cheats cheats){
g = screenBlank(g, stage.backgroundColour);
g = drawStage(g, stage, props);
g = drawActor(g, willy);
for(int counter=0; counter<baddies.baddieCount; counter++){
g=drawActor(g, baddies.Baddies[counter]);
}//endfor

g=drawScreenBase(g);
g = drawLevelTitle(g, level);
g = drawOxygenBar(g, level);
g = drawScore(g, level);
g = drawLives(g, willy, level, cheats);

if(level.currentLevel==20){
if(level.gameWon==true){g.drawImage(special.swordFishImage, (gameInfo.blockSize*19), (gameInfo.blockSize*5), gameInfo.blockSize*2, gameInfo.blockSize*2, null);}
g.drawImage(special.titletopImage, 0, 0, null);
}//endif

return g;
}//enddrawgamedisplay

public Graphics drawFlash(Graphics g, Level level, Stage stage, Props props, Willy willy, Baddies baddies, int c3, Special special){
int[] tempXY = {19, 5};
stage.setMap(tempXY, 'O');

g = screenBlank(g, stage.backgroundColour);
g = drawStage(g, stage, props);
g.drawImage(willy.actorFlash[c3][willy.direction][willy.posCounter], willy.posXY[0], willy.posXY[1], (gameInfo.blockSize*2), (gameInfo.blockSize*2), null);

for(int counter=0; counter<baddies.baddieCount; counter++){
if(baddies.Baddies[counter].posCounter<4){
g.drawImage(baddies.Baddies[counter].actorFlash[c3][baddies.Baddies[counter].direction][baddies.Baddies[counter].posCounter], baddies.Baddies[counter].posXY[0], baddies.Baddies[counter].posXY[1], (gameInfo.blockSize*2), (gameInfo.blockSize*2), null);
}//endif
}//endfor

if(level.currentLevel==20){
g.drawImage(special.titletopFlash[c3], 0, 0, null);
if(Level.gameWon==true){g.drawImage(special.swordfishFlash[c3], (gameInfo.blockSize*19), (gameInfo.blockSize*5), gameInfo.blockSize*2, gameInfo.blockSize*2, null);}//endif
else{g.drawImage(props.door[0], (gameInfo.blockSize*19), (gameInfo.blockSize*5), gameInfo.blockSize*2, gameInfo.blockSize*2, null);}
}//endif

return g;
}//enddrawgamedisplay

public Graphics drawStage(Graphics g, Stage stage, Props props){
int posX=0;
int posY=0;

for(int outerCounter=0; outerCounter<16; outerCounter++){
posY=outerCounter*gameInfo.blockSize;
for(int innerCounter=0; innerCounter<32; innerCounter++){
posX=innerCounter*gameInfo.blockSize;
int index=innerCounter+(outerCounter*32);
switch(stage.levelInfo.charAt(index)){
case 'O' : break;
case 'o' : g.setColor(stage.backgroundColour); g.fillRect(posX, posY, gameInfo.blockSize, gameInfo.blockSize); break;
// case 'o' : g.drawImage(stage.background, posX, posY, gameInfo.blockSize, gameInfo.blockSize, null); break;
case 'W' : g.drawImage(stage.wall, posX, posY, gameInfo.blockSize, gameInfo.blockSize, null); break;
case 'F' : g.drawImage(stage.floor, posX, posY, gameInfo.blockSize, gameInfo.blockSize, null); break;
case 'C' : g.drawImage(stage.conveyer, posX, posY, gameInfo.blockSize, gameInfo.blockSize, null); break;
case 'S' : g.drawImage(stage.spare[0], posX, posY, gameInfo.blockSize, gameInfo.blockSize, null); break;
case 's' : g.drawImage(stage.spare[1], posX, posY, gameInfo.blockSize, gameInfo.blockSize, null); break;
case 'N' : g.drawImage(props.baddie[0], posX, posY, gameInfo.blockSize, gameInfo.blockSize, null); break;
case 'n' : g.drawImage(props.baddie[1], posX, posY, gameInfo.blockSize, gameInfo.blockSize, null); break;
case 'x' : g.drawImage(props.button[0], posX, posY, gameInfo.blockSize, gameInfo.blockSize, null); break;
case 'X' : g.drawImage(props.button[1], posX, posY, gameInfo.blockSize, gameInfo.blockSize, null); break;
case 'K' : g.drawImage(props.setKey(), posX, posY, gameInfo.blockSize, gameInfo.blockSize, null); break;
case 'D' : g.drawImage(props.setDoor(), posX, posY, gameInfo.blockSize*2, gameInfo.blockSize*2, null); break;
default : g.drawImage(stage.crumblingfloor, posX, stage.setYPos(index,posY), gameInfo.blockSize, gameInfo.blockSize, null);
}//endswitch

}//endfor
}//endfor

return g;
}//enddrawstage
}//enddrawgame
/* ---------------------------- DrawGame Class ------------------------------ */
/* --------------------------- SystemInfo Class ----------------------------- */
class systemInfo{

// Global Variables
static int blockSize = 16;
static int cellSize = blockSize/8;
static int ScreenWidth = blockSize*32;
static int ScreenHeight = blockSize*24;
static int HalfScreenWidth = ScreenWidth/2;
static int HalfScreenHeight = ScreenHeight/2;

static Random randomNumber = new Random();
static long startTime;

public systemInfo(){
}//endconstructor

public Color nextColour(Color currentColor){
if(currentColor==Color.black){currentColor=Color.white;}else
if(currentColor==Color.white){currentColor=Color.yellow;}else
if(currentColor==Color.yellow){currentColor=Color.cyan;}else
if(currentColor==Color.cyan){currentColor=Color.green;}else
if(currentColor==Color.green){currentColor=Color.magenta;}else
if(currentColor==Color.magenta){currentColor=Color.red;}else
if(currentColor==Color.red){currentColor=Color.blue;}else
if(currentColor==Color.blue){currentColor=Color.black;}
return currentColor;
}//endnextcolour

public void setTime(){
startTime = System.currentTimeMillis();
}//endsettime

public long timeDifference(){
long difference=System.currentTimeMillis()-startTime;
return difference;
}//endtimedifference

public int makeNumber(long upperValue){
return ((int)(Math.random()*upperValue));
}//endmakenumber

public double makeNumber(double upperValue){
return (Math.random()*upperValue);
}//endmakenumber

public synchronized void holdMe(long howLong) {
try {wait(howLong);} catch (InterruptedException f) {return;}
}//endholdme2

public synchronized void holdMe(int howLong) {
try {wait(howLong);} catch (InterruptedException f) {return;}
}//endholdme2

}//endprograminfoclass
/* --------------------------- SystemInfo Class ----------------------------- */
/* ------------------------- Colour Filter Class ---------------------------- */
class colourTransparent extends RGBImageFilter{
private int transColour;

public colourTransparent(int transColour){
this.transColour = transColour;
canFilterIndexColorModel = true;
}//endconstructir

public int filterRGB(int x, int y, int rgb){
if ((rgb & 0x00ffffff) == transColour)
return rgb & 0x00ffffff;
return rgb;
}//endfilterRGB

}//endcolorfilter

class colourSwapFilter extends RGBImageFilter{
private int backgroundColour;
private int foreGroundColour;

public colourSwapFilter(int bColour, int fColour){
backgroundColour = bColour;
foreGroundColour = fColour;
canFilterIndexColorModel = true;
}//endconstructir

public int filterRGB(int x, int y, int rgb){
if ((rgb&0x00ffffff) != backgroundColour)
return foreGroundColour;
return rgb&0x00ffffff;
}//endfilterRGB

}//endcolorfilter

class colourReplaceFilter extends RGBImageFilter{
private int oldColour;
private int newColour;

public colourReplaceFilter(int oColour, int nColour){
oldColour = oColour;
newColour = nColour;
canFilterIndexColorModel = true;
}//endconstructir

public int filterRGB(int x, int y, int rgb){
if ((rgb&0x00ffffff) == oldColour)
return newColour;
return rgb&0x00ffffff;
}//endfilterRGB

}//endcolorfilter


/* ------------------------- Colour Filter Class ---------------------------- */
/* --------------------------- DataControl Class ---------------------------- */
class DataControl{
systemInfo gameInfo = new systemInfo();
static Frame frame = new Frame();
static Color paper;
static Color ink;
int imageSize;
static boolean colourLock;

public DataControl(){
frame.addNotify();
imageSize=8;
colourLock=false;
}//endconstructor

public void setColour(String newColours){
if(colourLock==false){
ink = colourGrab(newColours.substring(2, 4));
paper = colourGrab(newColours.substring(0, 2));
}//endif
}//endsetcolour

public Image StringToImage(String setPieceChar){
Image offscreenImage;
Graphics bufferStore;
int[][] iholder=new int[imageSize][imageSize];
char[][] cholder=new char[imageSize][imageSize];

int valueHolder;
int index;
offscreenImage = frame.createImage(imageSize,imageSize);
bufferStore = offscreenImage.getGraphics();

for(int outerCounter=0; outerCounter<imageSize; outerCounter++){
for(int innerCounter=0; innerCounter<imageSize; innerCounter++){
cholder[outerCounter][innerCounter]=setPieceChar.charAt(innerCounter+(outerCounter*imageSize));
iholder[outerCounter][innerCounter]=Character.getNumericValue(cholder[outerCounter][innerCounter]);
}//endfor
}//endfor

for(int outerCounter=0; outerCounter<imageSize; outerCounter++){
for(int innerCounter=0; innerCounter<imageSize; innerCounter++){
valueHolder=iholder[outerCounter][innerCounter];
if(valueHolder==0){bufferStore.setColor(paper);}
if(valueHolder==1){bufferStore.setColor(ink);}
bufferStore.drawRect(innerCounter, outerCounter, 1, 1);
}//endfor
}//endfor

return offscreenImage;
}//endintarraytoimage

public Image StringToImage180(String setPieceChar){
Image offscreenImage;
Graphics bufferStore;
int valueHolder;

offscreenImage = frame.createImage(imageSize,imageSize);
bufferStore = offscreenImage.getGraphics();

for(int outerCounter=0; outerCounter<imageSize; outerCounter++){
for(int innerCounter=0; innerCounter<imageSize; innerCounter++){

valueHolder = Character.getNumericValue(setPieceChar.charAt(((imageSize-1)-innerCounter)+(outerCounter*imageSize)));

if(valueHolder==0){bufferStore.setColor(paper);}
if(valueHolder==1){bufferStore.setColor(ink);}
bufferStore.drawRect(innerCounter, outerCounter, 1, 1);
}//endfor
}//endfor
return offscreenImage;
}//endintarraytoimage

public String reverseString(String tempString){
String tempString2="";

for(int counter=0; counter<16; counter++){
for(int counter2=0; counter2<16; counter2++){
tempString2+=tempString.charAt( (15-counter2)+(counter*16) );
}//endfor
}//endfor

return tempString2;
}//endreversestring

public Image setTrasparent(Image offscreenImage, Color colour){
offscreenImage = frame.createImage(new FilteredImageSource(offscreenImage.getSource(),new colourTransparent(colour.getRGB() & 0x00ffffff)));
return offscreenImage;
}//endsettransparent

public Image setMono(Image offscreenImage, Color backColour, Color foreColour){
offscreenImage = frame.createImage(new FilteredImageSource(offscreenImage.getSource(),new colourSwapFilter((backColour.getRGB()&0x00ffffff), foreColour.getRGB()) ));
return offscreenImage;
}//endsettransparent

public Image replaceColour(Image offscreenImage, Color oldColour, Color newColour){
offscreenImage = frame.createImage(new FilteredImageSource(offscreenImage.getSource(),new colourReplaceFilter((oldColour.getRGB()&0x00ffffff), newColour.getRGB()) ));
return offscreenImage;
}//endsettransparent


public Color colourGrab(String colourCode){
Color colour = Color.black;
colourCode = colourCode.toLowerCase();

switch(colourCode.charAt(0)){
case 'w' : colour = Color.white; break;
case 'y' : colour = Color.yellow; break;
case 'c' : colour = Color.cyan; break;
case 'g' : colour = Color.green; break;
case 'm' : colour = Color.magenta; break;
case 'r' : colour = Color.red; break;
case 'n' : colour = Color.blue; break;
case 'd' : colour = Color.darkGray; break;
default : colour = Color.black; break;
}//endswitch

switch(colourCode.charAt(1)){
case 'l' : colour = colour.brighter(); break;
case 'd' : colour = colour.darker(); break;
}//endwwitch

return colour;
}//endcolourgrab

}//endstorecontrol
/* --------------------------- DataControl Class ---------------------------- */
/* ----------------------------- Cheats Class ------------------------------- */
class Cheats{
static Image cheatingFoot;
static boolean cheatsOn;
static String cheatCodeString;
int cheatLevel;

public Cheats(SpecialControl specialControl){
cheatsOn=false;
cheatCodeString="";
cheatLevel=0;
grabCheatingFoot(specialControl);
}//endconstructor

public void grabCheatingFoot(SpecialControl specialControl){
cheatingFoot = specialControl.grabGameOver("gf", "BOCO");
}//endgrabcheatingfoot

public void checkCheatsOff(char newChar){
if(cheatsOn==false){
cheatCodeString+=newChar;
cheatCodeString=cheatCodeString.toLowerCase();
switch(Level.gameDev.charAt(0)){
case 'B' : if(cheatCodeString.length()>7){cheatCodeString=cheatCodeString.substring(2);}
if(cheatCodeString.equalsIgnoreCase("6031769")){cheatsOn=true; cheatCodeString="------";}
break;
case 'S' : if(cheatCodeString.length()>10){cheatCodeString=cheatCodeString.substring(2);}
if(cheatCodeString.equalsIgnoreCase("typewriter")){cheatsOn=true; cheatCodeString="------";} else
if(cheatCodeString.equalsIgnoreCase("writetyper")){cheatsOn=true; cheatCodeString="------";}
break;
}//endswitch
}else{
checkCheat(newChar, '-');
}//endif
}//endcheckcheats

public void checkCheatsOn(char newChar){
if(cheatsOn==true){
checkCheat(newChar, newChar);
if(Level.gameDev=="Bug-Byte"){
if(cheatCodeString.charAt(5)=='6'){cheatCodes(cheatCodeString);}//endif
}else{
if(cheatCodeString.charAt(5)=='9'){cheatCodes(cheatCodeString);}//endif
}//endif
}//endif
}//endcheckcheatsoff

public void checkCheat(char oldChar, char newChar){
char[] tempHolder = cheatCodeString.toCharArray();
if(Level.gameDev=="Bug-Byte"){
if((oldChar<='6')&&(oldChar>='0')){tempHolder[Character.getNumericValue(oldChar)-1]=newChar;}//endif
}else{
if((oldChar<='5')&&(oldChar>='0')){tempHolder[Character.getNumericValue(oldChar)-1]=newChar;}//endif
if(oldChar=='9'){tempHolder[5]=newChar;}//endif
}//endif
cheatCodeString = new String(tempHolder);
}//edcheckcheat

public void cheatCodes(String userCode){
userCode = userCode.substring(0, 5);
if(userCode.equals("-----")){cheatLevel= 1;}else
if(userCode.equals("1----")){cheatLevel= 2;}else
if(userCode.equals("-2---")){cheatLevel= 3;}else
if(userCode.equals("12---")){cheatLevel= 4;}else
if(userCode.equals("--3--")){cheatLevel= 5;}else
if(userCode.equals("1-3--")){cheatLevel= 6;}else
if(userCode.equals("-23--")){cheatLevel= 7;}else
if(userCode.equals("123--")){cheatLevel= 8;}else
if(userCode.equals("---4-")){cheatLevel= 9;}else
if(userCode.equals("1--4-")){cheatLevel=10;}else
if(userCode.equals("-2-4-")){cheatLevel=11;}else
if(userCode.equals("12-4-")){cheatLevel=12;}else
if(userCode.equals("--34-")){cheatLevel=13;}else
if(userCode.equals("1-34-")){cheatLevel=14;}else
if(userCode.equals("-234-")){cheatLevel=15;}else
if(userCode.equals("1234-")){cheatLevel=16;}else
if(userCode.equals("----5")){cheatLevel=17;}else
if(userCode.equals("1---5")){cheatLevel=18;}else
if(userCode.equals("-2--5")){cheatLevel=19;}else
if(userCode.equals("12--5")){cheatLevel=20;}
}//endcheatcodes

}//endcheatsclass
/* ----------------------------- Cheats Class ------------------------------- */
/* ----------------------------- Level Class ------------------------------- */
class Level{
systemInfo gameInfo = new systemInfo();

static String levelTitle;
static String gameDev;
static int currentLevel;
static int oxygen;
static int score;
static int highscore;
static boolean gameWon;
static boolean levelComplete;
static boolean gamePaused;
static boolean musicOn;

public Level(LevelControl levelControl, SpecialControl specialControl){
currentLevel = 1;
highscore = 0;
score = 0;
// gameDev = "Bug-Byte"; // alt = "Software Projects"
// gameDev = "Software Projects"; // alt = "Bug-Byte";
musicOn = true;
gamePaused = false;
initLevel(levelControl);
}//endconstructor

public void initLevel(LevelControl levelControl){
oxygen = 220;
levelTitle = levelControl.grabInfo('t', currentLevel);
levelComplete=false;
gameWon=false;
}//endlevelSetup

public void nextLevel(){
currentLevel++;
if(currentLevel>20){currentLevel=1;}
}//endnextlevel

public void oxygencountDown(){
oxygen-=(gameInfo.blockSize/8);
updateScore();
}//endoxygencoutdown

public int oxygenUpdate(int timerCount){
timerCount++;
if((timerCount/2)==(gameInfo.blockSize/gameInfo.cellSize)){
oxygen-=2;
timerCount=0;
}//endif
return timerCount;
}//endoxygenupdate

public void updateScore(){
score+=100;
if(score>=999999){score=0;}
}//endupdatescore

public void updateHighScore(){
if(highscore<=score){highscore=score;}
}//endupdatehighscore

}//endlevelclass
/* ----------------------------- Level Class ------------------------------- */
/* -------------------------- LevelControl Class ---------------------------- */
class LevelControl extends DataControl{
LevelData levelData = new LevelData();

public LevelControl(){
}//endstoreStage

public String grabStartPos(int level){
return levelData.startPos(level);
}//endgrabstartpos

public String grabInfo(char dataType, int level){
String holder="";

switch(dataType){
case 'm' : holder=levelData.mapData(level); break; // level map
case 's' : holder=levelData.setPieceData(level); break;// level setpieces
case 'p' : holder=levelData.propData(level); break; // level props
case 'n' : holder=levelData.baddieData(level); break; // level baddies
case 't' : holder=levelData.levelTitle(level); break; // level title
case 'x' : break; // level special
}//endswitch

return holder;
}//endlevelstore

}//endlevelstoreclass
/* -------------------------- LevelControl Class ---------------------------- */
/* --------------------------- LevelData Class ----------------------------- */
class LevelData{
systemInfo gameInfo = new systemInfo();

public LevelData(){
}//endconstructor

public String startPos(int level){
String tempString="";
switch(level){
case 1 : tempString="012104R0"; break;
case 2 : tempString="012104R0"; break;
case 3 : tempString="012104R0"; break;
case 4 : tempString="230104L3"; break;
case 5 : tempString="004024R0"; break;
case 6 : tempString="124024L0"; break;
case 7 : tempString="012104R0"; break;
case 8 : tempString="012104R0"; break;
case 9 : tempString="004104R0"; break;
case 10 : tempString="004032R0"; break;
case 11 : tempString="020008R0"; break;
case 12 : tempString="012104R0"; break;
case 13 : tempString="228104R0"; break;
case 14 : tempString="228104R0"; break;
case 15 : tempString="012104R0"; break;
case 16 : tempString="012104R0"; break;
case 17 : tempString="010024L1"; break;
case 18 : tempString="234104L1"; break;
case 19 : tempString="110080L3"; break;
case 20 : tempString="212104L0"; break;
default : tempString="012104R0"; break;
}//endswitch
return tempString;
}//endstartpos

public String levelTitle(int level){
String holder="";
switch(level){
case 1 : holder="Central Cavern"; break;
case 2 : holder="The Cold Room"; break;
case 3 : holder="The Menagerie"; break;
case 4 : holder="Abandoned Uranium Workings"; break;
case 5 : holder="Eugene's Lair"; break;
case 6 : holder="Processing Plant"; break;
case 7 : holder="The Vat"; break;
case 8 : holder="Miner Willy meets the Kong Beast"; break;
case 9 : holder="Wacky Amoebatrons"; break;
case 10 : holder="The Endorian Forest"; break;
case 11 : holder="Attack of the Mutant Telephones"; break;
case 12 : holder="Return of the Alien Kong Beast"; break;
case 13 : holder="Ore Refinery"; break;
case 14 : holder="Skylab Landing Bay"; break;
case 15 : holder="The Bank"; break;
case 16 : holder="The Sixteenth Cavern"; break;
case 17 : holder="The Warehouse"; break;
case 18 : holder="Amoebatrons' Revenge"; break;
case 19 : holder="Solar Power Generator"; break;
case 20 : holder="The Final Barrier"; break;
}//endswitch
return holder;
}//endleveltitle

public String mapData(int level){
// W:Wall F:Floor C:Conveyer O:Backgound o:Backgound(used)
// N:Baddie1 n:Baddie2 K:Key D:Door 1-8:CrumblingFloor
// S:Spare s:Spare2 xX:Switch
String holder="";
switch(level){
case 1 : holder="WOOOOOOOOKONOOOONOOOOOOOOOOOOKOWWOOOOOOOOOOOOOOOKOOOOOOOOOOOOOOWWOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOWWOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOWWOOOOOOOOOOOOOOOOOOOOOOnKOOnOOOWWFFFFFFFFFFFFF8888F8888FFFFFFFFWWOOOOOOOOOOOOOooooOooooOOOOOOOKWWFFFOOOOOOOOOOOOOOOOOOOOOOOOOOOWWOOOOOOOOOOOOOOOOWWWOnOOOOOOOOOWWFFFFOOOCCCCCCCCCCCCCCCCCCCCOOOWWOOOOOOOOOOOOOOOOOOOOOOOOOOOOFFWWOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOWWOOOOOOOOOOOnOOOOOOOWWW88888FFFWWOOOOFFFFFFFFFFFFFFFOOOoooooODOWWOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOWWFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFW"; break;
case 2 : holder="WOOOOOOOOOOOOOOOOOOWWWWWWWWWWWWWWOOOOOOKOOOOOOOOOOOOOOOOKOOOOONWWOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOWWOOOOOOOOOOOOOOOOOOOO888FOOOOOOWWOOOOOOOOOOOOOOOOOOOOoooOOOOOOOWWFFFFFFFFFFFFFFFFFFFOOOOOOOOWOOWWOOOOOOOOOOOOOOOOOOOOFFFFW88WOOWWF88888OOOOOOOOOOOOOOOOOOWKoWOOWWOoooooOOOOOOOOOOOOOOOOOOW88WOOWWOOKOOOOOFFFFFFFOOOOOOOOOW88WOOWWOOOOOOOOOOOOOOOOOO8888OOW88WOOWWOOCCCCOOOOOOOOOOOOooooOOW88WOOWWOOOOOOOOOOOOOFFFFOKOOOOOW88WOOWWOOOOOOO8888OOOOOOOOOOOOOOooODOWWOOOOOOOooooOOOOOOOOOOOOOOOOOOOWWFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFW"; break;
case 3 : holder="WOOOOOKOOONOOOOKOOSOOOOKOOONOOOWWOOOOOOOOOOOOOOOOONOOOOOOOOOOOOWWOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOWWOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOWWOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOWWFFFF88888888888888888888888888WWOOOOooooooooooooooooKooooooooKWWFFFFFFOOOOOOOOOOOOOOOOOOOOFFFFWWSOOOOOOOOOOOOOOOOOOOOOOOOOOOOOWWSOOOOCCCCCCOOOOOOOOOOOOOOOOOOOWWSOOOOOOOOOOOOOOOOOOOOOOOFFFFFFWWNOOOOOOOOOOOOFFFFFOOOOOOOOOODOWWOOOOFFFFFFOOOOOOOOOOOOOOOOOOOOWWOOOOOOOOOOOOOOOOOOOOFFFFFFFFFFWWOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOWWFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFW"; break;
case 4 : holder="WKOOOOONOOOOOOWWWWWWWWWWWWWWWWWWWOOOOOOOOOOOKOOOOOOOOOOOOKOOODOWWOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOWWOOOOOOOOOOOOOOOOOOOFFFFFOOOOOOWWOOOOOOOOOOOOOOOOOOOOOOOOOOFFFFWWFOOOOOFOOOOOOOOOFOOOOOOOOOOOOOWWOOOOOOOOOOOFFOOKOOOOFFFOOOOOOKWW888OOOOOOOOOOOOOOOOOOOOOOOOOOOWWoooOOOFFOOOOOOOOOOOOOOOOOFFFOOWWOOOOOOOOOOOOOOOOOFFFOOOOOOOOOOWWCCCOOOOOOOOOOOOOOOOOOOOOOOOOOFWWOOOOOOOOOOOFFFOOOOOOOFFFOOOOOOWWOOOOOFFOOOOOOOOOOOOOOONOOOOFFFWWOOOOOOOOOOOOOOOOOFFOOOOOOOOOOOWWOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOWWFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFW"; break;
case 5 : holder="WOOOOOOOOOOOOOOOOOONOOOOOOOOOOOWWOOOOOOOOOOOOOOOOOOOOOOOOOOOOOKWWOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOWWOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOWWOOOOOOOOOOOOOOOOOOOOOOOnOOOOOOWWFFFFFFFFFFFFFOOOO8888FFFFFFFOOWWOOOOOOOOOKOOOOOOOooooOOOOOOOFFWWOOOOOOOOOOOOOOOOOOOOnOOOOOOOKOWWOOOOOOOOOOOOOOOOOCCCCCCCCCCOOOWWOOOFFFFFFFFFFOOOOOOOOOOOOOOOOOWWOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOWW88FFFFFFFFFFFOOOOFFFFFFFOOOOOFWWooOOOOKWKOOOOOOOOOOOOOOOOOOOOOWWFFOOOOOWOOOOOWDOWOOOOOOOOOOOOOWWOOOOnOOWOOOOOWOOWWWWWWWnnOOOOOWWFFFFFFFWWWWWWWWWWWWWWWWFFFFFFFW"; break;
case 6 : holder="WOOOOOOOOOOOOOOOOOOOOOOOOOOOODOWWOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOWWOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOWWOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOWWOOOOOOOOOOOOOOOOOOOONOOOOOOOOOWWOOOOOOOFFFOOOOFFOOOOFFFFFOOOOOWWOOFFOOOOOOOOOOKWKOOOOOOOOOOFFFWWOOOOOOOOOOOOOOOWOOOOOOOOOOOOOKWWOOOOOOOOOOOOOOOOOOOOOOFFFFFOOOWWFFOOOOOOOOOOOOOOOOOOOOOOOOOOOOWWKOOOOOFFFFFFFFFWFFFFFFFFFOOOOOWWOOOOOOOOOOOOKOOWNOOOOOOOOOOOOOWWOOnOOOOOOOOOOOOWOOOOOOOOOOOFFFWWOOCCCCOOOOOOOOOOOOOOOFFOOOOOOOWWOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOWWFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFW"; break;
case 7 : holder="WOOOOOOOOOOOOOWWWWWWWWWWWWWWWWWWWOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOWWOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOWWOOOOOOOOOOOOOOFFW888888888888KWWOOOOOOOOOOOOOOOOW8888888888888WWOOOOOOCCCCCOOFFFW8888888888N88WWFFFOOOOOOOOOOOOOW88K8888888888WWOOOOOOOOOOOOOOOOW888888888K888WWFOOOOOOOOOOOOOOOW88888N8888888WWOOOOOOOOOOOOOFFFW8888888888888WWFFFFFFFFFFFOOOOOW8K88888888N88WWOOOOOOOOOOOOOOOOW888888888888KWWOOOOOOOOOOOOOWWWW88888N8888888WWOOOOOOOOFFFOOWDOOoooooooooooooWWOOOOOOOOOOOOOWOOOOOOOOOOOOOOOOWWFFFFFFFFFFFFFWWWWWWWWWWWWWWWWWW"; break;
case 8 : holder="WONOOOXOOONOOOOOOWXOWOOOOOOOOOOWWOOOOOOOOOOOOOOOOWOOWOOOOOOOOOOWWOOOOOOOOOOOOKOssWOOOOOOOOOOOFFWWOOOOOOOOOOOOOOOOWOOOOOOOOOOOOOWWOOOOOOOOOOOOOOOOWOOOOOOOOOOOOOWWFFFOOOOOFFFFFFOOWFFOOOOOOOOOOOWWOOOOOOOOOOOOOKOOWOOOFFFFOOOOOFWWOFFFOOOOOOOOOOOOWOOOOOOOOOFOOOWWOKOOOOOFFFOOOOOOWOOOOOOOOOOOOOWWOOOOOOOOOOOOOOOOWFFFFFOOOOOOOOWWFOOOOOOOOOOFFFOOWOOOOOOOOOFFFFWWOOOOOOOOFFOOOOOOSOOOOOOOOOOOOOWWOOOFFOOOOOOOOOOOSOOOOFFFFFOOOOWWOOOOOOOOOOCCCWDOWFFOOOOOOOOOKOWWOOOOOOOOOOOOOWOOWOOOOOnOOOOOOOWWFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFW"; break;
case 9 : holder="WDOWOOOOOOOOOOOOOOOOOOOOOOOOOOOWWOOOOOOOOOOOOOOOKOOOOOOOOOOOOOOWWOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOWWOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOWWOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOWWFFFFOOFFFOOFFFFFFFFOOFFFOOFFOOWWOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOWWOOOOOOOOOOOOOOOOOOOOOOOOOOOOFFWWOOFFOOFFFOOCCCCCCCCOOOOOOOOOOOWWOOOOOOOOOOOOOOOOOOOOOFFFOOFFOOWWFFOOOOOOOOOOOOOOOOOOOOOOOOOOOOWWOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOWWOOFFOOFFFOOFFFFFFFFOOFFFOOFFOOWWOOOOOOOOOOOOOOOOOOOOOOOOOOOOFFWWOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOWWFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFW"; break;
case 10 : holder="WOOOOOOOOOONOFFFWONONFFFFFFFFFFWWOOOOOOOOOOOOOKOWOOOONOOOOOOOOKWWFFFFFFOOOOOOOOOWOOOOKOOOOOFFFFWWOONOOOOOOOOOOOOWOOOOOOOOOOOOOOWWOOOOOOOOOOOOOOOWFFFFOOOOOOOOOOWWOOOOOOOF8888888WOOOOOOFFFFFFFFWWFFFFOOOOoooKoooWOOOOOOOOOOOOOOWWOOOOOOOOOOOOOOOWFFFFFFF888OOOOWWFFFFFOOOOOOOOOOWOKOOOOOoooOOOOWWNOOOOOOOFFFFFFFWOOOOOOOOOOOOFFWWFFFF88OOOOOOOOOWFFFFFFFOOOOOONWWOOOOooOOOOOOOOOWOOOOOON888OOOOWWOOOOOOOSSSSSSSSSSOOOOOOoooOOOOWWFFFOOOOOOOODOOOOOOOOOOOOOOOFFFWWOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOWSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS"; break;
case 11 : holder="WWWWWWWOOOOOOOOOOOOsOOOOKOOOOOOWWDOOOOOOOOOOOOOOOOONOOOOOOOOOOKWWOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOWWFFFFOOOOOOOOOOOOOOOOOOOOOOOOOOWWKOOOOOOOOOOOOOOOOOOOOOOOOOOOOOWWOOOOFFFFFFOOOOFFSSSSSSSFFOOOOOWWOOOOOOOOOOOOOOOOOOKOOOOsOOOOFFWWOOOOOOOOOOOOOOOOOOOOOOOsOOOOOOWWFFOOCCOOOOOOOOOOOOOOOOOsOOOOFFWWOOOOOOOOOOFFFFFFFFFOOOONOOOOOOWWOOOOOOOOOOOsOOOOOOsOOOOOOOOFOOWWOOOOO888FOOsOOOOOONOOOOOOOOOOOWWOOOOOoooOOONOOOOOOOOOOOOOOOFFFWWFFOOOOOOOOOOOOOOOOOOOOFFFOOOOKWWOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOWWFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFW"; break;
case 12 : holder="WONOOOXOOONOOOOOOWXOOWOOOOOOOOOWWOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOWWOOOOOOOOOOOOOOssOOOOOOOOOOOOOOWWOOOOOOOOOOOOOOKOOOOOOOOOOOOOOOWWOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOWWFFFOOOOO88888WOOW888888FFKOOOOWWOKOOOOOOoooooWOOWooooooOOOOOOFWWOOOOOFFOOOOOOWOKWOOOOOOOOOOOOOWWOOFOOOOOOOOOOWOOWOOOOOOOFFFFFFWWOOOOOOOOOFFFFWOOWOOOOOOOOOOOOOWWOOOOOFOOOOOOOOOOWFFFOOOOOOOOOOWWOOOOOOOOOOOOOOOOSOOOOOOOFFOOOOWWFFFFFFOOOOOOOOOOSOOOOOnOOOOnOOWWOOOOOOOOOOFFFWDOWCCCCCCCCCCCKOWWOOOOOOOOOOOOOWOOWOOOOOOOOOOOOOWWFFFFFFFFFFFFFWWWWFFFFFFFFFFFFFW"; break;
case 13 : holder="WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWOOSOOOOOOOOOOOOOOOOOOOOOOOOOOOWWOOSOOOOOOOOOOOOOOOOOOOOOOOOOOOWWOOSOOOFFFFFFFFFFFFFFFFFFOKFFFFWWOOSOOOOOOOOOOOOOOOOOOOOOOOOOOOWWOOSOOOOOOOOOOOOOOOOOOOOOOOOOOOWWOOSOOOFFOKFFFFOOFFFFFOOFFFFOOFWWOOSOOOOOOOOOOOOOOOOOOOOOOOOOOOWWOOSOOOOOOOOOOOOOOOOOOOOOOOOOOOWWOOSOOOFFFFFOOFFFOOKFFFFFOKFFFFWWOOSOOOOOOOOOOOOOOOOOOOOOOOOOOOWWOOSOOOOOOOOOOOOOOOOOOOOOOOOOOOWWOOSOOOFFFOKFFFOOFFFFOOFFFFOOFFWWDOSOOOOOOOOOOOOOOOOOOOOOOOOOOOWWOOSOOOOOOOOOOOOOOOOOOOOOOOOOOOWWFFCCCCCCCCCCCCCCCCCCCCCCCCCCFFW"; break;
case 14 : holder="WOOOOOOOOOOOOOODOOOOOOOOOOOOOOOWWOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOWWOOOOOOOOOOOOOOOOOOOOOOKOOOOOOOWWOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOWWOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOWWOOOOOOOOOOOOOOFSOOOOOOOOOOOOOOWWOOFSOOOOOOFSOOOOOOFSOOOOOOFSOOWWOOOOOOFSOOOOOOOKOOOOOOFSOOKOOOWWOOKOOOOOOOOOOOOOOOOOOOOOOOOOOOWWOOOOFSOOOOOOFSOOOOOOFSOOOOOOFSWWOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOWWFSOOOOOOFSOOOOCCCCCCOOOOFSOOOOWWOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOWWOOOOOOFSOOOOOOOOOOOOOOOOOOOOOOWWOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW"; break;
case 15 : holder="WOOOOOWWWWWWWWWWWWWWWWWWWWWWWWWWWOOOOOOOOOOOOOOOOOOOOOOOOOOOOSSWWOOOOOOOOOOOOOOOOOOOOOOOOKOOOSSWWDOOOOOOCCCCCCCCCCCCCCCCFFFFFSSWWOOOOOOOsOOOOOOOOOOOOOOOOOOOsSSWWFFFFFOONOOOOOOOOOOOOOOOOOOOsSSWWOOOOOOOOOOOKOOOOOOOOOOOFFOOsSSWWOOOOOO8OOOOFFOOOOOOOOOOOOOOsSSWWOOFFOOoOOOOOOOOOOFFOOOOOOOOsSSWWOOOOOOOOOOOOOOOOOOOOOOOOFFOsSSWWFFOOOOOOOOOFFOOOOOOOOOOOOOONSSWWOOOOOOOOOOOOOOOOOFFOOOOOOOOOSSWWOOOOFFFOOOOOOOOOOOOOOOFFOOOOSSWWOOOOOOOOOOOFFOOOOOOOOOOOOOOOSSWWOOOOOOOOOOOOOOOOOOOOOOOOOKOOSSWWFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFW"; break;
case 16 : holder="WKOOOOOOOOOOOOOOOOOOOOOOOOOOOOOWWOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOWWOOOOOOOOOOOOOOOOOOOOOOOOOOOOOKWWOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOWWOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOWWFOOOOFOOOOWDOWOOOOOOOFFFOOOOOOWWOOOOOOOOOOWOOWWOOOOOOOOOOOOOOOWWOOOFOOOOOOWOKWWWOOOOOOOOFFFFFFWWOOOOOOOOOOWOOWWWWOOOOOOOOOOOOOWW88CCCCCCCCCCCCCCCCCCCCCCCCOOOOWWooOOOOOOOOOOOOOOKOOOOOOOOOOOOOWWOOOOOOOOOWWFFOOOOOOOOOOOOFOOOOWWFFFFFFFFFOOOOOOOOOOOOOOOOOOOOOWWOOOOOOOOOOOOOOOOOOOFOOOOOFOOOOWWOOOOOOOOOOOOOOOOOOOOOONNNOOOOOWWFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFW"; break;
case 17 : holder="WOOOOOOOOOOOOOOOOOOOOOOOOOOOOWWWWOOOOOOOOOOOOOOOOOOOOOOOOOOOODOWWOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOWWOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOWWOOOOOnOOnOOOnOOnOOOOOnOnOOOOOOWWFF8888888OO8888888OO888K88OOFFWW88N888888OO8888888OO888888OO88WW888888888OO888K888OO88888NOO88WW88oo88888OO88CCCCCOO888888OO88WWK8OO88888OO8888888OO888888OO88WW88OO88888OO8888888K88N8888OO88WW88OO8888NOO88888888888888KOO88WW88OO88888OO888888888888888OO88WWooOOoooooOOoooooooooooooooOOooWWOOOOOOOOOOOOOOOOOOOOOOOOOOFFFFWWFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFW"; break;
case 18 : holder="WOOOOOOOOOOOOOOOOOOOOOOOOOOOWDOWWOOOOOOOOOOOOOOOKOOOOOOOOOOOOOOWWOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOWWOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOWWOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOWWOOFFOOFFFOOFFFFFFFFOOFFFOOFFFFWWOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOWWFFOOOOOOOOOOOOOOOOOOOOOOOOOOOOWWOOOOOOOOOOOFFFFFFFFOOFFFOOFFOOWWOOFFOOFFFOOOOOOOOOOOOOOOOOOOOOWWOOOOOOOOOOOOOOOOOOOOOOOOOOOOFFWWOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOWWOOFFOOFFFOOFFFFFFFFOOFFFOOFFOOWWFFOOOOOOOOOOOOOOOOOOOOOOOOOOOOWWOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOWWFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFW"; break;
case 19 : holder="WWWOOOOOOOOOOOOOOOOOOOONOOOOOOOWWDOOOOOOOOOOOOOOOOOOOOONOOOOOOKWWOOOOOOOOOOOOOOOOOOOOOONOOOOOOWWWOOOOOOOOOOOOOOOOOOOOOONOOOOOOOWWOOOOOOOOOOOOOOOOOOOOOONOOOOOOOWWKOFFOOOOFFFFFFOOOOOOOONFFFFFFFWWOOOOOOOOOOOOOOOOOOOOOONOOOOOOOWWOOOOOOOOOOOOOOOOOOFFFONOOOOOOOWWFFOOOOOOOOOOFFFOOOOOOONFFFFFFFWWOOOOOOOOOOOOOOOOOOOOOONOOOOOOOWWOOOOOOOOOOOOOOOOOOFFOONOOOOOOOWWFFFFOOOOOOOOOOOOOOOOOONFFFFFFFWWOOOOOOCCCCOOOFFFFFOOOONOOOOOOKWWOOOOOOOOOOOOOOOOOOOOOONOOOOOOOWWWWOOOOOOOOOOOOOOOOOOOONOOOOOOOWWWWFFFFFFFFFFFFFFFFFFFFWFFFFFFFW"; break;
case 20 : holder="OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOWWWWWWWWWWWWWWOOOOOOOOOOOOOOOOOOWDOWOKOOOOOOOWOOOOOOOOOOOOOOOOOOWOOWOOOOOOOOKWWWWWWWWWWWWWWWWWWWWOOWOOOOOOOOOWWOOOOOOOOOOOOOOOOOOOOOOOOOOOOFFWWOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOWWCCCCCCCCCCCCCCCCCCCCCCOOO8OOOOWWOOOOOOOONKONOKOONOKONOOOOoOFOOWWFFOOOOOOOOOOOOOOOOOOOOOOOOOOOOWWOOOOFFOOOOOOOOOOOOOOOOOOOOOOOOWWOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOWWFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFW"; break;
}//endswitch
return holder;
}//endstorelevel1
/*

OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
OOOOOOOOOOOOOOOOOOWWWWWWWWWWWWWW
OOOOOOOOOOOOOOOOOOWDOWOKOOOOOOOW
OOOOOOOOOOOOOOOOOOWOOWOOOOOOOOKW
WWWWWWWWWWWWWWWWWWWOOWOOOOOOOOOW
WOOOOOOOOOOOOOOOOOOOOOOOOOOOOFFW
WOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOW
WCCCCCCCCCCCCCCCCCCCCCCOOO8OOOOW
WOOOOOOOONKONOKOONOKONOOOOOOFOOW
WFFOOOOOOOOOOOOOOOOOOOOOOOOOOOOW
WOOOOFFOOOOOOOOOOOOOOOOOOOOOOOOW
WOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOW
WFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFW

*/


public String setPieceData(int level){
// BackGround Wall Floor DecayingFloor ConveyerBelt Spare1 Spare2
// SetPieceType SetTypeNo BackGroundColour darken/lighten ForegroundColour darken/lighten
// conveyerbelt direction
String holder="";
switch(level){
case 1 : holder="BAB0B0WAYDRDFAB0R0DAB0RDCAB0GDLFAB0R0FAB0R0"; break;//B0B0B0 WAYDRD FAB0R0 DAB0RD CAB0GDL FAB0R0 WAYDRD
case 2 : holder="BANDNDWAYDRDFANLM0DANDMDCANDYDRFANLMDFANLMD"; break;//B0NDND WAYDRD FANLM0 DANDMD CAYDNDR FANLM0 WAYDRD
case 3 : holder="B0BOBOWBNDCOFBBOCODBBOCDCBBORDLFCBOMOFCBOMO"; break;//B0BOBO WBNDCO FBBOCO DBBOCD CBBOMDL FBBOCO FBNDCO
case 4 : holder="BOBOBOWANDCDFABOYODABOYDCABOMDRFABOYOFABOYO"; break;//BOBOBO WANDCD FABOYO DABOYD CABOMDR FABOYO WANDCD
case 5 : holder="BORDRDWAYDCDFARDCDDARDGDCCROYOLFARDCDFARDCD"; break;//BORDRD WAYDCD FARDCD DARDGD CCROYOL FARDCD WAYDCD
case 6 : holder="BOBOBOWCYDRDFDBOGODABORDCABOCDLFCBOGOFDBOGO"; break;//BOBOBO WCYDRD FCBOGO DABORD CABOCDL FDBOGO WCYDRD
case 7 : holder="BOBOBOWACLNDFABOYODCBORDCDBOGDLFABOYOFABOYO"; break;//BOBOBO WACLND FABOYO DCBORD CDBOGDL FABOYO WACLND
case 8 : holder="BOBOBOWAROYOFABORDDCBORDCEBOGORWAROYOFABORD"; break;//BOBOBO WAROYO FABORD DCBORD CEBOGOR FABORO FDROYO
case 9 : holder="BOBOBOWDRDYDFABOYDDCBORDCFBOGDRFABOYDFABOYD"; break;//BOBOBO WDYDRD FABOYD DCBORD CFBOGDR FABOYD WDYDRD
case 10 : holder="BOBOBOWERDYDFEBOGODDBORDCFBOGDLFFBOCDFFBOGO"; break;//BOBOBO WERDYD FEBOGO DDBORD CFBOGDL FFBOCD WERDYD
case 11 : holder="BOBOBOWFNDYDFABONODABONDCGBOGDLFGBOCLFCBORO"; break;//BOBOBO WFNDYD FABONO DABOND CGBOGDL FBBOCO FCBORO
case 12 : holder="BOBOBOWACOGLFABOMODABOMDCEBOYORWACOGLDABOMD"; break;//BOBOBO WACOGL FABOMO DABOMD CEBOYOR WACOGL DABOMD
case 13 : holder="BOBOBOWDYDRDFHBOCDDAB0RDCFBOGDRFIBOYDWAYDRD"; break;//BOBOBO WDYDRD FHBOCD DAB0RD CFBOGOR FIBOYD WAYDRD
case 14 : holder="BONDNDWGBOCOFJNOGODAB0RDCFNOMOLFKNDGDWGBOCO"; break;//BONDND WGBOCO FJNOGO DAB0RD CFNOMOL FKNDGD WGBOCO
case 15 : holder="BOBOBOWFNDYDFLBONODABONDCGBOCOLFMBOYDFCBORO"; break;//BOBOBO WFNDYD FLBONO DABOND CGBOCOL FMBOYD FBBOCO
case 16 : holder="BOBOBOWHCOGOFABORODABORDCEBOYOLWACOGLDABOMD"; break;//BOBOBO WHCOGO FABORO DABORD CEBOYOL WACOGL DABOMD
case 17 : holder="BOBOBOWIRDYDFABOGDDCBOGOCAGDBORFAB0R0WAYDRD"; break;//BOBOBO WIRDYD FABOGD DCBOGO CAGDBOR FAB0R0 WAYDRD
case 18 : holder="BOBOBOWKRDYDFABORODAB0RDCAB0GDLFAB0R0WAYDRD"; break;//BOBOBO WKRDYD FABORO DAB0RD CAB0GDL FAB0R0 WAYDRD
case 19 : holder="BOGDGDWAYDRDFAGDBODAB0RDCAGDYDLFAB0R0WAYDRD"; break;//BOGDGD WAYDRD FAGDBO DAB0RD CAGDYDL FAB0R0 WAYDRD
case 20 : holder="BOBOBOWAYDGDFABORODAB0RDCAB0CDRFAB0R0WAYDRD"; break;//BOBOBO WAYDGD FABORO DAB0RD CAB0CDR FAB0R0 WAYDRD
}//endswitch
return holder;
}//endsetpiecedata

public String propData(int level){
//no.keys door key1 baddie1 baddie2 switch
//PropType PropTypeNo BackGroundColour darken/lighten ForegroundColour darken/lighten
String holder="";
switch(level){
case 1 : holder="05DAYDNDKAB0GDBBB0CDBAB0GLSBOYD"; break;//04 DAYDND KAB0GD BBB0CD BAB0GL SBOYD
case 2 : holder="05DBR0M0KBNDGDBBNDCDBAB0GLSBOYD"; break;//04 DBR0M0 KBNDGD BBNDCD BAB0GL SBOYD
case 3 : holder="05DCNDYDKABOGDBDBOMOBDBOMOSBOYD"; break;//05 DCNDYD KABOGD BDBOMO BDBOMO SBOYD
case 4 : holder="05DDNDYDKABOGDBEBOCDBEBOCDSBOYD"; break;//05 DDNDYD KABOGD BEBOCD BEBOCD SBOYD
case 5 : holder="05DERDWOKCRDGDBCRDMDBARDYDSBOYD"; break;//05 DERDWO KCRDGD BCRDMD BARDYD SBOYD
// case 6 : holder="05DFNDYDKDBOGDBFBOYDBAB0MOSBOYD"; break;//05 DFNDYD KABOGD BFBOYD BLB0GL SBOYD
case 6 : holder="05DFNDYDKABOGDBFBOYDBLB0MOSBOYD"; break;//05 DFNDYD KABOGD BFBOYD BLB0GL SBOYD
case 7 : holder="05DGNDMDKABOGDBGRDYDBGRDYDSBOYD"; break;//05 DGNDMD KABOGD BGRDYD BGRDYD SBOYD
case 8 : holder="04DHNDYDKEBOGDBCBOCDBABOGDSBOYD"; break;//04 DHNDYD KEBOGD BCBOCD BABOGD SBOYD
case 9 : holder="01DINDYDKABOGDBBBOCDBABOGLSBOYD"; break;//01 DINDYD KABOGD BBBOCD BABOGL SBOYD
case 10 : holder="05DJMDYDKFBOGDBHBOGDBHBOGDSBOYD"; break;//05 DJMDYD KFBOGD BHBOGD BHBOGD SBOYD
case 11 : holder="05DKROYOKGBOGDBDBOYOBDBOROSBOYD"; break;//05 DKROYO KGBOGD BDBOYO BDBOYO SBOYD
case 12 : holder="05DLYOMOKEBOGDBCBOCDBABOGDSBOYD"; break;//05 DLYOMO KEBOGD BCBOCD BABOGD SBOYD
case 13 : holder="05DMNDWOKHBOGDBBB0CDBAB0GLSBOYD"; break;//05 DMNOWO KHBOGD BBB0CD BAB0GL SBOYD
case 14 : holder="04DNYDMDKINDGDBBB0CDBAB0GLSBOYD"; break;//04 DNYDMD KIBDGD BBB0CD BAB0GL SBOYD
case 15 : holder="03DOROYOKJBOGDBDBOYOBDBOYOSBOYD"; break;//03 DOROYO KJBOGD BDBOYO BDBOYO SBOYD
case 16 : holder="04DPYOMOKKBOGDBIBCGDBIBCGDSBOYD"; break;//04 DPYOMO KKBOGD BIBCGD BIBCGD SBOYD
case 17 : holder="05DQNOGOKAGDGDBJNDGDBABOYDSBOYD"; break;//05 DQNOGO KAGDGD BJNDGD BABOYD SBOYD
case 18 : holder="01DRNDYDKABOGDBBB0CDBAB0GLSBOYD"; break;//01 DRNDYD KABOGD BBB0CD BAB0GL SBOYD
case 19 : holder="03DSYONOKAGDGDBKYOYOBKYOYOSBOYD"; break;//03 DSYONO KAGDGD BKYOYO BKYOYO SBOYD
case 20 : holder="05DTMDYDKABOGDBDBOGOBDBOGOSBOYD"; break;//05 DTMDYD KABOGD BDBOGO BDBOGO SBOYD
}//endswitch
return holder;
}//endpropdata

public String baddieData(int level){
// Type ForegroundColour extreameleft/top, extreameright/base, initblock
// direction, Speed(-1, 0, 1, 2, 3, ...)
String holder="";
switch(level){
case 1 : holder="ABOYO060056122056064056R2"; break;
case 2 : holder="BBOYD004024147024142024L2BBOCD092104235104232104L2"; break;
case 3 : holder="CBOMD004024130024126024L2CBORD142024235024142024R2CBOGD004104155104155104L2"; break;
case 4 : holder="DBOGO046104123104054104R2DBORO005104082104005104R2"; break;

case 5 : holder="EBOYD004024099024099024L2EBODD028056099056028056R2FBOWD120000120088120000R1"; break;

case 6 : holder="GBOYO039064106064046064R2GBOMO103064170064108064R2GBOCO053104162104066104R2GBOYD189104234104200104R2"; break;
case 7 : holder="HBOCL120008234008120008R3HBOMO013064082064080064L3HBOYD133104234104136104R3"; break;
case 8 : holder="IBOGO120000120000120000R0JBOGO120256120256120256R2KBOMO084088122088088088R1KBOGO004104074104072104L2KBOCD140056170056144056R2"; break;
case 9 : holder="LBOMO040000040104040008R1LBOGD080000080104080008R2LBOCD160000160104160008R1LBORO200000200104200008R2MBOGO096024144024096024R2MBOCD096080144080128080R1"; break;
case 10 : holder="NBOCD132040173040160040L2NBOYO068056115056068056R2NBORO060080115080092080R1NBOMO028104211104064104R2"; break;
case 11 : holder="OBOYO116024195024120024R2OBOGO108056147056114056R1OBORO036104155104124104L2PBOGD024032024104024036R1PBOMO096008096056096017R2PBOYD168048168104168052R1PBORO208008208104208050L3"; break;
case 12 : holder="IBOGO120000120000120000R0JBOGO120256120256120256R1KBOYO084088122088088088R1KBOGO004104074104072104L2KBOCD196048226048196048R2"; break;
case 13 : holder="QBOMO052008232008056008R3QBOGO052032232032126032R1QBOYO052056232056162056L2QBORO052080232080142080R1RBOWO040008040104040013R2"; break;
case 14 : holder="SBOWD008000008072008004R3SBOCD088000088032088001R1SBOYD168000168056168005R2TBOWD256256256256256256R0TBOCD256256256256256256R0TBOYD256256256256256256R05BOWD256256256256256256R05BOCD256256256256256256R05BOYD256256256256256256R0"; break;
case 15 : holder="UBOYD072028072104072042R2UBOWD120028120104120064R1UBOGO168028168104168076L2VBOCO136104152104138104R2"; break;
case 16 : holder="WBOCD200040232040208040R1WBOMO140056184056140056R2WBOYD008080056080008080R2WBOGO008104144104072104R2"; break;
case 17 : holder="YBOMO038104066104040104R1YBOCD094104202104096104R3XBOND024064024099024067R1XBOYD080005080096080063R3XBOWO152000152062152050R1XBOMO216005216091216005R3"; break;
case 18 : holder="MBOGO094024146024096024R1MBOMO094048136048128048R2MBOCD094080136080128080R1MBOYD094104146104130104R2ZBOMO040005040101040011R2ZBOGD080005080101080011R1ZBOCD160005160101160012R3ZBOYD200005200101200009R1"; break;
case 19 : holder="1BOYD184024232024192024R21BOND176048232048225048R21BORD184072232072234072R11BOYD106104232104129104R20BOYD040004040100040066R30BORD088048088100088054R30BOND128004128080128080R1"; break;
case 20 : holder="2BOYO054104180104054104R2RBOWD192040192104192040R1"; break;
}//endswitch
return holder;
}//endpropdata

}//endstorelevel
/* --------------------------- LevelData Class ----------------------------- */
/* -------------------------- StageControl Class ---------------------------- */
class StageControl extends DataControl{
StageData stageData = new StageData();

public StageControl(){
}//endconstructor

public Image grabSetPiece(String setPiece, String setPieceColour){
Image tempImage;
String backgroundString = " ";

setPiece=setPiece.toLowerCase();
setPieceColour=setPieceColour.toLowerCase();

switch(setPiece.charAt(0)){
case 'f' : backgroundString=stageData.floorData(setPiece.charAt(1)); break; // floor
case 'w' : backgroundString=stageData.wallData(setPiece.charAt(1)); break; // wall
case 'd' : backgroundString=stageData.crumblingfloorData(setPiece.charAt(1)); break; // crumbling (decaying) floor
default : backgroundString=stageData.backgroundData(setPiece.charAt(1)); break; // background
}//endswitch

setColour(setPieceColour.substring(0, 4));
tempImage = StringToImage(backgroundString);
return tempImage;
}//endgrabsetpiece

public Image[] grabConveyer(String setPiece, String setPieceColour){
String[] conveyerString = new String[4];
Image[] tempImage = new Image[4];

setPiece=setPiece.toLowerCase();
setPieceColour=setPieceColour.toLowerCase();

conveyerString = stageData.conveyerData(setPiece.charAt(1));
setColour(setPieceColour.substring(0, 4));

for(int counter=0; counter<4; counter++){
tempImage[counter] = StringToImage(conveyerString[counter]);
}//endfor

tempImage[3]=tempImage[1];

return tempImage;
}//endgrabbackground

public Image grabConveyerFrame(String setPiece, String setPieceColour, int frameNo){
String[] conveyerString = new String[4];
Image tempImage;

setPiece=setPiece.toLowerCase();
setPieceColour=setPieceColour.toLowerCase();

conveyerString = stageData.conveyerData(setPiece.charAt(1));
setColour(setPieceColour.substring(0, 4));

tempImage=StringToImage(conveyerString[frameNo]);

return tempImage;
}//endgrabbackground


}//endcontrolstage
/* -------------------------- StageControl Class ---------------------------- */
/* --------------------------- storeStage Class ----------------------------- */
class StageData{
systemInfo gameInfo = new systemInfo();
public StageData(){
}//endconstructor

public String backgroundData(char backgroundType){
String setHolder = "";
switch(backgroundType){
default : setHolder = "1111111111111111111111111111111111111111111111111111111111111111"; break;
}//enswitch
return setHolder;
}//endstorelevel1

public String wallData(char wallType){
String setHolder = "";
switch(wallType){
case 'a' : setHolder = "1101110100000000011101110000000011011101000000000111011100000000"; break; // From level1
case 'b' : setHolder = "1000000111000011101001011001100110011001101001011100001110000001"; break;
case 'c' : setHolder = "0000000001100110000000001001100100000000011001100000000010011001"; break; // From level6
case 'd' : setHolder = "0101101001011010010110100101101001011010010110100101101001011010"; break; // From level9
case 'e' : setHolder = "0100101001001010010010100101001001010100010010100010101000101010"; break; // From level10
case 'f' : setHolder = "1010101001010101101010100101010110101010010101011010101001010101"; break; // From level11
case 'g' : setHolder = "1111111001111101001110110001011100011111001001110100001110000001"; break; // From level14
case 'h' : setHolder = "1011011000000110101100001011011000000000101101111000011100110000"; break; // From level16
case 'i' : setHolder = "1111111110011001101110111111111111111111100110011011101111111111"; break; // From level17
case 'j' : setHolder = "1111111110011001101110111111111111111111100110011011101111111111"; break; // From level18
default : setHolder = "1111111110000001100000011111111111111111100000011000000111111111"; break;
}//endswitch
return setHolder;
}//endstorelevel1

public String crumblingfloorData(char crumblingFloorType){
String setHolder = "";
switch(crumblingFloorType){
case 'a' : setHolder = "1111111111011011101001010010010001010010001000000000100000000000"; break;
case 'b' : setHolder = "1111111111111111011001101001100101000010000110001110101000000000"; break;
case 'c' : setHolder = "1111111110101010010101011010101001010101101010100101010110101010"; break;// From Level7
case 'd' : setHolder = "1111110011111111100001110000110000001000000010000000100000000000"; break;// From Level10
default : setHolder = "1111111111011011101001010010010001010010001000000000100000000000"; break;
}//endswitch
return setHolder;
}//endstorelevel1

public String floorData(char floorType){
String setHolder = "";
switch(floorType){
case 'a' : setHolder = "1111111111111111110110110110111011000101010000000000000000000000"; break; // From level1
case 'b' : setHolder = "1111111111111111011001101001100101100110100110011111111100000000"; break; // From level3(Floor)
case 'c' : setHolder = "0001000000010000000100000001000000010000000100000001000000010000"; break; // From level3(Web)
case 'd' : setHolder = "1111111111111111100110011001100111111111100110010110011000000000"; break; // From level6
case 'e' : setHolder = "0111110011111111111011110001111000001100000010000000100000001000"; break; // From level10
case 'f' : setHolder = "1111111111111111110010100110010110010010001010001000001000000000"; break; // From level10
case 'g' : setHolder = "1111111111111111111111111111111110101010000000000000000000000000"; break; // From level11
case 'h' : setHolder = "1111111111111111000100010010001001000100100010001111111111111111"; break; // From level13(floor)
case 'i' : setHolder = "1111111110000001100000011000000110000001100000011000000110000001"; break; // From level13(ladder)
case 'j' : setHolder = "1111111111111111011000100110010001111000011100000110000001100000"; break; // From level14(left)
case 'k' : setHolder = "1111111111111111010001100010011000011110000011100000011000000110"; break; // From level14(right)
case 'l' : setHolder = "1111111111111111110111010111011110101010010101010010001000000000"; break; // From level15(floor)
case 'm' : setHolder = "1111111111111111000110000001100000011000000110000001100000011000"; break; // From level15(ladder)
default : setHolder = "1111111110000001100000011000000110000001100000011000000110000001"; break;
}//endswitch
return setHolder;
}//endstorelevel1

public String[] conveyerData(char conveyerType){
String[] setHolder = new String[4];
switch(conveyerType){
case 'a' : setHolder[0] = "1100001101100110001111000110011000000000100110011111111100000000";
setHolder[1] = "1111000001100110111100000110011000000000100110011111111100000000";
setHolder[2] = "0011110001100110110000110110011000000000100110011111111100000000";
setHolder[3] = "1111000001100110111100000110011000000000100110011111111100000000";
break;// FromLevel1
case 'b' : setHolder[0] = "0000111110101010000011110110011001100110000000000000000000000000";
setHolder[1] = "1100001110101010001111000110011001100110000000000000000000000000";
setHolder[2] = "1111000010101010111100000110011001100110000000000000000000000000";
setHolder[3] = "0011110010101010110000110110011001100110000000000000000000000000";
break;// FromLevel2
case 'c' : setHolder[0] = "1111001101100110001111110110011000000000000000000000000000000000";
setHolder[1] = "1111110001100110111111000110011000000000000000000000000000000000";
setHolder[2] = "0011111101100110111100110110011000000000000000000000000000000000";
setHolder[3] = "1100111101100110110011110110011000000000000000000000000000000000";
break;// FromLevel6
case 'd' : setHolder[0] = "1101001101100110001111010000000000000000000000000000000000000000";
setHolder[1] = "0111101000110011011110100000000000000000000000000000000000000000";
setHolder[2] = "0011110101100110110100110000000000000000000000000000000000000000";
setHolder[3] = "0100111101100110010011110000000000000000000000000000000000000000";
break;// FromLevel7
case 'e' : setHolder[0] = "1111000001100110111100001010101000000000000000000000000000000000";
setHolder[1] = "0011110001100110110000111010101000000000000000000000000000000000";
setHolder[2] = "0000111101100110000011111010101000000000000000000000000000000000";
setHolder[3] = "1100001101100110001111001010101000000000000000000000000000000000";
break;// FromLevel8
case 'f' : setHolder[0] = "1100001101100110001111000110011000000000000000000000000000000000";
setHolder[1] = "1111000001100110111100000110011000000000000000000000000000000000";
setHolder[2] = "0011110001100110110000110110011000000000000000000000000000000000";
setHolder[3] = "1111000001100110111100000110011000000000000000000000000000000000";
break;// FromLevel9
case 'g' : setHolder[3] = "1111111001100110111111100000000000000000000000000000000000000000";
setHolder[2] = "1111101101100110101111110000000000000000000000000000000000000000";
setHolder[1] = "1110111101100110111011110000000000000000000000000000000000000000";
setHolder[0] = "1011111101100110111110110000000000000000000000000000000000000000";
break;// FromLevel11
case 'h' : setHolder[0] = "0000111101100110000011111010101000000000000000000000000000000000";
setHolder[1] = "1100001101100110001111001010101000000000000000000000000000000000";
setHolder[2] = "1111000001100110111100001010101000000000000000000000000000000000";
setHolder[3] = "0011110001100110110000111010101000000000000000000000000000000000";
break;// FromLevel12
case 'i' : setHolder[0] = "1100001101100110001111000110011000000000000000000000000000000000";
setHolder[1] = "1111000001100110111100000110011000000000000000000000000000000000";
setHolder[2] = "0011110001100110110000110110011000000000000000000000000000000000";
setHolder[3] = "1111000001100110111100000110011000000000000000000000000000000000";
break;// FromLevel12
default : setHolder[0] = "1100001101100110001111000110011000000000100110011111111100000000";
setHolder[1] = "1111000001100110111100000110011000000000100110011111111100000000";
setHolder[2] = "0011110001100110110000110110011000000000100110011111111100000000";
setHolder[3] = "1111000001100110111100000110011000000000100110011111111100000000";
break;
}//endswitch
return setHolder;
}//endconveyerdata
}//endstoreStageclass
/* --------------------------- storeStage Class ----------------------------- */
/* ----------------------------- Props Class -------------------------------- */
class Props{
systemInfo gameInfo = new systemInfo();

static String propsInfo;
static String levelInfo;

static Image[] door = new Image[2];
static Image[] keys = new Image[5];
static Image[] baddie = new Image[2];
static Image[] button = new Image[2];

static int keysLeft;
static int buttonsLeft;
int keysColourCounter;
int doorColourCounter;

public Props(Level level, LevelControl levelControl, PropsControl propsControl){
initProps(level, levelControl, propsControl);
}//endconstructor

public void initProps(Level level, LevelControl levelControl, PropsControl propsControl){
variableInit();
levelDataSetup(level, levelControl, propsControl);
}//endinitprops

public void variableInit(){
keysColourCounter=0;
doorColourCounter=0;
keysLeft=5;
buttonsLeft=2;
}//endvariableInit

public void flashDataSetup(PropsControl propsControl, Color paper, Color ink, int currentLevel){
propsControl.colourLock=true;
propsControl.paper=paper;
propsControl.ink=ink;
baddie[0]=propsControl.grabProp(propsInfo.substring(14, 16), propsInfo.substring(16, 20));
baddie[1]=propsControl.grabProp(propsInfo.substring(20, 22), propsInfo.substring(22, 26));
keys[0]=propsControl.grabProp(propsInfo.substring(8, 10), propsInfo.substring(4, 8));
for(int counter=1; counter<5; counter++){keys[counter]=keys[0];}
door[0]=propsControl.grabProp(propsInfo.substring(2, 4), propsInfo.substring(4, 8));
door[1]=door[0];
if((currentLevel==8)||(currentLevel==12)){
button[0]=propsControl.setMono(button[0], Color.black, propsControl.ink);
button[1]=propsControl.setMono(button[1], Color.black, propsControl.ink);
}//endif
propsControl.colourLock=false;
}//endflashdatasetup

public void levelDataSetup(Level level, LevelControl levelControl, PropsControl propsControl){
propsInfo = levelControl.grabInfo('p', level.currentLevel);
levelInfo = levelControl.grabInfo('m', level.currentLevel);

if((level.gameDev=="Software Projects")&&(level.currentLevel==6)){propsInfo=propsInfo.replace('A', 'D');}
if((level.gameDev=="Bug-Byte")&&(level.currentLevel==6)){propsInfo=propsInfo.replace('L', 'A');}

keysLeft = Integer.parseInt(propsInfo.substring(0, 2));

door[0] = propsControl.grabProp(propsInfo.substring(2, 4), propsInfo.substring(4, 8));
String doorMaster=reverseColours(propsInfo.substring(2, 8));
door[1] = propsControl.grabProp(doorMaster.substring(0, 2), doorMaster.substring(2, 6));

String keyMaster=changeColour(propsInfo.substring(8, 14));
for(int counter=0; counter<4; counter++){
keys[counter]=propsControl.grabProp(keyMaster.substring(0, 2), keyMaster.substring(2, 6));
keyMaster=changeColour(keyMaster);
}//endfor


baddie[0] = propsControl.grabProp(propsInfo.substring(14, 16), propsInfo.substring(16, 20));
baddie[1] = propsControl.grabProp(propsInfo.substring(20, 22), propsInfo.substring(22, 26));

button = propsControl.grabSwitch(propsInfo.substring(27, 31));

}//endlevelDataSetup

public String reverseColours(String stringSet){
char[] temp = stringSet.toLowerCase().toCharArray();

char holder = temp[2];
temp[2]= temp[4];
temp[4]= holder;

return new String(temp);
}//endreversecoloura

public String changeColour(String stringSet){
stringSet=stringSet.toLowerCase();
char[] temp = stringSet.toCharArray();

switch(temp[4]){
case 'm' : temp[4]='y'; break;
case 'y' : temp[4]='c'; break;
case 'c' : temp[4]='g'; break;
case 'g' : temp[4]='m'; break;
}//endswitch

String returnString = new String(temp);
return returnString;
}//endstringset

public Image setKey(){
if(keysColourCounter==3){keysColourCounter=-1;}
keysColourCounter++;
if(keysLeft==4){if(keysColourCounter>=3){keysColourCounter-=3;}}


return keys[keysColourCounter];
}//endkeycolour

public Image setDoor(){
if(keysLeft<=0){
if(doorColourCounter==1){
doorColourCounter=0;
}else{
doorColourCounter=1;
}//endif
}//endif

return door[doorColourCounter];
}//endsetDoor

}//endpropsclass
/* ----------------------------- Props Class -------------------------------- */
/* -------------------------- propControl Class ----------------------------- */
class PropsControl extends DataControl{
PropsData propsData = new PropsData();

public PropsControl(){
}//endconstructor

public Image[] grabSwitch(String setPieceColour){
String[] backgroundString = new String[2];
Image[] tempImage = new Image[2];

setPieceColour=setPieceColour.toLowerCase();
backgroundString=propsData.switchData();

setColour(setPieceColour.substring(0, 4));

tempImage[0] = StringToImage(backgroundString[0]);
tempImage[1] = StringToImage(backgroundString[1]);

return tempImage;
}//endgrabswitch

public Image grabProp(String setPiece, String setPieceColour){
String backgroundString = " ";
Image tempImage;

setPiece=setPiece.toLowerCase();
setPieceColour=setPieceColour.toLowerCase();

// Split props into items and keys?
switch(setPiece.charAt(0)){
case 'd' : backgroundString=propsData.doorData(setPiece.charAt(1)); imageSize=16; break;
case 'k' : backgroundString=propsData.keyData(setPiece.charAt(1)); imageSize=8; break;
case 'b' : backgroundString=propsData.nastiesData(setPiece.charAt(1)); imageSize=8; break;
}//endswitch

setColour(setPieceColour.substring(0, 4));

tempImage = StringToImage(backgroundString);
return tempImage;
}//endgrabprop

}//endpropcontrolclass
/* -------------------------- propControl Class ----------------------------- */
/* --------------------------- storeProps Class ----------------------------- */
class PropsData{
public PropsData(){
}//endconstructor

public String[] switchData(){
String[] holder = new String[2];
holder[0] = "1111111110000001100000010100001000111100000010000000011000000110";
holder[1] = "1111111110000001100000010100001000111100000100000110000001100000";
return holder;
}//endswitchdata

public String nastiesData(char propType){
String holder = "";
switch(propType){
case 'a' : holder="0100010000101000100101000101000100110101110101100101100000010000"; break;//plant - level 1
case 'b' : holder="1111111111111110011111100111110001001100010011000000100000001000"; break;//stalagmite - level 1
case 'c' : holder="0111111000111100000111000001100000011000000010000000100000001000"; break;//other stalagmite - level 5
case 'd' : holder="0001000011010110001110001101011000111000010001001100011000101000"; break;//creepy crawly/spider
case 'e' : holder="0001000000010000000100000101010000111000110101100011100001010100"; break;//spike/mace - level 6
case 'f' : holder="0011110000011000101111011110011111100111101111010001100000111100"; break;//cross
case 'g' : holder="1010010101000010001111001101101100111100011111101010010100100100"; break;//reindeer head/crab
case 'h' : holder="0100100010110010010111010001001001110000101011101010100101000111"; break;//twig - Level 10
case 'i' : holder="0100010001000100010001000100010001100110111011101110111011111111"; break;//stalagtite - Level 16
case 'j' : holder="1011110100101000000000011001101001011001100000100001000100101000"; break;//burr - Level 17
case 'k' : holder="1111111111111111111111111111111111111111111111111111111111111111"; break;//Solarlight - Level 19
case 'l' : holder="0011110001111110110010011101101111001001111111111010010110100101"; break;//Pac-Man Ghost - Level6
}//endswitch
return holder;
}//endpropsdata

public String keyData(char propType){
String holder = "";
switch(propType){
case 'a' : holder="0011000001001000100010001001000001101000000001000000101000000100"; break;//key
case 'b' : holder="0101000010101000010101001010100001010100001011000000001000000001"; break;//ice-lolly
case 'c' : holder="0001111100100011010001111111111110001111100011101000110011111000"; break;//gold bar
case 'd' : holder="0010000001010000001001110001100000100100010010101010010001000000"; break;//fruit/grapes
case 'e' : holder="1000000011000000111011000111001000101000010101001000101010000111"; break;//banana
case 'f' : holder="0000100000001000001111100101111101011111010011110110000100111110"; break;//globe/baubal-level10
case 'g' : holder="0011110001011010100101011101010111010101110101010101101000111100"; break;//coin-level 11
case 'h' : holder="0001100001101110010000101101101111001001011000100111111000011000"; break;//cog-level 13
case 'i' : holder="1010101010101010111111101111111011111110111111101010101010101010"; break;//chip-level 14
case 'j' : holder="0111110000111000011001001101111010001110110111101000001001111100"; break;//moneybag-level 15
case 'k' : holder="0000111100001001001111010010011111110100100111001001000011110000"; break;//gems-level 16
}//endswitch
return holder;
}//endpropsdata

public String doorData(char doorType){
String holder="";
switch(doorType){
case 'a' : holder="0000000000000000011011011011011001001001001001000000000000000000011011011011011001001001001001000000000000000000011011011011011001001001001001000000000000000000011011011011011001001001001001000000000000000000011011011011011001001001001001000000000000000000"; break;
case 'b' : holder="1111111111111111100100100100100110010010010010011001001001001001100100100100100110010010010010011001001001001001100100100100100110010010010010011001001001001001100100100100100110010010010010011001001001001001100100100100100110010010010010011111111111111111"; break;
case 'c' : holder="1111111111111111010001000100010010011001100110010010001000100010001000100010001010011001100110010100010001000100010001000100010010011001100110010010001000100010001000100010001010011001100110010100010001000100010001000100010010011001100110011111111111111111"; break;
case 'd' : holder="0010001000100010000100010001000110001000100010000100010001000100001000100010001000010001000100011000100010001000010001000100010000100010001000100001000100010001100010001000100001000100010001000010001000100010000100010001000110001000100010000100010001000100"; break;
case 'e' : holder="1111111111111111101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101111111111111111"; break;
case 'f' : holder="1111111111111111100000011000000110111111111111011011111111111101101100000000110110110000000011011011000000001101111100000000111111110000000011111011000000001101101100000000110110110000000011011011111111111101101111111111110110000001100000011111111111111111"; break;
case 'g' : holder="1111111111111111100000011000000110000001100000011000000110000001100000011000000110000001100000011000000110000001111111111111111111111111111111111000000110000001100000011000000110000001100000011000000110000001100000011000000110000001100000011111111111111111"; break;
case 'h' : holder="1111111111111111100000000000000111000000000000111010000000000101100100000000100111001000000100111010010000100101100100100100100111001001100100111010010000100101100100100100100111001001100100111010010000100101110010011001001110010010010010011111111111111111"; break;
case 'i' : holder="1111111111111111100000000000000110000001100000011000001001000001100001000010000110001000000100011001000000001001101000011000010110100001100001011001000000001001100010000001000110000100001000011000001001000001100000011000000110000000000000011111111111111111"; break;
case 'j' : holder="1111111111111111111110001000111110001000100100011010101010010001101010101001010110001010100001011001000010010001110101011011100111010101010101011101000101000101100010010011100110001001000000111010100010101011101010101010101110001010100010011111111111111111"; break;
case 'k' : holder="1111111111111111110110101010101111101010011010111111111111111111100100000000100110010000000010011111111111111111100100000000100110010000000010011111111111111111100100000000100110010000000010011111111111111111100100000000100110010000000010011111111111111111"; break;
case 'l' : holder="1111111111111111100000000000000110001111111100011000111111110001100011111111000110001111111100011000111111110001100011000011000110001100001100011000111111110001100011111111000110001111111100011000111111110001100011111111000110000000000000011111111111111111"; break;
case 'm' : holder="0000001111000000000001111110000000001111111100000000100110010000000010011001000000000111111000000000010110100000000000100100000001100001100001101111100000011111111111100111111100000101111000000000011110100000111111100111111111111000000111110110000000000110"; break;
case 'n' : holder="0000000000000000000000000000000000000011110000000000011111100000000011111111000000011111111110000011111001111100001111011011110000111101101111000011111001111100000111111111100000001111111100000000011111100000000000111100000000000000000000000000000000000000"; break;
case 'o' : holder="1111111111111111100000000000000110000000000000011000000000000001100000000000000110001000000000011010101000000001100111000011110111111111010001111001110000000001101010100000000110001000000000011000000000000001100000000000000110000000000000011111111111111111"; break;
case 'p' : holder="1111111111111111100000011000000110000001100000011111111111111111100000011000000110000001100000011111111111111111100000011000000110000001100000011111111111111111100000011000000110000001100000011111111111111111100000011000000110000001100000011111111111111111"; break;
case 'q' : holder="1111111111111111100000000000000110111111111111011010000000000101101001011010010110100101101001011010010110100101101001011010010110100101101001011010010110100101101011111111010110100101101001011010010110100101101001011010010110100101101001011111111111111111"; break;
case 'r' : holder="1111111111111111100000000000000110110000000011011010000000000101101010100101010110101010010101011010101001010101101010100101010110101010010101011010101001010101101010100101010110101010010101011010000000000101101100000000110110000000000000011111111111111111"; break;
case 's' : holder="0000000000000000011111111111111001000000000000100101111111111010010100000000101001010111111010100101010000101010010101011010101001010101101010100101010000101010010101111110101001010000000010100101111111111010010000000000001001111111111111100000000000000000"; break;
case 't' : holder="0000000000000000000001111110000000011000000110000010001111000100010001000010001001001000000100100100100000010010010010000001001001000100001000100010001001000100000110100101100001001010010100100111101001011110010000100100001001111110011111100000000000000000"; break;
}//endswitch
return holder;
}//enddoordata
}//endpropsdataclass

/* --------------------------- storeProps Class ----------------------------- */
/* ----------------------- ControlMinerWilly Class ------------------------- */
class ActorControl extends DataControl{
ActorData actorData = new ActorData();

public ActorControl(){
imageSize=16;
}//endconstructor

public String[][] grabImageString(char nastieType){
String[][] tempString = new String[2][4];
switch(nastieType){
case '+' :
case '-' : tempString[0] = actorData.willyData(nastieType); break;
default : tempString[0] = actorData.baddiedata(Character.toLowerCase(nastieType)); break;
}//endswitch

for(int counter=0; counter<4; counter++){
tempString[1][counter] = reverseString(tempString[0][counter]);
}//endfor

return tempString;
}//endgrabimagestring

public Image[][] grabBaddie(String nastieType, String nastieColour, int flipDir){
Image[][] tempImage = new Image[2][4];
String[] tempString = new String[4];

nastieType=nastieType.toLowerCase();
nastieColour=nastieColour.toLowerCase();

setColour(nastieColour.substring(0, 4));
tempString = actorData.baddiedata(nastieType.charAt(0));

for(int innerCounter=0; innerCounter<4; innerCounter++){
switch(flipDir){
case 1 : tempImage[1][innerCounter] = StringToImage(tempString[innerCounter]);
tempImage[0][innerCounter] = StringToImage180(tempString[innerCounter]);
break;
case 2 : tempImage[1][innerCounter] = StringToImage(tempString[innerCounter]);
tempImage[0][innerCounter] = StringToImage(tempString[innerCounter]);
break;
case 3 : tempImage[1][innerCounter] = StringToImage180(tempString[innerCounter]);
tempImage[0][innerCounter] = StringToImage180(tempString[innerCounter]);
break;
}//endswitch

tempImage[1][innerCounter] = setTrasparent(tempImage[1][innerCounter], paper);
tempImage[0][innerCounter] = setTrasparent(tempImage[0][innerCounter], paper);
}//endfor

return tempImage;
}//endgrabbaddie

public Image[][] grabWilly(String colour, char willyType){
Image[][] tempImage = new Image[2][4];
String[] tempString = new String[4];

setColour(colour);
tempString=actorData.willyData(willyType);

for(int innerCounter=0; innerCounter<4; innerCounter++){
tempImage[1][innerCounter] = StringToImage(tempString[innerCounter]);
tempImage[1][innerCounter] = setTrasparent(tempImage[1][innerCounter], paper);
tempImage[0][innerCounter] = StringToImage180(tempString[innerCounter]);
tempImage[0][innerCounter] = setTrasparent(tempImage[0][innerCounter], paper);
}//endfor

return tempImage;
}//endlevelstore

}//endcontrolminerwillyclass
/* ----------------------- ControlMinerWilly Class ------------------------- */
/* --------------------------- willyStore Class ---------------------------- */
class ActorData{
systemInfo gameInfo = new systemInfo();

public ActorData(){
}//endconstructor

public String[] willyData(char willyType){
String[] holder = new String[4];
switch(willyType){
case '+' : holder[0] = "0000000001100000000000111110000000000111110000000000001101000000000000111110000000000011110000000000000110000000000000111100000000000111111000000000011111100000000011110111000000001111101100000000001111000000000001110110000000000110111000000000011101110000";
holder[1] = "0000000001100000000000111110000000000111110000000000001101000000000000111110000000000011110000000000000110000000000000111100000000000110111000000000011011100000000001101110000000000111011000000000001111000000000000011000000000000001100000000000000111000000";
holder[2] = "0000000001100000000000111110000000000111110000000000001101000000000000111110000000000011110000000000000110000000000000111100000000000111111000000000011111100000000011110111000000001111101100000000001111000000000001110110000000000110111000000000011101110000";
holder[3] = "0000000001100000000000111110000000000111110000000000001101000000000000111110000000000011110000000000000110000000000000111100000000000111111000000000111111110000000111111111100000011011110110000000001111100000000001110110100000001100001110000000111000010000";
break; // Miner Willy
case '-' : holder[0] = "0000001111000000000000111100000000000111111000000000001101000000000000111110000000000011110000000000000110000000000000111100000000000111111000000000011111100000000011110111000000001111101100000000001111000000000001110110000000000110111000000000011101110000";
holder[1] = "0000001111000000000000111100000000000111111000000000001101000000000000111110000000000011110000000000000110000000000000111100000000000110111000000000011011100000000001101110000000000111011000000000001111000000000000011000000000000001100000000000000111000000";
holder[2] = "0000001111000000000000111100000000000111111000000000001101000000000000111110000000000011110000000000000110000000000000111100000000000111111000000000011111100000000011110111000000001111101100000000001111000000000001110110000000000110111000000000011101110000";
holder[3] = "0000001111000000000000111100000000000111111000000000001101000000000000111110000000000011110000000000000110000000000000111100000000000111111000000000111111110000000111111111100000011011110110000000001111100000000001110110100000001100001110000000111000010000";
break; // JetSetWilly
}//endswitch
return holder;
}//endconveyerdata

public String[] baddiedata(char baddieType){
String[] holder = new String[4];

switch(baddieType){
case 'a' : holder[0] = "0000011111001000000011100111100000000110011110000000001111001000001001111100000000010111111000000011111111110000000101111000000000100111111100000000011111100000000000111000000000000011100000000000001110000000000000111000000000000011100000000000011111000000";
holder[1] = "0000001111101000000001110011100000000011001110000000000111101000000000111110000000000011111110000001111111100000000000111100000000000011111000000000001111111000000000011100000000000001110000000000001101100000000000110110000000001110001110000000001101100000";
holder[2] = "0000011111001000000011100111100000000110011110000000001111001000001001111100000000010111111000000011111111110000000101111000000000100111111100000000011111100000000000111000000000000111110000000010111011101000000111000111000000001000001000000000010001000000";
holder[3] = "0000001111101000000001110011100000000011001110000000000111101000000000111110000000000011111110000001111111100000000000111100000000000011111000000000001111111000000000011100000000000001110000000000001101100000000000110110000000001110001110000000001101100000";
break;
case 'b' : holder[0] = "0000000110000000000000111100000000000011011000000000001111011000000001110010000000000110010000000000011101000000000001111010000000001101101000000000110100100000000011010010000000001100001000000000111000100000000101111101000000000100101000000000111111000000";
holder[1] = "0000000110000000000000111100000000000011011000000000001111011000000001110010000000000110010000000000011101000000000001111010000000001101101000000000110010100000000011001010000000001100001000000000111000100000000101111100000000000010101000000000011111000000";
holder[2] = "0000000110000000000000111100000000000011011000000000001111011000000001110010000000000110010000000000011101000000000001111010000000001101101000000000110100100000000011010010000000001100001000000000111000100000000101111100000000000001000000000000001111000000";
holder[3] = "0000000110000000000000111100000000000011011000000000001111011000000001110010000000000110010000000000011101000000000001111010000000001101101000000000110100100000000011010010000000001100001000000000111000100000000101111100000000000001000000000000001111000000";
break;
case 'c' : holder[0] = "0000000001100000000000001101000000000000111110000000010101100000000010101011000000000101010110000001101011011000000111000011000000001000011000000001111111100000000011111110000000000111110000000000000100000000000000010000000000000010100000000000000000000000";
holder[1] = "0000000001100000000000001101000000000000111110000000000001100000000000000011000000000000000110000001011111011000000111000111000000001000001000000001010101100000000011111110000000000111110000000000000100000000000000101000000000000000000000000000000000000000";
holder[2] = "0000000001100000000000001101000000000000111110000000000001100000000000000011000000000000000110000001011111011000000111000111000000001100011000000001100001100000000010101110000000000101010000000000101010000000000000010000000000000010100000000000000000000000";
holder[3] = "0000000001100000000000001101000000000000111110000000000001100000000000000011000000000000000110000001011111011000000111000111000000001000001000000001010101100000000011111110000000000111110000000000000100000000000000101000000000000000000000000000000000000000";
break;
case 'd' : holder[0] = "0000000001110000000000001110100000000001111001000000000111100100000000011110010000000000111010000000000001110000000000000001000000000000011100000000000001010000000000000111000000000000111110000010000111111000001001111111110001111111111011000000111111000100";
holder[1] = "0000000001110000000000001101100000000001100011000000000110001100000000011000110000000000110110000000000001110000000000000001000000000000011100000000000001010000000000000111000000000000011110000001000011111000000100111111110000111111111011000000111111000100";
holder[2] = "0000000001110000000000001011100000000001001111000000000100111100000000010011110000000000101110000000000001110000000000000001000000000000011100000000000001010000000000000111000000000000111110000010000111111000001001111111110001111111111011000000111111000100";
holder[3] = "0000000011100000000000010111000000000010111010000000001011101000000000101110100000000001011100000000000011100000000000000010000000000000111000000000000010100000000000001110000000000000111100000001000111110000000101111111100000111111110110000000111110001000";
break;
case 'e' : holder[0] = "0001100000000000000110000000000000011000000000000001100000000000000110000000000000011000000000000001100000000000000110111111100000011011111110000001111111111000000000111111100000000001111100000000111011110000000111111110000000011011111000000001101111100000";
holder[1] = "0001100000000000000110000000000000011000000000000001100000000000000110000001000000011000011000000001100110000000000110100000000000011011111110000001111111111000000000111111100000000001111100000000111011110000000111111110000000011011111000000001101111100000";
holder[2] = "0001100000000000000110000000000000011000010000000001100010000000000110001000000000011001000000000001100100000000000110100000000000011011111110000001111111111000000000111111100000000001111100000000111011110000000111111110000000011011111000000001101111100000";
holder[3] = "0001100000000000000110000000000000011000000000000001100000000000000110000001000000011000011000000001100110000000000110100000000000011011111110000001111111111000000000111111100000000001111100000000111011110000000111111110000000011011111000000001101111100000";
break;
case 'f' : holder[0] = "0000001111000000000011111111000000011111111110000001111111111000001100011000110000001110011100000110111111110110101011100111010110110001100011011001111111111001100110111101100110001100001100010100011111100010000000100100000000000010010000000000111001110000";
holder[1] = "0000001111000000000011111111000000011111111110000001111111111000001100011000110000001110011100000110111111110110101011100111010110110001100011011001111111111001100110111101100110001100001100010100011111100010000000100100000000000010010000000000111001110000";
holder[2] = "0000001111000000000011111111000000011111111110000001111111111000001100011000110000001110011100000110111111110110101011100111010110110001100011011001111111111001100110111101100110001100001100010100011111100010000000100100000000000010010000000000111001110000";
holder[3] = "0000001111000000000011111111000000011111111110000001111111111000001100011000110000001110011100000110111111110110101011100111010110110001100011011001111111111001100110111101100110001100001100010100011111100010000000100100000000000010010000000000111001110000";
break;
case 'g' : holder[0] = "0000011111000000000111111111000000011100111110000011110011100000001111111000000000111110000000000011111110000000001111111110000000011111111110000001111111110000000001111100000000000111110000000000000000000000000000000000000000000000000000000000000000000000";
holder[1] = "0000011111000000000111001111000000011100111000000011111111000000001111110000000000111110000000000011111100000000001111111100000000011111111000000001111111110000000001111100000000000010100000000000001010000000000001111100000000000000000000000000000000000000";
holder[2] = "0000011111000000000111111111000000011100111110000011110011100000001111111000000000111110000000000011111110000000001111111110000000011111111110000001111111110000000001111100000000000010100000000000001010000000000000101000000000000010100000000000011111000000";
holder[3] = "0000011111000000000111111111000000011110011100000011111001111000001111111111100000111111000000000011111111111000001111111111100000011111111100000001111111110000000001111100000000000010100000000000001010000000000001111100000000000000000000000000000000000000";
break;
case 'h' : holder[0] = "0000000000000000000000000000000000000000000000000000000000000000000000011000000000000001110000000000000010101000000000001111100000000000111000000000000111000000000000011110000000000001110100000000001111000000000000111110000000000111111000000011111011111000";
holder[1] = "0000000000000000000000000000000000000001100000000000000111000000000000001010100000000000111110000000000011100000000000011100000000000001111000000000000111010000000000111100000000000011111000000000011111100000000001101100000000001100001100000001000000000000";
holder[2] = "0000000110000000000000011100000000000000101010000000000011111000000000001100000000000001110000000000000111100000000000011101000000000011110000000000001111100000000000111110000000000110111000000000010001000000000001000010000000001000000100000000000000000000";
holder[3] = "0000000000000000000000000000000000000001100000000000000111000000000000001010100000000000111110000000000011100000000000011100000000000001111000000000000111010000000000111100000000000011111000000000011111100000000001101100000000001100001100000001000000000000";
break;
case 'i' : holder[0] = "0000101111010000000011011011000000001111111100000000011001100000000001011010000000000010010000000000001111000000000111111111100001111111111111101110011111100111100000111100000111000111111000110000011001100000000011000011000000001000000100000011100000011100";
holder[1] = "0000101111010000000011011011000000001111111100000000011001100000000001011010000000000010010000000000001111000000000111111111100001111111111111101110011111100111100000111100000111000111111000110000011001100000000011000011000000001000000100000011100000011100";
holder[2] = "0001001111001000000111011011100000001111111100000000011001100000000001011010000000000010010000000000011111100000000011111111000000011111111110000011001111001100011000111100011001000110011000100010110000110100000001100110000000000010010000000000111001110000";
holder[3] = "0001001111001000000111011011100000001111111100000000011001100000000001011010000000000010010000000000011111100000000011111111000000011111111110000011001111001100011000111100011001000110011000100010110000110100000001100110000000000010010000000000111001110000";
break;
case 'j' : holder[0] = "0001110000111000000001100110000000001100001100000110011001100110001000111100010001100111111001100011011111101100000111111111100000001111111100000000011111100000000000100100000000000101101000000000011001100000000011111111000000001101101100000000101111010000";
holder[1] = "0001110000111000000001100110000000001100001100000110011001100110001000111100010001100111111001100011011111101100000111111111100000001111111100000000011111100000000000100100000000000101101000000000011001100000000011111111000000001101101100000000101111010000";
holder[2] = "0001110000111000000001100110000000001100001100000110011001100110001000111100010001100111111001100011011111101100000111111111100000001111111100000000011111100000000000100100000000000101101000000000011001100000000011111111000000001101101100000000101111010000";
holder[3] = "0001110000111000000001100110000000001100001100000110011001100110001000111100010001100111111001100011011111101100000111111111100000001111111100000000011111100000000000100100000000000101101000000000011001100000000011111111000000001101101100000000101111010000";
break;
case 'k' : holder[0] = "0000000100000000000010001001000000000101001000000000100010010000000001010010000000001000000100000000000110000000000001100110000000001000000100000000100000110000000100010100100000010010100010000000110000010000000010000001000000000110011000000000000110000000";
holder[1] = "0000000010000000000001000100000000001000100100000000010001001000000010001001000000000100000010000000000110010000000001100110000000001000000100000000100000010000000101101000100000010001011010000000100000010000000010000001000000000110011000000000000110000000";
holder[2] = "0000001000100000000010010001000000010010001000000000100100010000000100100010000000001000000100000001000110000000000001100110000000001010000100000000100100010000000100001000100000010001000010000000100010010000000010000101000000000110011000000000000110000000";
holder[3] = "0000000100000000000000001010000000000001000100000000010010100000000010010001000000000100001000000000100110000000000001100110000000001000100100000000100010010000000100010000100000010000100010000000100100010000000010010001000000000110011000000000000110000000";
break;
case 'l' : holder[0] = "0000000000000000000000000000000000000010001000000000100101100000000001011100100000000011110100000001111111100000000001111111100000011111111000000001011111111000000011111111000000010010101010000000010110100000000010101011000000000000110000000000000000000000";
holder[1] = "0000000000000000000001010010000000000011010000000011000101110100000111011100110000000011110100000011111111101100000001111111010000111111111000000110011111111100000010111111001000110010101011000010010010100100000001011101000000011010110110000000000011000000";
holder[2] = "0000101000100000000101100110100000000001010100000011100101100010011001011100111000000011110100001111111111101110100001111111000101110111111001001100011111111111100010111111000100110010101011000110010010100110010010011010001000010010100100000011011010011000";
holder[3] = "0000000000000000000001010010000000000011010000000011000101110100000111011100110000000011110100000011111111101100000001111111010000111111111000000110011111111100000010111111001000110010101011000010010010100100000001011101000000011010110110000000000011000000";
break;
case 'm' : holder[0] = "0000000110000000000000011000000000000001100000000000000110000000000000011000000000000001100000000000000110000000000000011000000000000001100000000000000110000000000111111111100000000001100000000000110000110000000101100111100000010110010010000000110000110000";
holder[1] = "0000000110000000000000011000000000000001100000000000000110000000000000011000000000000001100000000000000110000000000000011000000000000001100000000000000110000000000111111111100000000001100000000000110000110000000110100101100000010110011010000000110000110000";
holder[2] = "0000000110000000000000011000000000000001100000000000000110000000000000011000000000000001100000000000000110000000000000011000000000000001100000000000000110000000000111111111100000000001100000000000110000110000000100100110100000011110011010000000110000110000";
holder[3] = "0000000110000000000000011000000000000001100000000000000110000000000000011000000000000001100000000000000110000000000000011000000000000001100000000000000110000000000111111111100000000001100000000000110000110000000101100110100000011010010110000000110000110000";
break;
case 'n' : holder[0] = "0000011100000000000001010000000000000111110000000000001101000000000000111110000000000011111000000000000110000000000000111100000000000110111000000000011011100000000001101110000000000111011000000000001111000000000000011000000000000001100000000000000111000000";
holder[1] = "0000011100000000000001010000000000000111110000000000001101000000000000111110000000000011111000000000000110000000000000111100000000000111111000000000011111100000000011110111000000001111101100000000001111000000000001110110000000000110111000000000011101110000";
holder[2] = "0000011100000000000001010000000000000111110000000000001101000000000000111110000000000011111000000000000110000000000000111100000000000111111000000000111111110000000111111111100000011011110110000000001111100000000001110110100000001100001110000000111000010000";
holder[3] = "0000011100000000000001010000000000000111110000000000001101000000000000111110000000000011111000000000000110000000000000111100000000000111111000000000011111100000000011110111000000001111101100000000001111000000000001110110000000000110111000000000011101110000";
break;
case 'o' : holder[0] = "0000000110000000000000011000000000000001100000000000000110000000000000010000000000000001000000000000000110000000000000011000000000000001100000000000000110000000000000111010000000001001100100000001111111111000000111111111000000000000000100000000011101100000";
holder[1] = "0000000110000000000000110100000000000101101000000000010110100000000010011001000000001001100100000000010110100000000001011010000000000011010000000000000110000000000001011100000000001001100100000001111111111000000011111111100000001000000000000000011011100000";
holder[2] = "0000000110000000000000101100000000000101101000000000100110010000000100011000100000010001100010000000100110010000000001011010000000000010110000000000000110000000000001101110000000001001100000000000111111111000000111111111100000001000000100000000010111000000";
holder[3] = "0000000110000000000000011000000000000010110000000000001111000000000001011010000000000101101000000000001111000000000000101100000000000001100000000000000110000000000001110110000000000001100100000001111111110000000111111111100000001000000100000000001110100000";
break;
case 'p' : holder[0] = "0000000000111100000000111111111000011111111111100110001111000110111010100001000011101000000100001110111111110000000001111110000000001100001100000000101111010000000110111101100000011100001110000011111111111100001111111111110000111111111111000011111111111100";
holder[1] = "0000000000000000001111111111110001100011110001101110101111010111111010000001011100001111111100000000011111100000000011000011000000001011110100000001101111011000000111000011100000111111111111000011111111111100001111111111110000111111111111000000000000000000";
holder[2] = "0011110000000000011111111100000001111111111110000110001111000110000010000101011100001000000101110000111111110111000001111110000000001100001100000000101111010000000110111101100000011100001110000011111111111100001111111111110000111111111111000011111111111100";
holder[3] = "0000000000000000001111111111110001100011110001101110101111010111111010000001011100001111111100000000011111100000000011000011000000001011110100000001101111011000000111000011100000111111111111000011111111111100001111111111110000111111111111000000000000000000";
break;
case 'q' : holder[0] = "0000110000110000000111100101100000010010010110000000110000110000000000011000000000011111111110000000101001010000000000100100000000000010010000000000001111000000000000011000000000000001100000000000001111000000000001111110000000000000000000000000000000000000";
holder[1] = "0000110000110000000101100100100000010110011110000000110000110000000000011000000000011111111110000000101001010000000000100100000000000010010000000000001111000000000000011000000000000001100000000000000110000000000000011000000000000011110000000000011111100000";
holder[2] = "0000110000110000000100100110100000011110011010000000110000110000000000011000000000011111111110000000101001010000000000100100000000000010010000000000001111000000000000011000000000000001100000000000001111000000000001111110000000000000000000000000000000000000";
holder[3] = "0000110000110000000110100111100000011010010010000000110000110000000000011000000000011111111110000000101001010000000000100100000000000010010000000000001111000000000000111100000000000111111000000000000000000000000000000000000000000000000000000000000000000000";
break;
case 'r' : holder[0] = "0000000000000000000001000010000000000100001000000001001001001000010010111101001000101100001101001001001111001001101001111110010101000110011000101000011001100001010001111110001000100011110001000001000000001000000011000011000000000011110000000000000000000000";
holder[1] = "0000000000000000000000000000000000000011110000000000110000110000000100100100100000101010010101000101111111111010111101101111111101000111111000100010001111000100000100000000100000001100001100000000001111000000000000000000000000000000000000000000000000000000";
holder[2] = "0000000000000000000000111100000000001100001100000001000000001000001000000000010001000000000000101000000000000001010000000000001000100000000001001101000000001011001011000011010001001011110100100001001001001000000000100100000000000000000000000000000000000000";
holder[3] = "0000000000000000000000000000000000000011110000000000110000110000000100000000100000100000000001000100000000000010111110000001111101010111111010100010101111010100000100100100100000001100001100000000001111000000000000000000000000000000000000000000000000000000";
break;
case 's' : holder[0] = "0000001111000000111111111111111110101011110101011111111111111111000100111100100000101001100101000001010110101000000010111101000000000101101000000000001111000000000000111100000000000101101000000000101001010000000101000010100000101000000101000001000000001000";
holder[1] = "0000001111000000111111111111111110101011110101011111111111111111000100111100100000101001100101000001010110101000000010111101000000000101101000000000001111000000000000111100000000000101101000000000101001010000000101000010100000101000000101000001000000001000";
holder[2] = "0000001111000000111111111111111110101011110101011111111111111111000100111100100000101001100101000001010110101000000010111101000000000101101000000000001111000000000000111100000000000101101000000000101001010000000101000010100000101000000101000001000000001000";
holder[3] = "0000001111000000111111111111111110101011110101011111111111111111000100111100100000101001100101000001010110101000000010111101000000000101101000000000001111000000000000111100000000000101101000000000101001010000000101000010100000101000000101000001000000001000";
break;
case 't' : holder[0] = "0000000000000000000000000000000000000011110000001111111111111111101010111101010111111111111111110001001111001000001010011001010000010101101010000000101111010000000001011010000000000011110000000000001111000000001001011010000001001010010101000001010000101010";
holder[1] = "0000000000000000000000000000000000000000000000000000000000000111000000111111110111111111110101111010101111111000111111111100000000000011110000000000000110000000000101011010010000000011110000000000001111000000001001011010000001001010010101000001010000101010";
holder[2] = "0000000000000000000000000000000000000000000000000000000000100000000000100000001000000000000101010000001111001110000011111101010011001011110010001011011111000010111000111100100000110001100000010000011111100100110000111100100000010111110000100010001111111100";
holder[3] = "0000000000000000000000010000000000000000000000000000100000100000000000000000000000000000000000000010000100000010000000000001000100000011100010100000111010010000010010111100000000110111000000100110001011000000001100010000000100000101111000101100001101000100";
break;
case '5' : holder[0] = "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000010000000010000000010000000101010000100000000000010000001100101000000000010001001101000000010001010000000000011110100000001011111100000";
holder[1] = "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000100000000100000000000000000000000000000000010100010000000000000110100000100010101000000000110111010000";
holder[2] = "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000100000000010000000000000000010110000000000011101100000";
holder[3] = "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000";
break;
case 'u' : holder[0] = "0110000110000110100111111111100110011111111110010110000110000110000000111100000011111111111111111000000000000001101010101010100110011111111111011011010101011001100100000000110110110101010110011001111111111101101010101010100110000000000000011111111111111111";
holder[3] = "0001110110111000001011110100010000101111010001000001110110111000000000111100000011111111111111111010101010101011110000000000000110010101010100111100111111111001100110101011001111001111111110011001010101010011110000000000000110101010101010111111111111111111";
holder[2] = "0000011111100000000010000001000000001000000100000000011111100000000000111100000011111111111111111111111111111111110101010101011111100000000000111100101010100111111001111111001111001010101001111110000000000011110101010101011111111111111111111111111111111111";
holder[1] = "0001110110111000001000101111010000100010111101000001110110111000000000111100000011111111111111111101010101010101101111111111111111101010101011011011000000000111111001010100110110110000000001111110101010101101101111111111111111010101010101011111111111111111";
break;// Safes (Level15)
case 'v' : holder[0] = "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111100000010000001110000001111111111000000100000100100000011111110010000001111111111000";
holder[1] = "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111111111000000100000011100000011111111110000001000001001000000111111100100000011111111110000000000000000000000000000000000000000000000000000000000000000000";
holder[2] = "0000000000000000000000000000000000000000000000000000000000000000000111111111100000010000001110000001111111111000000100000100100000011111110010000001111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000";
holder[3] = "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111111111000000100000011100000011111111110000001000001001000000111111100100000011111111110000000000000000000000000000000000000000000000000000000000000000000";
break;//Bouncing Check (Level15)
case 'w' : holder[0] = "0000000000000000000000001000000000000001010000000000001010100000000001010101000000000100101000000000100001000000000010000000110000001000000011000000010000010000000001111111100000000011111111000000000111111000000000001111000000000000101010000000000100100100";
holder[1] = "0000101010000000000001010100000000001010100000000000010101000000000010000000000000010000000000000000100000000000000010000000110000001000000011000000010000010000000001111111100000000011111111000000000111111000000000001111000000000000101010000000000100100100";
holder[2] = "0000000000000000000100000000000000101000000000000101010000000000101010100000000001010001000000000010000100000000000000010000110000000010000011000000001000010000000000111111100000000011111111000000000111111000000000001111000000000000101010000000000100100100";
holder[3] = "0001010100000000001010100000000000010101000000000010101000000000000000010000000000000001000000000000000100000000000000010000110000000010000011000000001000010000000000111111100000000011111111000000000111111000000000001111000000000000101010000000000100100100";
break;
case 'x' : holder[0] = "0101010101010101111111111111111111111111111111110000100000010000000010000001000000001000000100001111100000011111010101010101010111111111111111111111111111111111000010000001000000001000000100000000100000010000010110000001010111111111111111111111111111111111";
holder[1] = "0000000000000000010101010101010111111111111111111111111111111111000010000001000011111000000111110000100000010000001111111111111000111000000111100000100000010000010111111111010111111111111111111111111111111111000000000000000011111111111111110000000000000000";
holder[2] = "0000000000000000000000000000000011111111111111110101010101010101111111111111111111111111111111110000100000010000001110000001111000111111111111100000100000010000111110000001111101011111111101011111111111111111111111111111111100000000000000000000000000000000";
holder[3] = "0000000000000000010101010101010111111111111111111111100000011111000010000001000001010101010101011111111111111111111111111111111101111000000111011111100000011111111110000001111100001000000100000101010101010101111111111111111111111111111111110000000000000000";
break;
case 'y' : holder[0] = "0000000000000000000001111110000000001001100100000000111111110000000011011011000000001110011100000000011111100000000001000010000000001000000100000000100000010000000100000000100000010000000010000010000000000100001100000000010000110000000011000000000000001100";
holder[1] = "0000011111100000000010011001000000001111111100000000110110110000000011100111000000000111111000000000001001000000000000100100000000000010010000000000010000100000000001000010000000000100001000000000100000010000000010000001000000001100001100000000110000110000";
holder[2] = "0000000000000000000001111110000000001001100100000000111111110000000011011011000000001110011100000000011111100000000001000010000000001000000100000000100000010000000100000000100000010000000010000010000000000100001000000000110000110000000011000011000000000000";
holder[3] = "0000000000000000000000000000000000000000000000000000011111100000000010011001000000001111111100000000110110110000000011100111000000000111111000000000100000010000000100000000100000100000000001000100000000000010100000000000000111000000000000111100000000000011";
break;
case 'z' : holder[0] = "0000001111000000000011100111000000010011110010000011000110001100001110011001110001011111111110100100110110110001010001001001000110000010010010011000001001001010010001001001010000100101001001000010100100100010000010001001000000000100010010000000000001000000";
holder[1] = "0000001111000000000011100111000000010011110010000011000110001100001110011001110001011111111110100100110110110010001010010001001000100100100100010100001001001001100000100100101010000100010010100100100010010001000010010010000000001001000000000000000010000000";
holder[2] = "0000001111000000000011100111000000010011110010000011000110001100001110011001110001011111111110101000110110110010100001001010010001001001001001000010100100010010001001001000100101000010010010011000001001010010000001001001000000001000100010000000000001000000";
holder[3] = "0000001111000000000011100111000000010011110010000011000110001100001110011001110001011111111110100100110110110001100001010001000110000100100100100100100010100100001010010010010000101001000100100100010010001001000000100100100000000010010100000000010000000000";
break;
case '0' : holder[0] = "0000001101000000000011110111000000111111001111000011111101001100010111110110011001011111011101101001111101111111000000000111111110001110000000001000111011111111010001101111111001000000111100100010000000000100001100000000110000001100001100000000001011000000";
holder[1] = "0000001111000000000011111111000000111111101011000011111111001100010111111100011001000111101101101001100110111111100111100111111110001110011111111000110110011111010001011110011001000001111100100010000000000100001100000000110000001100001100000000001111000000";
holder[2] = "0000001111000000000011111111000000101111101111000011011111001000010110111110011001011101111001101001111011011111100111100011111110001100011111111000101101111111010001111011111001000001110000100000000000000100001100000000010000001100001100000000001111000000";
holder[3] = "0000001111000000000010111111000000111101101111000011110111001100010111011110011001011110111101001001111011100011100111100001111110001000011111111000011101111111000001110111111001000001101100100010000000000100001100000000110000001100000100000000001111000000";
break;
case '1' : holder[0] = "0000000001100000000000001100000000000001100000000000001110000000000001110100000000001100101010000000100001011100000000000011110000000000011001000011000011101100001100011000010000111111111111000011111000100000001100001000100000110001010101000000000010001000";
holder[1] = "0000000001100000000000001100000000000001100000000000001110000000000001110100000000001100101010000000100001011100000000000011110000000000011001000011000011101100001100011000010000111111111111000011111000100000001100001000100000110001010101000000000010001000";
holder[2] = "0000000001100000000000001100000000000001100000000000001110000000000001110100000000001100101010000000100001011100000000000011110000000000011001000011000011101100001100011000010000111111111111000011111000100000001100001000100000110001010101000000000010001000";
holder[3] = "0000000001100000000000001100000000000001100000000000001110000000000001110100000000001100101010000000100001011100000000000011110000000000011001000011000011101100001100011000010000111111111111000011111000100000001100001000100000110001010101000000000010001000";
break;
case '2' : holder[0] = "0000001111000000000000100100000000000001100000000001101111011000000101111110100000010111111010000001101111011000000010011001000000001010010100000000101111010000000011111111000000000001100000000000110000110000000101100110100000010010010010000000110000110000";
holder[1] = "0000001001000000000000011000000000000011110000000001011111101000000011100111000000001110011100000001011111101000000010111101000000001001100100000000101001010000000011111111000000000001100000000000110000110000000100100101100000010110010010000000110000110000";
holder[2] = "0000000110000000000000111100000000000011110000000000111001110000000111011011100000011101101110000000111001110000000010111101000000001011110100000000100110010000000011111111000000000001100000000000110000110000000100100100100000011010010110000000110000110000";
holder[3] = "0000001111000000000000111100000000000010010000000001110110111000000110111101100000011011110110000001110110111000000010100101000000001011110100000000101111010000000011111111000000000001100000000000110000110000000110100100100000010010011010000000110000110000";
break;
case '3' : holder[0] = "0011100000000000111111100000000010111111100000001011101111100000101110001111100010111110001111101011100110001111101110000110001110111001100110011011111001100011101110011000110010100110001100001001100011000000101000110000000011001100000000000111000000000000";
holder[1] = "0000001111000000000001110100000000000110001000000000111010100000000011001001000000011101010100000001100101001000001110101010100000110010101001000111010001010100011001000101001011111111111010101111111111101001111111111111010101000000000000110111111111111110";
holder[2] = "0000000000001110000000000011001100000000110001010000001100011001000011000110010100110001100111011100011001111101100110011001110111000110000111011111000110011101011111000111110100011111000111010000011111011101000000011111110100000000011111110000000000011100";
holder[3] = "0111111111111110100000000000001010101111111111111001011111111111010101111111111101001010001001100010101000101110001001010100110000010101010111000001001010011000000010101011100000001001001100000000010101110000000001000110000000000010111000000000001111000000";
break;
case '4' : holder[0] = "0000000000000000000000000000000000001110011100000100000110000010001001111110010000011111111110001000111111110001011110100101111000011001100110000001111001111000111111000011111100010100001010000001111111011000000011000111000000000111111000000000000110000000";
holder[1] = "0000000000000000000011000011000000000010010000000000000110000000000001111110000001001111111100100011111111111100000011100111000011011001100110110011111001111100000111000011100000110100001011001101101111111011000011100011000000000111111000000000000110000000";
holder[2] = "0000010000100000000001000010000000000010010000000000000110000000000001111110000000001111111100000111111111111110000010100101000100011001100110000111111001111110100111000011100100010100001110000011101111011100010011010011001001000111111000100000000110000001";
holder[3] = "0000000000000000000011000011000000000010010000000000000110000000000001111110000001101111111101100001100110011000000010100101000011111001100111110001111001111000000111000011100001111100001011101001101111011001000011001011000000000111111000000000000110000000";
break;
}//endswitch
return holder;
}//endbaddiedata
}//endwillystore

/* --------------------------- willyStore Class ---------------------------- */
/* ----------------------------- Banner Class ------------------------------ */
class Banner{
systemInfo gameInfo = new systemInfo();

int posX;
int posX2;
int posY;
int posY2;
int width;
int height;

Graphics graphicsHold;
Color currentColour;
char[] textToShow = new char[64];
char[] characterStore = new char[64];

public Banner(){
}//endconstructor

public void setXY(int xPos, int yPos){
posX = xPos;
posY = yPos;
posX2 = xPos;
posY2 = yPos;
}//endsetXY

public Graphics setBanner(int xPos, int yPos, String textToChange, Graphics bufferStore){
width = gameInfo.cellSize;
height = gameInfo.cellSize;
graphicsHold = bufferStore;
midBanner(xPos, yPos, textToChange, false);
bufferStore = graphicsHold;//displayControl character
return bufferStore;
}//endsetsmallbanner

public Graphics setBanner(int xPos, int yPos, String textToChange, Graphics bufferStore, Color startColour){
currentColour=startColour;
width = gameInfo.cellSize;
height = gameInfo.cellSize;
graphicsHold = bufferStore;
midBanner(xPos, yPos, textToChange, true);
bufferStore = graphicsHold;//displayControl character
return bufferStore;
}//endsetsmallbanner

public Graphics altSetBanner(int xPos, int yPos, int scale, String textToChange, Graphics bufferStore){
this.width = scale*gameInfo.cellSize;//gameInfo.cellSize;
this.height = scale*gameInfo.cellSize;//gameInfo.cellSize;

graphicsHold = bufferStore;
altBanner(xPos, yPos, textToChange);
bufferStore = graphicsHold;//displayControl character
return bufferStore;
}//endsetsmallbanner

public void midBanner(int xPos, int yPos, String textToChange, boolean isColoured){
setXY(xPos, yPos);
textToShow = textToChange.toCharArray();//convert to char[]
for(int counter=0; counter<textToChange.length(); counter++){//loop
if(isColoured==true){graphicsHold.setColor(currentColour);}
textStore(textToShow, counter);//find next character
displayControlText(8, 8);
posY=posY2;
posX2+=width*8;
posX=posX2;
if((isColoured==true)&&(textToChange.charAt(counter)!=' ')){currentColour=gameInfo.nextColour(currentColour);}
}//endif
}//endmidbanner

public void altBanner(int xPos, int yPos, String textToChange){
setXY(xPos, yPos);
textToShow = textToChange.toCharArray();//convert to char[]
for(int counter=0; counter<textToChange.length(); counter++){//loop
specialtextStore(textToShow, counter);//find next character
displayControlText(5, 5);
posY=posY2;
if(textToChange.charAt(0)!='I'){posX2+=width*6;}else{posX2+=width*5;}
posX=posX2;
}//endif
}//endmidbanner

public void displayControlText(int outerCounterMax, int innerCounterMax){
int worldCounter=0;
for(int outerCounter=0; outerCounter<outerCounterMax; outerCounter++){
for(int innerCounter=0; innerCounter<innerCounterMax; innerCounter++){
if(characterStore[worldCounter]=='1'){
graphicsHold.fillRect(posX, posY, width, height);
}//endif
posX+=width;
if(worldCounter<64){worldCounter++;}
}//endfor
posX=posX2;
posY+=height;
}//endfor
}//endtextA

public void specialtextStore(char[] textStore, int counter){
String tempString = " ";
switch(textStore[counter]){
case ' ' : tempString="0000000000000000000000000"; break;
case 'M' : tempString="1000111011101011000110001"; break;
case 'I' : tempString="0111000100001000010001110"; break;
case 'N' : tempString="1000111001101011001110001"; break;
case 'E' : tempString="1111110000111111000011111"; break;
case 'R' : tempString="1111010001111101010010011"; break;
case 'A' : tempString="0111010001100011111110001"; break;
case 'C' : tempString="0111010001100001000101110"; break;
}//endswitch
characterStore = tempString.toCharArray();
}//endtextstore

public void textStore(char[] textStore, int counter){
String tempString = " ";
switch(textStore[counter]){
case '*' : tempString="0000000000000000001010000001000001111100000100000010100000000000"; break;
case ',' : tempString="0000000000000000000000000000000000000000000100000001000000100000"; break;
case '&' : tempString="0000000000010000001010000001000000101010010001000011101000000000"; break;
case '/' : tempString="0000000000000000000000100000010000001000000100000010000000000000"; break;
case '(' : tempString="0000000000000100000010000000100000001000000010000000010000000000"; break;
case ')' : tempString="0000000000100000000100000001000000010000000100000010000000000000"; break;
case '=' : tempString="0000000000000000000000000011111000000000001111100000000000000000"; break;
case '-' : tempString="0000000000000000000000000000000000111110000000000000000000000000"; break;
case '.' : tempString="0000000000000000000000000000000000000000000110000001100000000000"; break;
case '\'': tempString="0000000000001000000100000000000000000000000000000000000000000000"; break;
case '÷' : tempString="0011110001000010100110011010000110100001100110010100001000111100"; break;
case ' ' : tempString="0000000000000000000000000000000000000000000000000000000000000000"; break;

case '9' : tempString="0000000000111100010000100100001000111110000000100011110000000000"; break;
case '8' : tempString="0000000000111100010000100011110001000010010000100011110000000000"; break;
case '7' : tempString="0000000001111110000000100000010000001000000100000001000000000000"; break;
case '6' : tempString="0000000000111100010000000111110001000010010000100011110000000000"; break;
case '5' : tempString="0000000001111110010000000111110000000010010000100011110000000000"; break;
case '4' : tempString="0000000000001000000110000010100001001000011111100000100000000000"; break;
case '3' : tempString="0000000000111100010000100000110000000010010000100011110000000000"; break;
case '2' : tempString="0000000000111100010000100000001000111100010000000111111000000000"; break;
case '1' : tempString="0000000000011000001010000000100000001000000010000011111000000000"; break;
case '0' : tempString="0000000000111100010001100100101001010010011000100011110000000000"; break;

case 'Z' : tempString="0000000001111110000001000000100000010000001000000111111000000000"; break;
case 'Y' : tempString="0000000010000010010001000010100000010000000100000001000000000000"; break;
case 'X' : tempString="0000000001000010001001000001100000011000001001000100001000000000"; break;
case 'W' : tempString="0000000001000010010000100100001001000010010110100010010000000000"; break;
case 'V' : tempString="0000000001000010010000100100001001000010001001000001100000000000"; break;
case 'U' : tempString="0000000001000010010000100100001001000010010000100011110000000000"; break;
case 'T' : tempString="0000000011111110000100000001000000010000000100000001000000000000"; break;
case 'S' : tempString="0000000000111100010000000011110000000010010000100011110000000000"; break;
case 'R' : tempString="0000000001111100010000100100001001111100010001000100001000000000"; break;
case 'Q' : tempString="0000000000111100010000100100001001010010010010100011110000000000"; break;
case 'P' : tempString="0000000001111100010000100100001001111100010000000100000000000000"; break;
case 'O' : tempString="0000000000111100010000100100001001000010010000100011110000000000"; break;
case 'N' : tempString="0000000001000010011000100101001001001010010001100100001000000000"; break;
case 'M' : tempString="0000000001000010011001100101101001000010010000100100001000000000"; break;
case 'L' : tempString="0000000001000000010000000100000001000000010000000111111000000000"; break;
case 'K' : tempString="0000000001000100010010000111000001001000010001000100001000000000"; break;
case 'J' : tempString="0000000000000010000000100000001001000010010000100011110000000000"; break;
case 'I' : tempString="0000000000111110000010000000100000001000000010000011111000000000"; break;
case 'H' : tempString="0000000001000010010000100111111001000010010000100100001000000000"; break;
case 'G' : tempString="0000000000111100010000100100000001001110010000100011110000000000"; break;
case 'F' : tempString="0000000001111110010000000111110001000000010000000100000000000000"; break;
case 'E' : tempString="0000000001111110010000000111110001000000010000000111111000000000"; break;
case 'D' : tempString="0000000001111000010001000100001001000010010001000111100000000000"; break;
case 'C' : tempString="0000000000111100010000100100000001000000010000100011110000000000"; break;
case 'B' : tempString="0000000001111100010000100111110001000010010000100111110000000000"; break;
case 'A' : tempString="0000000000111100010000100100001001111110010000100100001000000000"; break;

case 'z' : tempString="0000000000000000011111000000100000010000001000000111110000000000"; break;
case 'y' : tempString="0000000000000000010001000100010001000100001111000000010000111000"; break;
case 'x' : tempString="0000000000000000010001000010100000010000001010000100010000000000"; break;
case 'w' : tempString="0000000000000000010001000101010001010100010101000010100000000000"; break;
case 'v' : tempString="0000000000000000010001000100010000101000001010000001000000000000"; break;
case 'u' : tempString="0000000000000000010001000100010001000100010001000011100000000000"; break;
case 't' : tempString="0000000000010000001110000001000000010000000100000000110000000000"; break;
case 's' : tempString="0000000000000000001110000100000000111000000001000111100000000000"; break;
case 'r' : tempString="0000000000000000000111000010000000100000001000000010000000000000"; break;
case 'q' : tempString="0000000000000000001111000100010001000100001111000000010000000110"; break;
case 'p' : tempString="0000000000000000011110000100010001000100011110000100000001000000"; break;
case 'o' : tempString="0000000000000000001110000100010001000100010001000011100000000000"; break;
case 'n' : tempString="0000000000000000011110000100010001000100010001000100010000000000"; break;
case 'm' : tempString="0000000000000000011010000101010001010100010101000101010000000000"; break;
case 'l' : tempString="0000000000010000000100000001000000010000000100000000110000000000"; break;
case 'k' : tempString="0000000000100000001010000011000000110000001010000010010000000000"; break;
case 'j' : tempString="0000000000000100000000000000010000000100000001000010010000011000"; break;
case 'i' : tempString="0000000000010000000000000011000000010000000100000011100000000000"; break;
case 'h' : tempString="0000000001000000010000000111100001000100010001000100010000000000"; break;
case 'g' : tempString="0000000000000000001111000100010001000100001111000000010000111000"; break;
case 'f' : tempString="0000000000001100000100000001100000010000000100000001000000000000"; break;
case 'e' : tempString="0000000000000000001110000100010001111000010000000011110000000000"; break;
case 'd' : tempString="0000000000000100000001000011110001000100010001000011110000000000"; break;
case 'c' : tempString="0000000000000000000111000010000000100000001000000001110000000000"; break;
case 'b' : tempString="0000000000100000001000000011110000100010001000100011110000000000"; break;
case 'a' : tempString="0000000000000000001110000000010000111100010001000011110000000000"; break;
}//endswitch
characterStore = tempString.toCharArray();
}//endtextstore
}//endbannerclass

/* ----------------------------- Banner Class ------------------------------ */
/* ----------------------------- Special Class ------------------------------ */
class Special{
systemInfo gameInfo = new systemInfo();

static Image[] swordfishFlash = new Image[8];
static Image[] titletopFlash = new Image[8];
static Image swordFishImage;
static Image titletopImage;
static Image titlemidImage;

public Special(SpecialControl specialControl, Level level){
globalCounter=0;

grabImages(specialControl, level);
flashDataSetup(specialControl, level);
}//endconstructor

static int globalCounter=0;
String programState = "LoadingScreen";
String titleState="IntroMusic";
String scrolleyText="";
int willyCounter=0;

public void loadingScreenInit(){globalCounter=0;}//endloadingscreeninit
public Graphics loadingScreen(Graphics bufferStore, DrawGame drawGame){
if(globalCounter<=16){
bufferStore = drawGame.drawLoadingScreen(bufferStore, 0);
}else{
bufferStore = drawGame.drawLoadingScreen(bufferStore, 1);
if(globalCounter>=32){globalCounter=0;}
}//endif

globalCounter++;
return bufferStore;
}//enddrawloadingscreen

//*-- Title Screen --*/
public Graphics titleScreenBackground(Graphics bufferStore, DrawGame drawGame, Willy willy){
bufferStore = drawGame.drawTitleScreen(bufferStore, scrolleyText);
bufferStore.drawImage(titletopImage, 0, 0, gameInfo.ScreenWidth, (gameInfo.blockSize*8), null);
bufferStore.drawImage(titlemidImage, 0, (8*16), gameInfo.ScreenWidth, (gameInfo.blockSize*8), null);

switch(willyCounter){
case 0 : bufferStore.drawImage(willy.animate[1][0], (gameInfo.blockSize*29)-8, gameInfo.blockSize*9, gameInfo.blockSize*2, gameInfo.blockSize*2, null); break;
case 1 : bufferStore.drawImage(willy.animate[1][0], (gameInfo.blockSize*29), gameInfo.blockSize*9, gameInfo.blockSize*2, gameInfo.blockSize*2, null); break;
case 2 : bufferStore.drawImage(willy.animate[0][3], (gameInfo.blockSize*29)-4, gameInfo.blockSize*9, gameInfo.blockSize*2, gameInfo.blockSize*2, null); break;
case 3 : bufferStore.drawImage(willy.animate[0][1], (gameInfo.blockSize*29)+4, gameInfo.blockSize*9, gameInfo.blockSize*2, gameInfo.blockSize*2, null); break;
}//endswitch

return bufferStore;
}//endtitleScreenbackground

public Graphics titleScreenIntroMusic(Graphics bufferStore, DrawGame drawGame){
bufferStore=drawGame.drawPianoPlayer(bufferStore, globalCounter);
globalCounter++;
if(globalCounter>70){titleState="Scrolley"; globalCounter=0;}
return bufferStore;
}//endtitlescreenintromusic

public void titleScreenScrolleyText(SpecialControl specialControl){
if(globalCounter%10==0){if(willyCounter==3){willyCounter=0;}else{willyCounter++;}}//endif

if((globalCounter%4==0)||(globalCounter==0)){
scrolleyText = specialControl.grabScrolleyText(Level.gameDev.toLowerCase().charAt(0));
if(((globalCounter/4)+32)>=scrolleyText.length()){titleState="PreviewInit"; globalCounter=0;}
scrolleyText = scrolleyText.substring((globalCounter/4), (globalCounter/4)+32);
}//endif

globalCounter++;
}//endtitlescreenscrolleytext
//*-- Title Screen --*/


public void flashDataSetup(SpecialControl specialControl, Level level){
Color tempColour = Color.white;
for(int counter=0; counter<8; counter++){
swordfishFlash[counter]=specialControl.grabSwordFish();
swordfishFlash[counter]=specialControl.setTrasparent(swordfishFlash[counter], Color.black);
swordfishFlash[counter]=specialControl.setMono(swordfishFlash[counter], Color.black, tempColour);

titletopFlash[counter]=specialControl.grabTitleTop(level.gameDev);
titletopFlash[counter]=specialControl.replaceColour(titletopFlash[counter], Color.black, Color.cyan);
// titletopFlash[counter]=specialControl.replaceColour(titletopFlash[counter], Color.red, Color.cyan);
titletopFlash[counter]=specialControl.setMono(titletopFlash[counter], Color.cyan, tempColour);

tempColour=gameInfo.nextColour(tempColour);
}//endfor
}//endsetupswordfish

public void grabImages(SpecialControl specialControl, Level level){
swordFishImage=specialControl.grabSwordFish();
titletopImage=specialControl.grabTitleTop(level.gameDev);
}//endsetupswordfish

}//endcalssspecial
/* ----------------------------- Special Class ------------------------------ */
/* ------------------------- Special Control Class -------------------------- */
class SpecialControl extends DataControl{
SpecialData specialData = new SpecialData();

public SpecialControl(){
colourLock=false;
}//endcontstructor

public String grabScrolleyText(char textType){
return (specialData.ScrolleyText(textType));
}//endgrabscrolleytext

public void setColourLock(Color paperColour, Color inkColour){
colourLock=true;
paper=paperColour;
ink=inkColour;
}//endsetcolourlock

public Image[] grabMonty(){
Image[] Monty = new Image[4];
Monty[0] = grabGameOver("gl", "BOWO");
Monty[1] = grabGameOver("gf", "BOWO");
Monty[3] = grabGameOver("gp", "BOWO");
return Monty;
}//endgrabmonty

public Image grabGameOver(String setPiece, String setPieceColour){
String backgroundString = " ";
Image tempImage;

setPiece=setPiece.toLowerCase();
setPieceColour=setPieceColour.toLowerCase();

backgroundString=specialData.gameOverData(setPiece.charAt(1)); imageSize=16;
setColour(setPieceColour.substring(0, 4));
tempImage = StringToImage(backgroundString);
return tempImage;
}//endgrabprop


public Image StringToImage(String setPieceChar, int size){
Image offscreenImage;
Graphics bufferStore;

int valueHolder;

offscreenImage = frame.createImage(size,size);
bufferStore = offscreenImage.getGraphics();
if(colourLock==false){paper=Color.cyan;}
for(int outerCounter=0; outerCounter<size; outerCounter++){
for(int innerCounter=0; innerCounter<size; innerCounter++){
valueHolder = Character.getNumericValue(setPieceChar.charAt(innerCounter+(outerCounter*size)));
if(valueHolder==3){paper=colourStore(valueHolder); bufferStore.setColor(paper);}
else{ink=colourStore(valueHolder); bufferStore.setColor(ink);}
bufferStore.drawRect(innerCounter, outerCounter, 1, 1);
}//endfor
}//endfor

return offscreenImage;
}//endintarraytoimage

public Image grabSwordFish(){
Image offscreenImage;
Graphics bufferStore;
offscreenImage = frame.createImage(gameInfo.blockSize*2, gameInfo.blockSize*2);
bufferStore = offscreenImage.getGraphics();

String swordFishString="";
String[] colourStore={"BOCO", "BOCO", "BOYO", "BOWO"};
int yPos=0; int xPos=0;
imageSize=8;
for(int counter=0; counter<4; counter++){
setColour(colourStore[counter]);
swordFishString=specialData.swordFishData(counter);
bufferStore.drawImage(StringToImage(swordFishString), xPos, yPos, gameInfo.blockSize, gameInfo.blockSize, null);

if(counter==1){yPos=gameInfo.blockSize;}
if((counter==0)||(counter==2)){xPos=gameInfo.blockSize;}else{xPos=0;}
}//endswitch

return offscreenImage;
}//endgrabswordfish

public Image grabTitleTop(String gameDev){
Image offscreenImage;
Graphics bufferStore;

String tempString="";
Image tempImage;

offscreenImage = frame.createImage(gameInfo.ScreenWidth, (gameInfo.blockSize*8));
bufferStore = offscreenImage.getGraphics();

for(int counter=0; counter<64; counter++){
tempString=specialData.grabTitleTop(counter); //grab string
if((counter==14)&&(gameDev=="Bug-Byte")){tempString=specialData.grabTitleTop(141);}
tempImage=StringToImage(tempString, 16); //convert to image

int tempValue=(gameInfo.blockSize*2);
int yPos=(counter/16)*tempValue;
int xPos=(counter%16)*tempValue;
bufferStore.drawImage(tempImage, xPos, yPos, (gameInfo.blockSize*2), (gameInfo.blockSize*2), null);
}//endfor
offscreenImage=setTrasparent(offscreenImage, Color.black);
return offscreenImage;
}//endgrabtitletop

public Image grabTitleMid(){
Image offscreenImage;
Graphics bufferStore;

String tempString="";
Image tempImage;

offscreenImage = frame.createImage(gameInfo.ScreenWidth, (gameInfo.blockSize*8));
bufferStore = offscreenImage.getGraphics();

int yPos=0;
int xPos=0;
int size=8;
int xcounter=0;

for(int ocounter=0; ocounter<5; ocounter++){
if((ocounter==0)||(ocounter==2)){size=8; /*size2=32;*/}else{size=16; /*size2=16;*/}

for(int counter=0; counter<((32/size)*8); counter++){
if(size==8){tempString=specialData.grabTitleMid8(xcounter);
}else{tempString=specialData.grabTitleMid16(counter+xcounter);}//endif

tempImage=StringToImage(tempString, size);
bufferStore.drawImage(tempImage, xPos, yPos, size*2, size*2, null);
xPos+=size*2;
}//endfor
yPos+=size*2;
xPos=0;
if(size==16){xcounter+=16;}
}//endfor
return offscreenImage;
}//endgrabtitletop


public Color colourStore(int whichColour){
Color tempColor=Color.black;

switch(whichColour){
case 0 : tempColor=Color.black; break;
case 1 : tempColor=Color.white; break;
case 2 : tempColor=Color.yellow; break;
case 3 : tempColor=Color.cyan; break;
case 4 : tempColor=Color.green; break;
case 5 : tempColor=Color.magenta; break;
case 6 : tempColor=Color.red; break;
case 7 : tempColor=Color.blue; break;
}//endswitch

return tempColor;
}//endcolourstore
}//endspecialdatacontrol
/* ------------------------- Special Control Class -------------------------- */
/* --------------------------- SpecialData Class ---------------------------- */
class SpecialData{
public SpecialData(){
}//endconstructor

public String gameOverData(char specialType){
String holder = "";
switch(specialType){
case 'p' : holder = "1111111111111111011100100100111010001010010100011010101001010101010010100101001000010010010010000010001001000100001010100101010000101010010101000010101001010100001010100101010000101010010101000010101001010100001010100101010000101010010101000010101001010100"; break;//pedastall
case 'f' : holder = "0010101011000000001101010100000000111111110000000000100100000000000010010000000000011111100000000001000010000000000100001000000000010001100000000010001001000000001000001011100001011001001001000100010001000010010001000000001001000100000000101111111111111111"; break;//foot
case 'l' : holder = "0010101011000000001101010100000000101010110000000011010101000000001010101100000000110101010000000010101011000000001101010100000000101010110000000011010101000000001010101100000000110101010000000010101011000000001101010100000000101010110000000011010101000000"; break;//leg
}//endswitch
return holder;
}//endswitchdata

public String swordFishData(int specialType){
String holder = "";
switch(specialType){
case 0 : holder = "0000001000000101000111110111001111110010000111111111111100111111"; break;//Fish Head
case 1 : holder = "1010000001000011111001001111111111111000001111111110010011000011"; break;//Fish Tail
case 2 : holder = "0000000000000001001110010110111101010001011111110011100100000001"; break;//Sword hilt
case 3 : holder = "0000000000000000111111000000001000000001111111101111110000000000"; break;//Sword Blade
}//endswitch
return holder;
}//endswitchdata

public String ScrolleyText(char specialType){
String holder = "";
switch(specialType){
case 'b' : holder = ". . . . . . . . . . . MANIC MINER . . ÷ BUG-BYTE ltd. 1983 . . By Matthew Smith . . . Q to P = Left & Right . . Bottom row = Jump . . A to G = Pause . . H to L = Tune On/Off . . . Guide Miner Willy through 20 lethal caverns . . . . . . ."; break;//bug-byte
case 's' : holder = ". . . . . .Written by Matthew Smith ÷83 SOFTWARE PROJECTS Ltd. . .Guide Miner Willy through 20 lethal caverns. . .Q,E,T,UorO=left. . .W,R,Y,IorP=right. . .SHIFT-SPACE =Jump. . .A pause. . .Bonus Life for each 10000 points. . . . . . . . . . "; break;//software projects
}//endswitch
return holder;
}//endswitchdata

public String grabTitleMid16(int specialType){
String holder = "";
switch(specialType){
case 0 : holder = "6666666666666666666666666666666666666666666666116666666666666116666666666666166166666666666616616666666666666116666666666666666666666666666666666666666661666661666666661666661666666666166611666666666661116666111111116666611166666666666666666666666666666666"; break;
case 1 : holder = "6666666666666666666666666666666611111111666111166666611166111166166616116116116616616611116611666616661116661166616666116666116616666661666611666666666666661166666666666666116666666666666111166666666666666666111111111111111166666666666666666666666666666666"; break;
case 2 : holder = "6666666666666666666666666666666666666166666611166666111666666111666611166666611166611611666661166661661166666116661166611666611666111111166661166116666611666116616666661166611611166661111611116666666666666666111111111111111166666666666666666666666666666666"; break;
case 3 : holder = "6666666666666666666666666666666666661111611116666666611666116666166661166611666111666116661166116116611666116611661161166611661166611116661166116666111666116661666661166611666666666616611116666666666666666666111111111111111166666666666666666666666666666666"; break;
case 4 : holder = "6666666666666666666666666666666666111616666666661166611666666666166666116666666616666666666666666666666666666666666666666666666616666666666666661666666166666666116661166666666666111666666666666666666666666666111111111111111166666666666666666666666666666666"; break;
case 5 : holder = "6666666666666666666666666666666666666111111116666666166666111666666166666616116666616666661611666661661166166116666611666616611166666666661666166666666666166666666666666616666666666666611166666666666666666666111111111111111166666666666666666666666666666666"; break;
case 6 : holder = "6666666666666666666666666666666666111611116111666111666116661116611166611666111116116661166611611611666116661166661166611666116666116661166611666611666116661166661166611666116661111611116111166666666666666666111111111111111166666666666666666666666666666666"; break;
case 7 : holder = "6666666666666666666666666666666666611116111111116666116661166661666611666116666616661166611666161166116661111116611611666116661666111166611666666661116661166666666611666116666166666166111111116666666666666666111111111111111166666666666666666666666666666666"; break;
case 8 : holder = "6666666666666666666666666666666616611111111166661666116666111666616611666661166666661166666116666666111111116666666611661166666666661166611666666166116666116666166611666661166616611116666611166666666666666111111111111111666666666666666666666666666666666666"; break;
case 9 : holder = "6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666661166666666666666111666666666666666166666666666666166666666666661166666666666666666111111111666666666666666666666666666666666666"; break;
case 10 : holder = "6666666666666666666666666666666666666666666666606666666666666606666666666666666066666666666666666666666600000000666666666666666666666666266626226666666622622662666666662626266266666666266626626666666626662622666666666666666666666666666666666666666666666666"; break;
case 11 : holder = "6666666666666666666666666666666600000000066606666666606666606066006660666606660666066066660000060066606666066606666666666666666626266626222226226622662626666626662626262226662266266226266666262626662622222626666666666666666666666666666666666666666666666666"; break;
case 12 : holder = "6666666666666666666666666666666600006600006600060666060666066066000066000066606606066606066660660660060660060006666666666666666622666666266626226626666626662662226666662626266226666666262626626226666662626622666666666666666666666666666666666666666666666666"; break;
case 13 : holder = "6666666666666666666666666666666606660660000000000066060666666666060606066006666606600606660666660666066000666666666666666666666626266666266626666626666626666262662666662666662666266666266666262622222622222626666666666666666666666666666666666666666666666666"; break;
case 14 : holder = "6666666666666666666666666666666606666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666626666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666"; break;
case 15 : case 16 : case 17 :
case 18 : holder = "6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666"; break;
case 19 : holder = "0000006600000066000000060000000600666006006660060000000600000006000000660000006600666666006006660066666600660066006666660066600666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666"; break;
case 20 : holder = "0000000660000066000000060000000600666666006666060000666600000666000066666600000600666666066660060000000600000006000000066000006666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666"; break;
case 21 : holder = "6000006666666666000000066666666600666606666666660000066666666666660000066666666606666006666666660000000666666666600000666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666"; break;
case 22 : holder = "2222222622666226222222262226622622666666222262262222666622226226222266662262222622666666226222262222222622662226222222262266622666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666"; break;
case 23 : holder = "2222222622222226222222262222222666226666226666666622666622226666662266662222666666226666226666666622666622222226662266662222222666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666"; break;
case 24 : holder = "2222226666666666222222266666666622666226666666662222222666666666222222666666666622622666666666662266226666666666226662266666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666"; break;
case 25 : holder = "0000000660000066000000060000000666006666006660066600666600666006660066660066600666006666006660066600666600000006660066666000006666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666"; break;
case 26 : holder = "6666666660000066666666660000000666666666006666066666666600000666666666666600000666666666066660066666666600000006666666666000006666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666"; break;
case 27 : holder = "0000000666606666000000066600066666006666600600666600666600666006660066660066600666006666000000066600666600000006660066660066600666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666"; break;
case 28 : holder = "0000006600000006000000060000000600666006660066660000000666006666000000666600666600600666660066660066006666006666006660066600666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666"; break;
case 29 : case 30 :
case 31 : holder = "6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666"; break;
case 32 : case 34 : case 39 : case 44 :
case 46 : holder = "1111100000111000111110000011100011111000001110001111100000111000111110000011100011111000001110001111100000111000111110000011100011111110111111101111111011111110111111101111111011111110111111101111111011111110111111101111111011111110111111101111111011111110"; break;
case 33 : case 38 : case 43 :
case 45 : holder = "0011100000111110001110000011111000111000001111100011100000111110001110000011111000111000001111100011100000111110001110000011111011111110111111101111111011111110111111101111111011111110111111101111111011111110111111101111111011111110111111101111111011111110"; break;
case 35 : case 37 : case 40 :
case 42 : holder = "0011111011111000001111101111100000111110111110000011111011111000001111101111100000111110111110000011111011111000001111101111100011111110111111101111111011111110111111101111111011111110111111101111111011111110111111101111111011111110111111101111111011111110"; break;
case 36 :
case 41 : holder = "0011100000111000001110000011100000111000001110000011100000111000001110000011100000111000001110000011100000111000001110000011100011111110111111101111111011111110111111101111111011111110111111101111111011111110111111101111111011111110111111101111111011111110"; break;
case 47 : holder = "0011111011111110001111101111111000111110111111100011111011111110001111101111111000111110111111100011111011111110001111101111111011111110111111101111111011111110111111101111111011111110111111101111111011111110111111101111111011111110111111101111111011111110"; break;
}//endswitch
return holder;
}//endgrabtitlemid8

public String grabTitleMid8(int specialType){
String holder = "";
switch(specialType){
case 0 : holder = "2222222226262626626662666662666266666666666666666666666666666666"; break;
case 1 :
case 2 :
default : holder = "6666666666666666666666666666666666666666666666666666666666666666"; break;
}//endswitch
return holder;
}//endgrabtitlemid8
/*
public String grabTitleTop(int specialType){
String holder = "";
switch(specialType){
case 0 : holder = "3333343444444444333334444444444433333344444444443333333444444444333334434444444433334344444444443333343444444444334343434444444433444344444444443334344344444444333444344444444433344444444444443333343444444444333333444444444433333443444444443333334444444444"; break;
case 1 : holder = "4444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444446444466444664444444444444444444444444444444444444444444444444444466664444446444444646644446644444446464644664444444464644466"; break;
case 2 : holder = "4444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444446644444444664444646444444444444466444444444444444444444444444444"; break;
case 3 : holder = "4443333333333333444443333333333344343333333333334443333333333333444334333333333344343333333333334344343333333333444443333333333344433333333333334433433333333333434434333333333344443443333333334433433333333333443433333333333343444333333333333443343333333333"; break;
case 4 : holder = "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333"; break;
case 5 : holder = "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333"; break;
case 6 : holder = "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333111113333333331111111133333331111111111333331111333111311333111311131311133331311111311113333311111311111"; break;
case 7 : holder = "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333331311333333333333113113333333333311131333333333331113113333333333"; break;
case 8 : holder = "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333"; break;
case 9 : holder = "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333"; break;
case 10 : holder = "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333"; break;
case 11 : holder = "3333333262222226333333222622226233333222226226223333222222266222333222222226622233222222226226223222222226222262222222226222222611111111000000001111111100000000111111110111111011111111011111101111111101111110111111110111111011111111011111101111111100000000"; break;
case 12 : holder = "6222222623333333262222622233333322622622222333332226622222223333222662222222233322622622222222332622226222222223622222262222222200000000111111110000000011111111011111101111111101111110111111110111111011111111011111101111111101111110111111110000000011111111"; break;
case 13 : holder = "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333"; break;
case 14 : holder = "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333336663333333333333633333333333333363333333333333336333333333333333633333333333333363333333333333336333333333333333633"; break;
case 141: holder = "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333336663333333333333633333333333333363333333333333336333333333333333633333333333333363333333333333333333333333333333633"; break;
case 15 : holder = "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333366666666666333333333333333633333333663333363333333333333336333333333333333633333333333333363333333333333336333333333333333633333"; break;
case 16 : holder = "3333334444444444333334344444444433333434444444443334344444444444333444344444444433344444444444443333434344444444333334444444444433333333444444443333333334444444333333333344444333333333333434333333333333333333333333333333333333333333333333333333333333333333"; break;
case 17 : holder = "4444444462626266444444446262626244444444266262664444444426266626444444442626262644444444262626264444444426262626444444442626662643344444266262663333444462626262333334446262626233333343626262663333333326626626333333332666262633333333262626263333333326262626"; break;
case 18 : holder = "4444444444444444444444444444444444444444443433334444444444444333444444444433333344444444433333334444444433333333444444443333333344443344333333334444343333333333443333333333333344333333333333324333333333333332333333333333332233333333333333223333333333333222"; break;
case 19 : holder = "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333332233333333333322223333333333222222233333333222222223333333222222222233333222222222223333322222222222233332222222222223333222222222222233322222222222223332222222222222233"; break;
case 20 : holder = "3333322222233333322222222222222332222222222222233222222222222223332222222222223333222222222222333322222222222233332222222222223333322222222223333332222222222333333222222222233333322222222223333333222222223333333322222222333333332222222233333333222222223333"; break;
case 21 : holder = "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333332233333333333333222233333333333222222233333333322222222333333322222222223333332222222222233332222222222223333222222222222333222222222222233322222222222223322222222222222"; break;
case 22 : holder = "3333111111311111333311111113111133311111111111113331111111111111333311133111111133331111131111113333311111311111333333111333111133333333333333333333333333333333333333333333333323333333333333332333333333333333223333333333333322333333333333332223333333333333"; break;
case 23 : holder = "1131113333333333311113333333333313313111133333331113111131311133111311131131111311131113113111131133111131131111133331111311111133333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333"; break;
case 24 : holder = "3333333333333333333333333333333333333333322332323111333323333232111113333223322311111333322332233111133332233223111133333223322333333333334334333333333333433433333333333343334333333333343333433333333334333343333333333343343333333333334333433444444343433443"; break;
case 25 : holder = "3333333333333333333333333333333335553553323232235335355532323233355335533223322335533553322332233553355332233223355335533223322334333343343333433433334334333433343333433433343334333433334333433343343334333343343333433343343334333343343334334444344343433443"; break;
case 26 : holder = "3333333333333333333333333333333353333553323232233553533332233222355335533223322335533553322332233553355332233223355335533223322333433433343334333343334334333343334334333433334333433433334333433433334334333433334334333343343333433343343333434444344343433443"; break;
case 27 : holder = "1111111100000000111111110111111011111111011111101111111101111110111111110111111011111111011111101111111100000000111111110000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"; break;//HOUSE3
case 28 : holder = "0000000011111111011111101111111101111110111111110111111011111111011111101111111101111110111111110000000011111111000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"; break;
case 29 : holder = "3313331333133313311131113111311131113111311131111111111111111111111111111111111131113111311131113111311131113111311131113111311131113111311131113111311131113111311131113111311131113111311131113111311131113111311131113111311131113111311131113111311131113111"; break;
case 30 : holder = "3313331333336333311131113333633631113111333363361111111133666666111111113666666631113111666666663111311166666666311131116666666631113111333333333111311133003330311131113300330331113111330030333111311133000000311131113300333331113111330033333111311133003333"; break;
case 31 : holder = "6663333333363333333633333336333336363333333633336666666666666633666666666666666366666666666666666666666666666666666666666666666666666666333333336666666603330033666666663033003366666666330300336666666600000033666666663333003333666633333300333333333333330033"; break;
case 32 : holder = "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333433333333333344443333333333444444"; break;
case 33 : holder = "3333333326662626333333336262662633333333626266623333333326626262333333332626626233333333262626623333333326262626333333332666262633333333626626263333333362626626333334436262662633334444626266623444444426662662444444442626262644444444262626264444444462662626"; break;
case 34 : holder = "3333333333333222333333333333333233333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333332223333334433333222222244444333322222224444443332222222444444332222222244444443222222224444444422222222"; break;
case 35 : holder = "2222222222222233222222222222222332222222222222233332222222222222333332222222222233333332222222233333333332222233333333333332233333333333333333323333333333333322333333333333332222223333333332222222222233333222222222222233322222222222223322222222222222332222"; break;
case 36 : holder = "3333322222233333333332222223333333333333333333333333333333333333333333222233333333322222222223333222222222222223222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222"; break;
case 37 : holder = "3322222222222222322222222222222232222222222222232222222222222333222222222223333332222222233333333322222333333333333223333333333323333333333333332233333333333333223333333333333322233333333322222223333322222222222333222222222222223322222222222222332222222222"; break;
case 38 : holder = "2223333333333333233333333333333333333333333333333333333333333333333333333333333333333333333333333333333333334444333333334444444433333333111444443333222311114444222222231111144422222223111114442222222311111144222222221111111422222222111111142222222211111111"; break;
case 39 : holder = "3333333333333333333333333333444433333333444444443333444444444444334444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444"; break;
case 40 : holder = "4444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444"; break;
case 41 : holder = "4444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444AAAAAAAA44444444AAAAAAAA44444444AAAAAAAA44444444AAAAAAAA44444444AAAAAAAA44444444AAAAAAAA44444444AAAAAAAA44444444AAAAAAAA"; break;
case 42 : holder = "44444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444AAAAAAAA44444444AAAAAAAA44444444AAAAAAAA44444444AAAAAAAA44444444AAAAAAAA44444444AAAAAAAA44444444AAAAAAAA44444444AAAAAAAA44444444"; break;
case 43 : holder = "44444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"; break;
case 44 : holder = "44444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"; break;
case 45 : holder = "44444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"; break;
case 46 : holder = "44444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"; break;
case 47 : holder = "44444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444AAAAAAAA44444444AAAAAAAA44444444AAAAAAAA44444444AAAAAAAA44444444AAAAAAAA44444444AAAAAAAA44444444AAAAAAAA44444444AAAAAAAA44444444"; break;
case 48 : holder = "7777777444444444777774444444444477774444444444447777444444444444774444444444444444444444444444444444444444444444444444444444444444444442442442444444444244244244444444244442442244244442442244444222424444424442222224444442444444444442442444442222224424222242"; break;
case 49 : holder = "4444444224222442444444224442444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444244244422444444244442444242424444442442424244442244444242422224424442442422224244422444224442442444442222222424222244"; break;
case 50 : holder = "2444444444774444444444444477444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444442444444444244244242444244224444424444224224444442244222442424444242444244244442442444424222444244224422442444442222224224222224"; break;
case 51 : holder = "7777777777777777477777777777777744777777777777774447777447777777444444444447777744444444444477774444444444444777444444444444444742444444444244244424424444224442442444424422424424424442442444444444442442444224444242424244422444224442442444442244242222422222"; break;
case 52 : holder = "7777722222777777777777722222777777777222222777777777772222227777777777722777777777772222227777777777772222227777777777722277777742444444444444424424444444244444424244444422444244224244424244424442244244424424442244424424422444444424444244442224242222442222"; break;
case 53 : holder = "7777777777777777777777777777774477777777777744447777777774444444777777744444444477774444444444447774444444444444744444444444444444244424424444444244442444424444442444424242444424424444442442444444442442442442444242424244442442444424444244442244224222242222"; break;
case 54 : holder = "4444777711111111444444471111111144444444441111114444444444444411444444444444444444444444444444444444444444444444444444444444444444424442424444424422424444244442442242224224444244224442424242444442442444444224444244224442424244424424424444442244222224222222"; break;
case 55 : holder = "4444444444444444444444444444444444444444444444444444444444444444224444424444444444222224444444444444444444444444444444444444444444444424444244444444442244424424424244444424244442244442442444444222424444244244444444224424424444424444424444242222222422442242"; break;
case 56 : holder = "4444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444244244444244444444442444424422444244244444442244224244424244424422424442244442442242444242444242444444444244442422224422442224"; break;
case 57 : holder = "44444444AAAAAAAA44444444AAAAAAAA44444444AAAAAAAA44444444AAAAAAAA44444444AAAAAAAA44444444AAAAAAAA44444444AAAAAAAA44444444AAAAAAAA44244442AAAAAAAA42444444AAAAAAAA42444224AAAAAAAA24424444AAAAAAAA44244442AAAAAAAA42424442AAAAAAAA42444424AAAAAAAA24222242AAAAAAAA"; break;
case 58 : holder = "AAAAAAAA44444444AAAAAAAA44444444AAAAAAAA44444444AAAAAAAA44444444AAAAAAAA44444444AAAAAAAA44444444AAAAAAAA44444444AAAAAAAA44444444AAAAAAAA44424444AAAAAAAA42444424AAAAAAAA44244244AAAAAAAA24444422AAAAAAAA44244442AAAAAAAA42424442AAAAAAAA24444424AAAAAAAA22422422"; break;
case 59 : holder = "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"; break;
case 60 : holder = "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"; break;
case 61 : holder = "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"; break;
case 62 : holder = "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"; break;
case 63 : holder = "AAAAAAAA44444444AAAAAAAA44444444AAAAAAAA44444444AAAAAAAA44444444AAAAAAAA44444444AAAAAAAA44444444AAAAAAAA44444444AAAAAAAA44444444AAAAAAAA44244442AAAAAAAA44224442AAAAAAAA44244222AAAAAAAA42224422AAAAAAAA42444422AAAAAAAA44244244AAAAAAAA42444444AAAAAAAA24222242"; break;
}//endswitch
return holder;
}//endswitchdata
*/

public String grabTitleTop(int specialType){
String holder = "";
switch(specialType){
case 0 : holder = "3333343444444444333334444444444433333344444444443333333444444444333334434444444433334344444444443333343444444444334343434444444433444344444444443334344344444444333444344444444433344444444444443333343444444444333333444444444433333443444444443333334444444444"; break;
case 1 : holder = "4444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444446444466444664444444444444444444444444444444444444444444444444444466664444446444444646644446644444446464644664444444464644466"; break;
case 2 : holder = "4444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444446644444444664444646444444444444466444444444444444444444444444444"; break;
case 3 : holder = "4443333333333333444443333333333344343333333333334443333333333333444334333333333344343333333333334344343333333333444443333333333344433333333333334433433333333333434434333333333344443443333333334433433333333333443433333333333343444333333333333443343333333333"; break;
case 4 : holder = "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333"; break;
case 5 : holder = "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333"; break;
case 6 : holder = "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333111113333333331111111133333331111111111333331111333111311333111311131311133331311111311113333311111311111"; break;
case 7 : holder = "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333331311333333333333113113333333333311131333333333331113113333333333"; break;
case 8 : holder = "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333"; break;
case 9 : holder = "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333"; break;
case 10 : holder = "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333"; break;
case 11 : holder = "3333333262222226333333222622226233333222226226223333222222266222333222222226622233222222226226223222222226222262222222226222222611111111000000001111111100000000111111110111111011111111011111101111111101111110111111110111111011111111011111101111111100000000"; break;
case 12 : holder = "6222222623333333262222622233333322622622222333332226622222223333222662222222233322622622222222332622226222222223622222262222222200000000111111110000000011111111011111101111111101111110111111110111111011111111011111101111111101111110111111110000000011111111"; break;
case 13 : holder = "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333"; break;
case 14 : holder = "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333336663333333333333633333333333333363333333333333336333333333333333633333333333333363333333333333336333333333333333633"; break;
case 141: holder = "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333336663333333333333633333333333333363333333333333336333333333333333633333333333333363333333333333333333333333333333633"; break;
case 15 : holder = "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333366666666666333333333333333633333333663333363333333333333336333333333333333633333333333333363333333333333336333333333333333633333"; break;
case 16 : holder = "3333334444444444333334344444444433333434444444443334344444444444333444344444444433344444444444443333434344444444333334444444444433333333444444443333333334444444333333333344444333333333333434333333333333333333333333333333333333333333333333333333333333333333"; break;
case 17 : holder = "4444444462626266444444446262626244444444266262664444444426266626444444442626262644444444262626264444444426262626444444442626662643344444266262663333444462626262333334446262626233333343626262663333333326626626333333332666262633333333262626263333333326262626"; break;
case 18 : holder = "4444444444444444444444444444444444444444443433334444444444444333444444444433333344444444433333334444444433333333444444443333333344443344333333334444343333333333443333333333333344333333333333324333333333333332333333333333332233333333333333223333333333333222"; break;
case 19 : holder = "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333332233333333333322223333333333222222233333333222222223333333222222222233333222222222223333322222222222233332222222222223333222222222222233322222222222223332222222222222233"; break;
case 20 : holder = "3333322222233333322222222222222332222222222222233222222222222223332222222222223333222222222222333322222222222233332222222222223333322222222223333332222222222333333222222222233333322222222223333333222222223333333322222222333333332222222233333333222222223333"; break;
case 21 : holder = "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333332233333333333333222233333333333222222233333333322222222333333322222222223333332222222222233332222222222223333222222222222333222222222222233322222222222223322222222222222"; break;
case 22 : holder = "3333111111311111333311111113111133311111111111113331111111111111333311133111111133331111131111113333311111311111333333111333111133333333333333333333333333333333333333333333333323333333333333332333333333333333223333333333333322333333333333332223333333333333"; break;
case 23 : holder = "1131113333333333311113333333333313313111133333331113111131311133111311131131111311131113113111131133111131131111133331111311111133333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333"; break;
case 24 : holder = "3333333333333333333333333333333333333333322332323111333323333232111113333223322311111333322332233111133332233223111133333223322333333333334334333333333333433433333333333343334333333333343333433333333334333343333333333343343333333333334333433444444343433443"; break;
case 25 : holder = "3333333333333333333333333333333335553553323232235335355532323233355335533223322335533553322332233553355332233223355335533223322334333343343333433433334334333433343333433433343334333433334333433343343334333343343333433343343334333343343334334444344343433443"; break;
case 26 : holder = "3333333333333333333333333333333353333553323232233553533332233222355335533223322335533553322332233553355332233223355335533223322333433433343334333343334334333343334334333433334333433433334333433433334334333433334334333343343333433343343333434444344343433443"; break;
case 27 : holder = "1111111100000000111111110111111011111111011111101111111101111110111111110111111011111111011111101111111100000000111111110000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"; break;//HOUSE3
case 28 : holder = "0000000011111111011111101111111101111110111111110111111011111111011111101111111101111110111111110000000011111111000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"; break;
case 29 : holder = "3313331333133313311131113111311131113111311131111111111111111111111111111111111131113111311131113111311131113111311131113111311131113111311131113111311131113111311131113111311131113111311131113111311131113111311131113111311131113111311131113111311131113111"; break;
case 30 : holder = "3313331333336333311131113333633631113111333363361111111133666666111111113666666631113111666666663111311166666666311131116666666631113111333333333111311133003330311131113300330331113111330030333111311133000000311131113300333331113111330033333111311133003333"; break;
case 31 : holder = "6663333333363333333633333336333336363333333633336666666666666633666666666666666366666666666666666666666666666666666666666666666666666666333333336666666603330033666666663033003366666666330300336666666600000033666666663333003333666633333300333333333333330033"; break;
case 32 : holder = "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333433333333333344443333333333444444"; break;
case 33 : holder = "3333333326662626333333336262662633333333626266623333333326626262333333332626626233333333262626623333333326262626333333332666262633333333626626263333333362626626333334436262662633334444626266623444444426662662444444442626262644444444262626264444444462662626"; break;
case 34 : holder = "3333333333333222333333333333333233333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333332223333334433333222222244444333322222224444443332222222444444332222222244444443222222224444444422222222"; break;
case 35 : holder = "2222222222222233222222222222222332222222222222233332222222222222333332222222222233333332222222233333333332222233333333333332233333333333333333323333333333333322333333333333332222223333333332222222222233333222222222222233322222222222223322222222222222332222"; break;
case 36 : holder = "3333322222233333333332222223333333333333333333333333333333333333333333222233333333322222222223333222222222222223222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222"; break;
case 37 : holder = "3322222222222222322222222222222232222222222222232222222222222333222222222223333332222222233333333322222333333333333223333333333323333333333333332233333333333333223333333333333322233333333322222223333322222222222333222222222222223322222222222222332222222222"; break;
case 38 : holder = "2223333333333333233333333333333333333333333333333333333333333333333333333333333333333333333333333333333333334444333333334444444433333333111444443333222311114444222222231111144422222223111114442222222311111144222222221111111422222222111111142222222211111111"; break;
case 39 : holder = "3333333333333333333333333333444433333333444444443333444444444444334444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444"; break;
case 40 : holder = "4444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444"; break;
case 41 : holder = "4444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444000000004444444400000000444444440000000044444444000000004444444400000000444444440000000044444444000000004444444400000000"; break;
case 42 : holder = "4444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444400000000444444440000000044444444000000004444444400000000444444440000000044444444000000004444444400000000444444440000000044444444"; break;
case 43 : holder = "4444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; break;
case 44 : holder = "4444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; break;
case 45 : holder = "4444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; break;
case 46 : holder = "4444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; break;
case 47 : holder = "4444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444400000000444444440000000044444444000000004444444400000000444444440000000044444444000000004444444400000000444444440000000044444444"; break;
case 48 : holder = "7777777444444444777774444444444477774444444444447777444444444444774444444444444444444444444444444444444444444444444444444444444444444442442442444444444244244244444444244442442244244442442244444222424444424442222224444442444444444442442444442222224424222242"; break;
case 49 : holder = "4444444224222442444444224442444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444244244422444444244442444242424444442442424244442244444242422224424442442422224244422444224442442444442222222424222244"; break;
case 50 : holder = "2444444444774444444444444477444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444442444444444244244242444244224444424444224224444442244222442424444242444244244442442444424222444244224422442444442222224224222224"; break;
case 51 : holder = "7777777777777777477777777777777744777777777777774447777447777777444444444447777744444444444477774444444444444777444444444444444742444444444244244424424444224442442444424422424424424442442444444444442442444224444242424244422444224442442444442244242222422222"; break;
case 52 : holder = "7777722222777777777777722222777777777222222777777777772222227777777777722777777777772222227777777777772222227777777777722277777742444444444444424424444444244444424244444422444244224244424244424442244244424424442244424424422444444424444244442224242222442222"; break;
case 53 : holder = "7777777777777777777777777777774477777777777744447777777774444444777777744444444477774444444444447774444444444444744444444444444444244424424444444244442444424444442444424242444424424444442442444444442442442442444242424244442442444424444244442244224222242222"; break;
case 54 : holder = "4444777711111111444444471111111144444444441111114444444444444411444444444444444444444444444444444444444444444444444444444444444444424442424444424422424444244442442242224224444244224442424242444442442444444224444244224442424244424424424444442244222224222222"; break;
case 55 : holder = "4444444444444444444444444444444444444444444444444444444444444444224444424444444444222224444444444444444444444444444444444444444444444424444244444444442244424424424244444424244442244442442444444222424444244244444444224424424444424444424444242222222422442242"; break;
case 56 : holder = "4444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444244244444244444444442444424422444244244444442244224244424244424422424442244442442242444242444242444444444244442422224422442224"; break;
case 57 : holder = "4444444400000000444444440000000044444444000000004444444400000000444444440000000044444444000000004444444400000000444444440000000044244442000000004244444400000000424442240000000024424444000000004424444200000000424244420000000042444424000000002422224200000000"; break;
case 58 : holder = "0000000044444444000000004444444400000000444444440000000044444444000000004444444400000000444444440000000044444444000000004444444400000000444244440000000042444424000000004424424400000000244444220000000044244442000000004242444200000000244444240000000022422422"; break;
case 59 : holder = "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; break;
case 60 : holder = "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; break;
case 61 : holder = "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; break;
case 62 : holder = "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; break;
case 63 : holder = "0000000044444444000000004444444400000000444444440000000044444444000000004444444400000000444444440000000044444444000000004444444400000000442444420000000044224442000000004424422200000000422244220000000042444422000000004424424400000000424444440000000024222242"; break;
}//endswitch
return holder;
}//endswitchdata

}//endspecialDataclass
/* -------------------------- Special Data Class ---------------------------- */