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

140 lines
2.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.items.Item;
public class MultiButton extends Material
{
public int number; //0=starter, 1,2,3,4,5,6,7,8,9 = buttons
transient ImageIcon images[];
static int[] states = new int[10]; //0=Blue, 1=White, 2=Orange
public Date timeout;
transient Room room=null;
public MultiButton(int n, int s)
{
super(true, false);
number = n;
states[number] = s;
}
public void GenerateIcons()
{
images = new ImageIcon[3];
for (int a=0; a<3; 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 = Color.blue;
if (a==1)
c = Color.white;
else if (a==2)
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];
}
public void TouchedByItem(Item item)
{
if (room==null)
room = item.room;
if (number==0)
{
if (states[0]==1)
{
states[0]=2;
for (int a=1; a<10; a++)
states[a]=1;
timeout = new Date(new Date().getTime() + 30000);
}
}
else
{
boolean okay = true;
if (states[0]<2) okay=false;
for (int a=1; a<number; a++)
if (states[a]!=2) okay=false;
if (okay)
{
states[number]=2;
timeout = new Date(new Date().getTime() + 5000);
}
}
}
public void Animate()
{
icon = images[states[number]];
if (number!=0)
return;
if (states[0]==0)
{
states[0] = 1;
for (int a=1; a<10; a++)
states[a]=0;
}
boolean flag = true;
for (int a=0; a<10; a++)
if (states[a]!=2)
flag=false;
if (flag)
{
Portal ptl = new Portal("ROEndGame.lvl",true,true);
level.materials.addElement(ptl);
room.SetMaterial(10,9,ptl);
}
if (states[0]==2)
{
Date now = new Date();
if (now.getTime() > timeout.getTime())
{
states[0]=1;
for (int a=1; a<10; a++)
states[a]=0;
}
}
}
public boolean equals(Material mat)
{
if (super.equals(mat))
if (number == ((MultiButton)mat).number)
return true;
return false;
}
}