DroidQuest/src/com/droidquest/materials/BlueGridSwitch.java

203 lines
4.7 KiB
Java

package com.droidquest.materials;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.util.Date;
import javax.swing.ImageIcon;
import com.droidquest.Room;
import com.droidquest.decorations.Graphix;
import com.droidquest.decorations.TextBox;
import com.droidquest.items.Item;
public class BlueGridSwitch extends Material
{
// This object turns off the Blue grid (and HotWires), and opens the
// doorway to the room above.
public ImageIcon[] images;
boolean value=false;
int animationState=0;
transient Room room=null;
Date timeout;
transient TextBox textbox = null;
public BlueGridSwitch()
{
super(true, false);
}
public void GenerateIcons()
{
images = new ImageIcon[2];
for (int a=0; a<2; a++)
{
images[a] = new ImageIcon(new BufferedImage(28,32,BufferedImage.TYPE_4BYTE_ABGR));
Graphics g;
try
{
g = images[a].getImage().getGraphics();
}
catch (NullPointerException e)
{
System.out.println("Could not get Graphics pointer to " + getClass() + " Image");
return;
}
Graphics2D g2 = (Graphics2D) g;
Color c;
if (a==0)
c = Color.white;
else
c = new Color(255,128,0);
g2.setColor(c);
g.fillRect(0,0,28,32);
g2.setColor(Color.black);
g.fillRect(4,14,20,4);
g.fillRect(8,12,12,8);
g.fillRect(12,8,4,16);
g2.setColor(c);
g.fillRect(12,14,4,4);
}
icon = images[0];
if (value)
icon = images[1];
}
public void TouchedByItem(Item item)
{
if (animationState==0)
{
animationState = 1;
room = item.room;
timeout = new Date(new Date().getTime() + 20000);
textbox = (TextBox) item.room.textBoxes.elementAt(0);
}
}
public void Animate()
{
icon = images[0];
if (value)
{
icon = images[1];
Date now = new Date();
long timer = timeout.getTime() - now.getTime();
if (timer > 0)
{
long seconds = Math.abs(timer/1000) + 1;
if (seconds<10)
textbox.textString = "0" + seconds;
else
textbox.textString = "" + seconds;
}
else
{
textbox.textString = "00";
animationState++;
}
}
switch (animationState)
{
case 1:value=true;
room.SetMaterial(2,0,0);
room.upRoom.SetMaterial(2,11,0);
for (int a=0; a<level.materials.size(); a++)
{
Material mat = (Material) level.materials.elementAt(a);
if (mat instanceof HotWires)
{
HotWires hw = (HotWires) mat;
if (hw.wall==0)
hw.value=false;
}
}
for (int a=0; a<5; a++)
{
Graphix gr = (Graphix) room.graphix.elementAt(a);
String[] filelist = {"whiteHorizontal.gif"};
gr.filenames = filelist;
gr.GenerateIcons();
}
for (int a=0; a<5; a++)
{
Graphix gr = (Graphix) room.graphix.elementAt(a+5);
String[] filelist = {"whiteVertical.gif"};
gr.filenames = filelist;
gr.GenerateIcons();
}
animationState++;
break;
case 2:
room.SetMaterial(3,0,0);
room.upRoom.SetMaterial(3,11,0);
animationState++;
break;
case 3:
room.SetMaterial(4,0,0);
room.upRoom.SetMaterial(4,11,0);
animationState++;
break;
case 4:
room.SetMaterial(5,0,0);
room.upRoom.SetMaterial(5,11,0);
animationState++;
break;
case 5:
break;
case 6:
room.SetMaterial(5,0,9);
room.upRoom.SetMaterial(5,11,9);
value = false;
for (int a=0; a<level.materials.size(); a++)
{
Material mat = (Material) level.materials.elementAt(a);
if (mat instanceof HotWires)
{
HotWires hw = (HotWires) mat;
if (hw.wall==0)
hw.value=true;
}
}
for (int a=0; a<5; a++)
{
Graphix gr = (Graphix) room.graphix.elementAt(a);
String[] filelist = {"blueHorizontal.gif"};
gr.filenames = filelist;
gr.GenerateIcons();
}
for (int a=0; a<5; a++)
{
Graphix gr = (Graphix) room.graphix.elementAt(a+5);
String[] filelist = {"blueVertical.gif"};
gr.filenames = filelist;
gr.GenerateIcons();
}
animationState++;
break;
case 7:
room.SetMaterial(4,0,9);
room.upRoom.SetMaterial(4,11,9);
animationState++;
break;
case 8:
room.SetMaterial(3,0,9);
room.upRoom.SetMaterial(3,11,9);
animationState++;
break;
case 9:
room.SetMaterial(2,0,9);
room.upRoom.SetMaterial(2,11,9);
animationState = 0;
break;
}
}
}