Initial Version

This commit is contained in:
ThomasFooteDQ
2014-02-02 16:39:08 -05:00
commit dc6d494ff4
304 changed files with 35696 additions and 0 deletions

View File

@@ -0,0 +1,40 @@
package com.droidquest.materials;
import java.awt.Color;
import com.droidquest.Room;
import com.droidquest.avatars.GameCursor;
import com.droidquest.items.GenericRobot;
import com.droidquest.items.Item;
public class AntiPlayer extends Material
{
// Sends the Player (in or out of a robot) to the Main Office
public AntiPlayer()
{
super(Color.black,true,false);
}
public void TouchedByItem(Item item)
{
boolean trigger = false;
if (item == level.player)
trigger = true;
else if (item instanceof GenericRobot)
{
GameCursor gc = (GameCursor) level.gameCursor;
if (gc.PlayerInRobot(null) == item)
trigger=true;;
}
if (trigger)
{
level.player.room = (Room) level.rooms.elementAt(40);
level.player.x = 10*28;
level.player.y = 5*32;
level.currentViewer = level.player;
}
}
}

View File

@@ -0,0 +1,77 @@
package com.droidquest.materials;
import java.awt.Color;
import com.droidquest.items.Item;
public class AutoRunner extends Material
{
int direction;
public static final int UP =0;
public static final int RIGHTUP =1;
public static final int RIGHT =2;
public static final int RIGHTDOWN=3;
public static final int DOWN =4;
public static final int LEFTDOWN =5;
public static final int LEFT =6;
public static final int LEFTUP =7;
public static final int STOP =8;
public AutoRunner(int d)
{
super(Color.black, true, false);
direction = d;
}
public void TouchedByItem(Item item)
{
if (item == level.player)
switch (direction)
{
case UP:
level.player.autoX= level.player.x;
level.player.autoY= level.player.y-32;
level.player.automove=1;
break;
case RIGHTUP:
level.player.autoX= level.player.x+28;
level.player.autoY= level.player.y-32;
level.player.automove=1;
break;
case RIGHT:
level.player.autoX= level.player.x+28;
level.player.autoY= level.player.y;
level.player.automove=1;
break;
case RIGHTDOWN:
level.player.autoX= level.player.x+28;
level.player.autoY= level.player.y+32;
level.player.automove=1;
break;
case DOWN:
level.player.autoX= level.player.x;
level.player.autoY= level.player.y+32;
level.player.automove=1;
break;
case LEFTDOWN:
level.player.autoX= level.player.x-28;
level.player.autoY= level.player.y+32;
level.player.automove=1;
break;
case LEFT:
level.player.autoX= level.player.x-28;
level.player.autoY= level.player.y;
level.player.automove=1;
break;
case LEFTUP:
level.player.autoX= level.player.x-28;
level.player.autoY= level.player.y-32;
level.player.automove=1;
break;
case STOP:
level.player.automove=0;
break;
}
}
}

View File

@@ -0,0 +1,86 @@
package com.droidquest.materials;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import javax.swing.ImageIcon;
import com.droidquest.items.Crystal;
import com.droidquest.items.Item;
import com.droidquest.levels.Level;
public class BatteryIn extends Material
{
// Charges the Battery when an Energy Crystal is passed over it.
public void BatteryIn()
{
passable = true;
GenerateIcons();
}
public transient Item robot;
public void GenerateIcons()
{
BufferedImage bi = new BufferedImage(28,32,BufferedImage.TYPE_4BYTE_ABGR);
icon = new ImageIcon(bi);
Graphics g;
try
{
g = bi.getGraphics();
}
catch (NullPointerException e)
{
System.out.println("Could not get Graphics pointer to " + getClass() + " Image");
return;
}
g.setColor(Color.white);
g.fillRect(0,0,28,32);
g.setColor(Color.black);
g.fillRect(12,4,4,24);
g.fillRect(8,8,12,16);
g.fillRect(4,10,20,12);
g.fillRect(0,14,28,4);
g.fillRect(0,8,4,2);
g.fillRect(0,22,4,2);
g.fillRect(24,8,4,2);
g.fillRect(24,22,4,2);
passable = true;
}
public void TouchedByItem(Item item)
{
if (item.charge > 0)
{
// Check to see if it's a pure Crystal, not a Black Crystal
if (item instanceof Crystal)
{
int empty = 100000 - robot.charge;
if (empty >= item.charge)
{
robot.charge += item.charge;
item.charge=0;
}
else
{
item.charge-=empty;
robot.charge=100000;
}
level.PlaySound(robot.InternalRoom, Level.DISCHARGESOUND);
}
}
}
public boolean equals(Material mat)
{
if (super.equals(mat))
if (robot != null)
if (robot == ((BatteryIn)mat).robot)
return true;
return false;
}
}

View File

@@ -0,0 +1,78 @@
package com.droidquest.materials;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import javax.swing.ImageIcon;
import com.droidquest.items.Item;
public class BatteryOut extends Material
{
// Graph that shows the battery charge in a Generic Robot
public BatteryOut()
{
passable = true;
GenerateIcons();
}
public transient Item robot;
public void GenerateIcons()
{
BufferedImage bi = new BufferedImage(28,32,BufferedImage.TYPE_4BYTE_ABGR);
icon = new ImageIcon(bi);
Graphics g;
try
{
g = bi.getGraphics();
}
catch (NullPointerException e)
{
System.out.println("Could not get Graphics pointer to " + getClass() + " Image");
return;
}
g.setColor(Color.black);
g.fillRect(0,0,28,32);
g.setColor(Color.white);
g.fillRect(4,0,8,32);
g.fillRect(18,0,10,32);
g.fillRect(0,8,4,4);
g.fillRect(0,20,4,4);
}
public void Animate()
{
Graphics g;
try
{
g = icon.getImage().getGraphics();
}
catch (NullPointerException e)
{
System.out.println("Could not get Graphics pointer to " + getClass() + " Image");
return;
}
g.setColor(Color.black);
g.fillRect(12,0,6,32);
g.setColor(new Color(255,128,0));
if (robot!=null)
{
int fuel = (robot.charge+1564) / 3125; // 3125 = 100,000/32
g.fillRect(12,32-fuel,6,fuel);
}
}
public boolean equals(Material mat)
{
if (super.equals(mat))
if (robot != null)
if (robot == ((BatteryOut)mat).robot)
return true;
return false;
}
}

View File

@@ -0,0 +1,223 @@
package com.droidquest.materials;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import javax.swing.ImageIcon;
import com.droidquest.Room;
import com.droidquest.items.BinaryKey;
import com.droidquest.items.Item;
public class BinaryLock extends Material
{
// Binary shaped Generic Lock; Used to redefine materials in the local room.
int doorState=0;
transient BinaryKey latchKey = null;
transient Room room;
transient Room currentRoom;
static public int NARROW = -1;
static public int WIDE = -2;
static public int REMOVE = -3;
static public int RESET = -4;
static public int LEFT = -5;
static public int RIGHT = -6;
static public int UP = -7;
static public int DOWN = -8;
int[][] program;
// program[][] is an array of arrays. Each array holds the behavior of a
// single value of doorState.
//
// A single array can hold one of the following:
// A single value of Lock.NARROW, Lock.WIDE, or Lock.REMOVE to define a pause
// A single value of RESET, LEFT, RIGHT, UP, or DOWN to change rooms
// A series of triplets (X,Y,M) with the XY position and the Materials
// Index.
//
// Pause value can be one of the following:
// Lock.NARROW = Pause until the key is placed once more precisely into the lock.
// Lock.WIDE = Pause until the key is placed ANYWHERE into the lock
// Lock.REMOVE = Pause until the key is removed.
//
// Pause values automatically reset the current Room to the original value.
//
// Lock.RESET = Set current room to the original room value
// Lock.LEFT = Change the current room to the room's left room
// Lock.RIGHT = Same, but right
// Lock.UP = Same, but up
// Lock.DOWN = Same, but down
//
// The room is normally the key's rom when the key touches the lock, and
// the triplets change the materials within the current room. With these
// commands the current room can be changed so other rooms can be
// manipulated.
//
// Here's a sample program[][]
//
// int[][] = {
// {Lock.NARROW}, // Wait for precise placement
// {10,5,0, 11,5,0}, // Converts two spots to holes
// {10,6,0, 11,6,0}, // Same, but lower
// {Lock.NARROW}, // Wait again
// {10,6,1, 11,6,1}, // Converts two spots to wall
// {10,5,1, 11,5,1} // same, in reverse, go to pause.
// };
//
public BinaryLock(Color lc, int[][] prg)
{
super(true, false);
color = lc;
program = prg;
GenerateIcons();
}
public void GenerateIcons()
{
BufferedImage bi = new BufferedImage(28,32,BufferedImage.TYPE_4BYTE_ABGR);
Graphics g;
try
{
g = bi.getGraphics();
}
catch (NullPointerException e)
{
System.out.println("Could not get Graphics pointer to " + getClass() + "Image");
return;
}
g.setColor(color);
g.fillRect(0,0,28,32);
g.setColor(Color.black);
g.fillRect(16,2,4,8);
g.fillRect(16,12,4,2);
g.fillRect(12,14,4,4);
g.fillRect(20,14,4,4);
g.fillRect(16,18,4,2);
g.fillRect(16,22,4,8);
g.fillRect(24,4,4,4);
g.fillRect(24,24,4,4);
icon = new ImageIcon(bi);
}
public boolean equals(Material mat)
{
if (super.equals(mat))
if (program == ((BinaryLock)mat).program)
return true;
return false;
}
public void Animate()
{
if (doorState == program.length)
doorState = 0;
if (latchKey==null)
return;
if (program[doorState].length > 1)
{
for (int a=0; a<program[doorState].length/3; a++)
currentRoom.SetMaterial(program[doorState][a*3],
program[doorState][a*3+1],
program[doorState][a*3+2]);
doorState++;
}
else
{
if (program[doorState][0]==REMOVE)
{
currentRoom = room;
Dimension d = latchKey.GetXY();
int bigXL = d.width/28;
int bigXR = (d.width + latchKey.getWidth()) / 28;
int bigYT = d.height/32;
int bigYB = (d.height + latchKey.getHeight()) / 32;
boolean flag = false;
if (room.MaterialArray[bigYT][bigXL] == this) flag=true;
if (room.MaterialArray[bigYT][bigXR] == this) flag=true;
if (room.MaterialArray[bigYB][bigXL] == this) flag=true;
if (room.MaterialArray[bigYB][bigXR] == this) flag=true;
if (!flag)
doorState++;
}
else if (program[doorState][0]==RESET)
{
currentRoom = room;
doorState++;
}
else if (program[doorState][0]==LEFT)
{
currentRoom = currentRoom.leftRoom;
if (currentRoom== null) currentRoom = room;
doorState++;
}
else if (program[doorState][0]==RIGHT)
{
currentRoom = currentRoom.rightRoom;
if (currentRoom== null) currentRoom = room;
doorState++;
}
else if (program[doorState][0]==UP)
{
currentRoom = currentRoom.upRoom;
if (currentRoom== null) currentRoom = room;
doorState++;
}
else if (program[doorState][0]==DOWN)
{
currentRoom = currentRoom.downRoom;
if (currentRoom== null) currentRoom = room;
doorState++;
}
}
if (doorState == program.length)
doorState = 0;
}
public void TouchedByItem(Item item)
{
if (item instanceof BinaryKey)
{
latchKey = (BinaryKey) item;
room = latchKey.room;
}
if (latchKey==null)
return;
if (latchKey != item)
return;
if (program[doorState].length==1)
{
if (program[doorState][0]==NARROW)
{
currentRoom = room;
Dimension d = latchKey.GetXY();
int X = d.width % 28;
int Y = d.height % 32;
if (X>=10 && X <=14
&& Y<=4)
doorState++;
}
else if (program[doorState][0]==WIDE)
{
currentRoom = room;
doorState++;
}
}
if (doorState == program.length)
doorState = 0;
}
}

View File

@@ -0,0 +1,202 @@
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;
}
}
}

View File

@@ -0,0 +1,21 @@
package com.droidquest.materials;
import java.awt.Color;
import com.droidquest.items.Item;
public class BlueWall extends Material
{
public BlueWall()
{
super(new Color(0,0,255), false, true);
}
public boolean Passable(Item item)
{
if (item.getClass().toString().endsWith("Sentry3"))
return true;
else
return passable;
}
}

View File

@@ -0,0 +1,40 @@
package com.droidquest.materials;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import javax.swing.ImageIcon;
import com.droidquest.items.Item;
public class CameraDisable extends Material
{
public CameraDisable()
{
super(true, false);
BufferedImage bi = new BufferedImage(28,32,BufferedImage.TYPE_4BYTE_ABGR);
Graphics g;
try
{
g = bi.getGraphics();
}
catch (NullPointerException e)
{
System.out.println("Could not get Graphics pointer to " + getClass() + "Image");
return;
}
g.setColor(Color.black);
g.fillRect(0,0,28,32);
icon = new ImageIcon(bi);
}
public void TouchedByItem(Item item)
{
if (item == level.player)
if (level.currentViewer != level.player)
level.currentViewer = level.player;
}
}

View File

@@ -0,0 +1,63 @@
package com.droidquest.materials;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import javax.swing.ImageIcon;
import com.droidquest.items.Item;
public class CameraEnable extends Material
{
transient Item hiddenCamera=null;
public CameraEnable()
{
super(true, false);
GenerateIcons();
}
public void GenerateIcons()
{
BufferedImage bi = new BufferedImage(28,32,BufferedImage.TYPE_4BYTE_ABGR);
Graphics g;
try
{
g = bi.getGraphics();
}
catch (NullPointerException e)
{
System.out.println("Could not get Graphics pointer to " + getClass() + " Image");
return;
}
g.setColor(Color.black);
g.fillRect(0,0,28,32);
g.setColor(Color.white);
g.fillRect(8,9,12,2);
g.fillRect(8,21,12,2);
g.fillRect(4,11,4,2);
g.fillRect(4,19,4,2);
g.fillRect(20,11,4,2);
g.fillRect(20,19,4,2);
g.fillRect(0,13,4,6);
g.fillRect(24,13,4,6);
g.fillRect(8,13,12,6);
icon = new ImageIcon(bi);
}
public void TouchedByItem(Item item)
{
if (hiddenCamera==null)
for (int a=0; a<level.items.size(); a++)
{
Item i = (Item) level.items.elementAt(a);
if (i.getClass().toString().endsWith("HiddenCamera"))
hiddenCamera = i;
}
if (item == level.player)
level.currentViewer = hiddenCamera;
}
}

View File

@@ -0,0 +1,12 @@
package com.droidquest.materials;
import java.awt.Color;
public class ChipTester extends Material
{
public ChipTester()
{
color = Color.black;
passable = true;
}
}

View File

@@ -0,0 +1,13 @@
package com.droidquest.materials;
import java.awt.Color;
public class ChipTrash extends Material
{
public ChipTrash()
{
color = new Color(0,128,0);
passable = true;
}
}

View File

@@ -0,0 +1,39 @@
package com.droidquest.materials;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import javax.swing.ImageIcon;
public class CoinSlot extends Material
{
public CoinSlot()
{
super(true,false);
GenerateIcons();
}
public void GenerateIcons()
{
BufferedImage bi = new BufferedImage(28,32,BufferedImage.TYPE_4BYTE_ABGR);
Graphics g;
try
{
g = bi.getGraphics();
}
catch (NullPointerException e)
{
System.out.println("Could not get Graphics pointer to " + getClass() + " Image");
return;
}
g.setColor(Color.blue);
g.fillRect(0,0,28,32);
g.setColor(Color.black);
g.fillRect(12,4,4,24);
icon = new ImageIcon(bi);
}
}

View File

@@ -0,0 +1,58 @@
package com.droidquest.materials;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import javax.swing.ImageIcon;
import com.droidquest.items.Item;
import com.droidquest.levels.Level;
public class CrystalRecharger extends Material
{
// Charges a Crystal when one is passed over it.
public CrystalRecharger()
{
super(true, false);
}
public void GenerateIcons()
{
BufferedImage bi = new BufferedImage(28,32,BufferedImage.TYPE_4BYTE_ABGR);
icon = new ImageIcon(bi);
Graphics g;
try
{
g = bi.getGraphics();
}
catch (NullPointerException e)
{
System.out.println("Could not get Graphics pointer to " + getClass() + " Image");
return;
}
g.setColor(new Color(255,128,0));
g.fillRect(0,0,28,32);
g.setColor(Color.black);
g.fillRect(12,4,4,24);
g.fillRect(8,8,12,16);
g.fillRect(4,10,20,12);
g.fillRect(0,14,28,4);
g.fillRect(0,8,4,2);
g.fillRect(0,22,4,2);
g.fillRect(24,8,4,2);
g.fillRect(24,22,4,2);
}
public void TouchedByItem(Item item)
{
// Check to see if it's a pure Crystal, not a Black Crystal
if (item.getClass().toString().endsWith("Crystal"))
{
item.charge=100000;
level.PlaySound(item.room, Level.CHARGESOUND);
}
}
}

View File

@@ -0,0 +1,143 @@
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.decorations.TextBox;
import com.droidquest.items.Item;
import com.droidquest.items.Sentry;
public class DeactivatorSwitch extends Material
{
// This object deactivates the Sentry in the Hot Wires room. When
// activated, it sets the counter at 20 seconds, sets all versions of
// the HotWires material to value=false, sets the sentry program so that
// it's not sensitive to the area, and updates the timer text display.
// When the counter reaches 0, it resets everything back to normal.
public boolean value;
public Date timeout;
public ImageIcon[] images;
transient Item sentry = null;
transient TextBox textbox = null;
public DeactivatorSwitch()
{
super(true, false);
value=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 (value==false)
{
value=true;
Date now = new Date();
timeout = new Date(now.getTime() + 20000);
// Find HotWires and set their value to 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 = false;
}
}
// Find Sentry and set it's progam to something else.
if (sentry==null)
{
for(int a=0; a<level.items.size(); a++)
{
Item i = (Item) level.items.elementAt(a);
if (i instanceof Sentry && i.room == item.room.upRoom)
sentry = i;
}
}
((Sentry) sentry).protect[3]=0;
// Find the TextBox
if (textbox==null)
{
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
{
for (int a=0; a<level.materials.size(); a++)
{
Material mat = (Material) level.materials.elementAt(a);
if (mat instanceof HotWires)
((HotWires)mat).value =true;
}
((Sentry) sentry).protect[3]=11*32;
value=false;
textbox.textString = "00";
}
}
}
}

View File

@@ -0,0 +1,145 @@
package com.droidquest.materials;
import java.awt.Color;
import com.droidquest.avatars.GameCursor;
import com.droidquest.decorations.Graphix;
import com.droidquest.decorations.TextBox;
import com.droidquest.items.GenericRobot;
import com.droidquest.items.Item;
import com.droidquest.items.Magnet;
public class ElevatorDoor extends Material
{
// This material will open or close the elevator doors based on where
// the player is. It is sensitive to the player being inside a robot.
transient boolean checkedForMagnet = false;
transient Item magnet = null;
public ElevatorDoor()
{
super(Color.black, true, false);
}
public void TouchedByItem(Item item)
{
if (item.carriedBy!=null) return;
if (!checkedForMagnet)
{
for (int a=0; a<level.items.size(); a++)
{
Item i = (Item) level.items.elementAt(a);
if (i instanceof Magnet)
{
magnet = i;
checkedForMagnet=true;
}
}
}
boolean test = false;
if (item == level.player)
test = true;
else if (item instanceof GenericRobot)
{
GameCursor gc = (GameCursor) level.gameCursor;
if (gc.PlayerInRobot(null) == item)
test=true;;
}
Graphix gr = (Graphix) item.room.graphix.elementAt(1);
gr.x = 18*28;
if (magnet!=null)
if (magnet.room == item.room)
{
test=false;
gr.x = 18*28-10;
}
if (test)
{
int X = item.x/28;
switch(X)
{
case 3:
item.room.SetMaterial(11,1,0);
item.room.SetMaterial(11,2,0);
item.room.SetMaterial(11,3,0);
item.room.SetMaterial(11,4,0);
item.room.SetMaterial(11,5,0);
item.room.SetMaterial(11,6,0);
item.room.SetMaterial(11,7,0);
item.room.SetMaterial(11,8,0);
item.room.SetMaterial(11,9,0);
item.room.SetMaterial(11,10,0);
break;
case 4:
item.room.SetMaterial(11,1,2);
item.room.SetMaterial(11,2,0);
item.room.SetMaterial(11,3,0);
item.room.SetMaterial(11,4,0);
item.room.SetMaterial(11,5,0);
item.room.SetMaterial(11,6,0);
item.room.SetMaterial(11,7,0);
item.room.SetMaterial(11,8,0);
item.room.SetMaterial(11,9,0);
item.room.SetMaterial(11,10,2);
break;
case 5:
item.room.SetMaterial(11,1,2);
item.room.SetMaterial(11,2,2);
item.room.SetMaterial(11,3,0);
item.room.SetMaterial(11,4,0);
item.room.SetMaterial(11,5,0);
item.room.SetMaterial(11,6,0);
item.room.SetMaterial(11,7,0);
item.room.SetMaterial(11,8,0);
item.room.SetMaterial(11,9,2);
item.room.SetMaterial(11,10,2);
break;
case 6:
item.room.SetMaterial(11,1,2);
item.room.SetMaterial(11,2,2);
item.room.SetMaterial(11,3,2);
item.room.SetMaterial(11,4,0);
item.room.SetMaterial(11,5,0);
item.room.SetMaterial(11,6,0);
item.room.SetMaterial(11,7,0);
item.room.SetMaterial(11,8,2);
item.room.SetMaterial(11,9,2);
item.room.SetMaterial(11,10,2);
break;
case 7:
item.room.SetMaterial(11,1,2);
item.room.SetMaterial(11,2,2);
item.room.SetMaterial(11,3,2);
item.room.SetMaterial(11,4,2);
item.room.SetMaterial(11,5,0);
item.room.SetMaterial(11,6,0);
item.room.SetMaterial(11,7,2);
item.room.SetMaterial(11,8,2);
item.room.SetMaterial(11,9,2);
item.room.SetMaterial(11,10,2);
((TextBox) item.room.textBoxes.elementAt(1)).textString = "\"Hold please!\"";
break;
case 8:
item.room.SetMaterial(11,1,2);
item.room.SetMaterial(11,2,2);
item.room.SetMaterial(11,3,2);
item.room.SetMaterial(11,4,2);
item.room.SetMaterial(11,5,2);
item.room.SetMaterial(11,6,2);
item.room.SetMaterial(11,7,2);
item.room.SetMaterial(11,8,2);
item.room.SetMaterial(11,9,2);
item.room.SetMaterial(11,10,2);
((TextBox) item.room.textBoxes.elementAt(1)).textString = "\"Going up!\"";
break;
}
}
}
}

View File

@@ -0,0 +1,58 @@
package com.droidquest.materials;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import javax.swing.ImageIcon;
import com.droidquest.Room;
import com.droidquest.items.Item;
public class ElevatorInPortal extends Material
{
public ElevatorInPortal()
{
super(true, false);
GenerateIcons();
}
public void GenerateIcons()
{
BufferedImage bi = new BufferedImage(28,32,BufferedImage.TYPE_4BYTE_ABGR);
Graphics g;
try
{
g = bi.getGraphics();
}
catch (NullPointerException e)
{
System.out.println("Could not get Graphics pointer to " + getClass() + " Image");
return;
}
g.setColor(Color.blue);
g.fillRect(0,0,28,32);
g.setColor(Color.black);
g.fillRect(10,4,8,2);
g.fillRect(10,8,8,2);
g.fillRect(10,12,8,2);
g.fillRect(10,16,8,2);
g.fillRect(10,20,8,2);
g.fillRect(10,24,8,2);
g.fillRect(10,28,8,2);
icon = new ImageIcon(bi);
}
public void TouchedByItem(Item item)
{
if (item == level.player)
{
Room elevatorRoom = (Room) level.rooms.elementAt(35);
item.x = 28;
item.y = 10*32;
item.SetRoom(elevatorRoom);
}
}
}

View File

@@ -0,0 +1,96 @@
package com.droidquest.materials;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import javax.swing.ImageIcon;
import com.droidquest.Room;
import com.droidquest.items.Item;
public class ElevatorLock extends Material
{
int doorstate = 0;
// 0=closed
// 1=opening
// 2=opening
// 3=open
// 4=closing
// 5=closing
Room room;
public ElevatorLock()
{
super(true, false);
GenerateIcons();
}
public void GenerateIcons()
{
BufferedImage bi = new BufferedImage(28,32,BufferedImage.TYPE_4BYTE_ABGR);
Graphics g;
try
{
g = bi.getGraphics();
}
catch (NullPointerException e)
{
System.out.println("Could not get Graphics pointer to " + getClass() + " Image");
return;
}
g.setColor(Color.blue);
g.fillRect(0,0,28,32);
g.setColor(Color.black);
g.fillRect(4,4,4,2);
g.fillRect(12,4,4,2);
g.fillRect(4,8,4,2);
g.fillRect(20,8,4,2);
g.fillRect(20,26,4,2);
g.fillRect(4,14,12,4);
g.fillRect(4,22,12,4);
g.fillRect(20,12,4,12);
icon = new ImageIcon(bi);
}
public void TouchedByItem(Item item)
{
if (item.getClass().toString().endsWith("ElevatorKey"))
{
room = item.room;
if (doorstate==0)
doorstate=1;
else if (doorstate==3)
doorstate=4;
}
}
public void Animate()
{
switch(doorstate)
{
case 0: // Do nothing
break;
case 1:
room.SetMaterial(15,5,0);
doorstate++;
break;
case 2:
room.SetMaterial(15,4,0);
doorstate++;
break;
case 3:
break;
case 4:
room.SetMaterial(15,4,7);
doorstate++;
break;
case 5:
room.SetMaterial(15,5,7);
doorstate=0;
break;
}
}
}

View File

@@ -0,0 +1,42 @@
package com.droidquest.materials;
import com.droidquest.Room;
import com.droidquest.items.Item;
public class ElevatorOutPortal extends Material
{
transient static public Room outRoom;
public ElevatorOutPortal()
{
super(true, false);
}
public void TouchedByItem(Item item)
{
if (item == level.player)
{
if (outRoom == null)
outRoom = (Room) level.rooms.elementAt(9);
if (outRoom == (Room) level.rooms.elementAt(9))
{
item.x = 15*28;
item.y = 5*32;
item.SetRoom(outRoom);
}
else
{
item.x = 13*28;
item.y = 5*32;
item.SetRoom(outRoom);
}
}
}
static public void SetOutRoom(int roomNum)
{
outRoom = (Room) level.rooms.elementAt(roomNum);
}
}

View File

@@ -0,0 +1,71 @@
package com.droidquest.materials;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import javax.swing.ImageIcon;
import com.droidquest.avatars.GameCursor;
import com.droidquest.items.GenericRobot;
import com.droidquest.items.Item;
public class ForceField extends Material
{
String robotClassName=null;
public ForceField(String rc, Color c)
{
super(true,false);
robotClassName = rc;
color = c;
GenerateIcons();
}
public void GenerateIcons()
{
BufferedImage bi = new BufferedImage(28,32,BufferedImage.TYPE_4BYTE_ABGR);
Graphics g;
try
{
g = bi.getGraphics();
}
catch (NullPointerException e)
{
System.out.println("Could not get Graphics pointer to " + getClass() + "Image");
return;
}
g.setColor(Color.black);
g.fillRect(0,0,28,32);
g.setColor(color);
g.fillRect(12,0,4,32);
icon = new ImageIcon(bi);
}
public boolean Passable(Item item)
{
if (item == level.player)
return false;
else if (item instanceof GenericRobot)
{
GameCursor gc = (GameCursor) level.gameCursor;
if (gc.PlayerInRobot(null) == item)
return false;
}
if (item.getClass().toString().endsWith(robotClassName))
return false;
return true;
}
public boolean equals(Material mat)
{
if (super.equals(mat))
if (robotClassName == ((ForceField)mat).robotClassName)
return true;
return false;
}
}

View File

@@ -0,0 +1,99 @@
package com.droidquest.materials;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import javax.swing.ImageIcon;
import com.droidquest.items.Item;
import com.droidquest.levels.Level;
public class HotWires extends Material
{
// Hot orange wires that burn charge of any object that passes over it.
// Cold = white.
// Create shape by adding the direction values. UP+DOWN, LEFT+RIGHT, UP+LEFT, etc...
transient ImageIcon images[];
public static final int UP=1;
public static final int DOWN=2;
public static final int LEFT=4;
public static final int RIGHT=8;
public boolean value;
int wall;
public HotWires(int w, boolean v)
{
passable = true;
detectable = false;
wall = w;
value = v;
}
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;
g2.setBackground(Color.black);
g2.clearRect(0,0,28,32);
if (a==0)
g2.setColor(Color.white);
else
g2.setColor(new Color(255,128,0));
if ((wall & UP)==UP)
g.fillRect(13,0,2,16);
if ((wall & DOWN)==DOWN)
g.fillRect(13,16,2,16);
if ((wall & LEFT)==LEFT)
g.fillRect(0,15,14,2);
if ((wall & RIGHT)==RIGHT)
g.fillRect(14,15,14,2);
}
icon = images[0];
if (value)
icon = images[1];
}
public void TouchedByItem(Item item)
{
if (value)
if (item.charge>0)
{
item.charge=0;
level.PlaySound(item.room, Level.DISCHARGESOUND);
}
}
public void Animate()
{
icon = images[0];
if (value)
icon = images[1];
}
public boolean equals(Material mat)
{
if (super.equals(mat))
if (value == ((HotWires)mat).value
&& wall == ((HotWires)mat).wall)
return true;
return false;
}
}

View File

@@ -0,0 +1,245 @@
package com.droidquest.materials;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import javax.swing.ImageIcon;
import com.droidquest.Room;
import com.droidquest.items.Item;
import com.droidquest.items.Key;
public class Lock extends Material
{
// Generic Lock; Used to redefine materials in the local room.
int doorState=0;
Color keyColor;
transient Key latchKey = null;
transient Room room;
transient Room currentRoom;
static public int NARROW = -1;
static public int WIDE = -2;
static public int REMOVE = -3;
static public int RESET = -4;
static public int LEFT = -5;
static public int RIGHT = -6;
static public int UP = -7;
static public int DOWN = -8;
int[][] program;
// program[][] is an array of arrays. Each array holds the behavior of a
// single value of doorState.
//
// A single array can hold one of the following:
// A single value of Lock.NARROW, Lock.WIDE, or Lock.REMOVE to define a pause
// A single value of RESET, LEFT, RIGHT, UP, or DOWN to change rooms
// A series of triplets (X,Y,M) with the XY position and the Materials
// Index.
//
// Pause value can be one of the following:
// Lock.NARROW = Pause until the key is placed once more precisely into the lock.
// Lock.WIDE = Pause until the key is placed ANYWHERE into the lock
// Lock.REMOVE = Pause until the key is removed.
//
// Pause values automatically reset the current Room to the original value.
//
// Lock.RESET = Set current room to the original room value
// Lock.LEFT = Change the current room to the room's left room
// Lock.RIGHT = Same, but right
// Lock.UP = Same, but up
// Lock.DOWN = Same, but down
//
// The room is normally the key's rom when the key touches the lock, and
// the triplets change the materials within the current room. With these
// commands the current room can be changed so other rooms can be
// manipulated.
//
// Here's a sample program[][]
//
// int[][] = {
// {Lock.NARROW}, // Wait for precise placement
// {10,5,0, 11,5,0}, // Converts two spots to holes
// {10,6,0, 11,6,0}, // Same, but lower
// {Lock.NARROW}, // Wait again
// {10,6,1, 11,6,1}, // Converts two spots to wall
// {10,5,1, 11,5,1} // same, in reverse, go to pause.
// };
//
public Lock(Color lc, Color kc, int[][] prg)
{
super(true, false);
color = lc;
keyColor = kc;
program = prg;
GenerateIcons();
}
public void GenerateIcons()
{
BufferedImage bi = new BufferedImage(28,32,BufferedImage.TYPE_4BYTE_ABGR);
Graphics g;
try
{
g = bi.getGraphics();
}
catch (NullPointerException e)
{
System.out.println("Could not get Graphics pointer to " + getClass() + "Image");
return;
}
g.setColor(color);
g.fillRect(0,0,28,32);
g.setColor(Color.black);
g.fillRect(0,14,16,2);
g.fillRect(0,16,12,2);
g.fillRect(2,18,6,2);
icon = new ImageIcon(bi);
}
public boolean equals(Material mat)
{
if (super.equals(mat))
if (keyColor == ((Lock)mat).keyColor
&& program == ((Lock)mat).program)
return true;
return false;
}
public void Animate()
{
if (doorState == program.length)
doorState = 0;
if (latchKey==null)
{
if (program[doorState][0]==Lock.REMOVE)
{
for (int a=0; a<level.items.size(); a++)
{
Item item = (Item) level.items.elementAt(a);
if (item instanceof Key)
{
Key testKey = (Key) item;
if (testKey.color.equals(keyColor))
{
latchKey=testKey;
room = latchKey.room;
currentRoom = room;
}
}
}
}
}
if (latchKey==null)
return;
if (program[doorState].length > 1)
{
for (int a=0; a<program[doorState].length/3; a++)
currentRoom.SetMaterial(program[doorState][a*3],
program[doorState][a*3+1],
program[doorState][a*3+2]);
doorState++;
}
else
{
if (program[doorState][0]==REMOVE)
{
currentRoom = room;
Dimension d = latchKey.GetXY();
int bigXL = d.width/28;
int bigXR = (d.width + latchKey.getWidth()) / 28;
int bigYT = d.height/32;
int bigYB = (d.height + latchKey.getHeight()) / 32;
boolean flag = false;
if (room.MaterialArray[bigYT][bigXL] == this) flag=true;
if (room.MaterialArray[bigYT][bigXR] == this) flag=true;
if (room.MaterialArray[bigYB][bigXL] == this) flag=true;
if (room.MaterialArray[bigYB][bigXR] == this) flag=true;
if (!flag)
doorState++;
}
else if (program[doorState][0]==RESET)
{
currentRoom = room;
doorState++;
}
else if (program[doorState][0]==LEFT)
{
currentRoom = currentRoom.leftRoom;
if (currentRoom== null) currentRoom = room;
doorState++;
}
else if (program[doorState][0]==RIGHT)
{
currentRoom = currentRoom.rightRoom;
if (currentRoom== null) currentRoom = room;
doorState++;
}
else if (program[doorState][0]==UP)
{
currentRoom = currentRoom.upRoom;
if (currentRoom== null) currentRoom = room;
doorState++;
}
else if (program[doorState][0]==DOWN)
{
currentRoom = currentRoom.downRoom;
if (currentRoom== null) currentRoom = room;
doorState++;
}
}
if (doorState == program.length)
doorState = 0;
}
public void TouchedByItem(Item item)
{
if (item instanceof Key)
{
if (((Key)item).color.equals(keyColor))
{
latchKey = (Key) item;
room = latchKey.room;
}
}
if (latchKey==null)
return;
if (latchKey != item)
return;
if (program[doorState].length==1)
{
if (program[doorState][0]==NARROW)
{
currentRoom = room;
Dimension d = latchKey.GetXY();
int X = d.width % 28;
int Y = d.height % 32;
if (X>=16 && X <=20
&& Y>=10 && Y<=14)
doorState++;
}
else if (program[doorState][0]==WIDE)
{
currentRoom = room;
doorState++;
}
}
if (doorState == program.length)
doorState = 0;
}
}

View File

@@ -0,0 +1,49 @@
package com.droidquest.materials;
import java.awt.Color;
import java.util.Date;
import com.droidquest.Room;
import com.droidquest.items.Item;
import com.droidquest.items.Magnet;
public class LockS1 extends Material
{
Date timeout;
transient Item magnet=null;
transient Room room = null;
public LockS1()
{
super(new Color(0,0,128),false,true);
}
public void TouchedByItem(Item item)
{
if (item instanceof Magnet)
{
magnet = item;
room = item.room;
timeout = new Date(new Date().getTime() + 10000);
}
}
public void Animate()
{
if (magnet != null)
{
Date now = new Date();
if (now.getTime() > timeout.getTime())
{
if (magnet.room == room)
{
level.LinkRoomsLeftRight(11,30);
level.LinkRoomsLeftRight(30,11);
room.SetMaterial(10,3,0);
room.SetMaterial(11,3,0);
}
}
}
}
}

View File

@@ -0,0 +1,130 @@
package com.droidquest.materials;
import java.awt.Color;
import java.awt.Graphics;
import java.io.Serializable;
import javax.swing.ImageIcon;
import com.droidquest.RoomDisplay;
import com.droidquest.items.Item;
import com.droidquest.levels.Level;
public class Material implements Serializable, Cloneable
{
public transient static Level level;
public transient ImageIcon icon;
public String file;
public boolean passable;
public boolean detectable;
public Color color;
public Material(){}
public Material(String filename, boolean p, boolean d)
{
// icon=Toolkit.getDefaultToolkit().getImage(filename);
icon = new ImageIcon(filename);
passable = p;
detectable = d;
}
public Material(boolean p, boolean d)
{
passable = p;
detectable = d;
color = Color.black;
}
public Material (Color c, boolean p, boolean d)
{
passable=p;
detectable = d;
color=c;
}
public void GenerateIcons()
{
if (file != null)
icon = new ImageIcon(file);
}
public void Draw(Graphics g, RoomDisplay rd, int x, int y)
{
if (icon==null)
{
// Blank Background
g.setColor(color);
g.fillRect(x*28,y*32,28,32);
// if (color!=Color.BLACK){
// g.setColor(color.brighter());
// g.drawLine(x*28, y*32, x*28+27, y*32);
// g.drawLine(x*28, y*32, x*28, y*32+31);
// g.setColor(color.darker());
// g.drawLine(x*28+27, y*32, x*28+27, y*32+31);
// g.drawLine(x*28, y*32+31, x*28+27, y*32+31);
// }
return;
}
else
{
// Material Background
g.drawImage(icon.getImage(), x*28, y*32, rd);
return;
}
}
public void TouchedByItem(Item item)
{
}
public void Animate()
{
}
public boolean Passable(Item item)
{
return passable;
}
public boolean Detectable(Item item)
{
return detectable;
}
public boolean equals(Material mat)
{
if (getClass() == mat.getClass()
&& color == mat.color
&& passable == mat.passable
&& detectable == mat.detectable
&& file == mat.file)
return true;
else
return false;
}
public static Material FindSimiliar(Material mat1)
{
for (int a=0; a<level.materials.size(); a++)
{
Material mat2 = (Material) level.materials.elementAt(a);
if (mat1.equals(mat2))
return mat2;
}
level.materials.addElement(mat1);
return mat1;
}
public Object clone()
{
Object newObject = null;
try
{
newObject = super.clone();
}
catch (CloneNotSupportedException e) {}
return newObject;
}
}

View File

@@ -0,0 +1,44 @@
package com.droidquest.materials;
import java.awt.Color;
import com.droidquest.Room;
import com.droidquest.Wire;
import com.droidquest.items.Item;
public class MineField extends Material
{
int hit=0;
Item target = null;
public MineField()
{
super(Color.black, false, false);
}
public boolean Passable(Item item)
{
hit += 2;
target = item;
return false;
}
public void Animate()
{
if (hit>0)
hit--;
if (hit>=2)
{
target.room = (Room) level.rooms.elementAt(58);
target.charge=0;
if (target.InternalRoom != null)
{
Room room = target.InternalRoom;
if (room.wires.size()>0)
for(int a=0; a<room.wires.size(); a++)
((Wire) room.wires.elementAt(0)).Remove();
}
}
}
}

View File

@@ -0,0 +1,12 @@
package com.droidquest.materials;
import java.awt.Color;
public class Monitor extends Material
{
public Monitor()
{
super(Color.red,true,false);
}
}

View File

@@ -0,0 +1,139 @@
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;
}
}

View File

@@ -0,0 +1,157 @@
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 MultiSwitch extends Material
{
public int number; //0=starter, 1,2,3,4=pistons
transient ImageIcon images[];
static int[] states = {0,0,0,0,0}; //0=Blue, 1=White, 2=Orange
public Date timeout;
transient Room room=null;
public MultiSwitch(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;
g2.setBackground(Color.black);
g2.clearRect(0,0,28,32);
if (a==0)
g2.setColor(Color.blue);
else if (a==1)
g2.setColor(Color.white);
else if (a==2)
g2.setColor(new Color(255,128,0));
g2.fillRect(12,4,6,24);
g2.fillRect(18,12,10,8);
}
icon = images[0];
}
public void TouchedByItem(Item item)
{
if (room==null)
room = item.room;
if (number==0)
{
if (states[0]!=2)
{
states[0]=2;
states[1]=1;
states[2]=1;
states[3]=1;
states[4]=1;
timeout = new Date(new Date().getTime() + 5000);
}
}
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;
else
{
states[0]=0;
states[1]=0;
states[2]=0;
states[3]=0;
states[4]=0;
}
}
}
public void Animate()
{
icon = images[states[number]];
if (number!=0)
return;
boolean flag = true;
for (int a=0; a<5; a++)
if (states[a]!=2)
flag=false;
if (flag)
{
for (int a=0; a<level.materials.size(); a++)
{
Material mat = (Material) level.materials.elementAt(a);
if (mat instanceof BinaryLock)
{
BinaryLock bl = (BinaryLock) mat;
if (bl.program.length==1)
{
int[][] program = {
{BinaryLock.NARROW},
{2,10,0, 3,10,0, 4,10,0, 5,10,0, 2,9,4, 3,8,4, 4,8,4, 5,9,4},
{2,9,0, 3,8,0, 4,8,0, 5,9,0, 1,9,4, 1,8,4, 6,9,4, 6,8,4},
{BinaryLock.NARROW},
{2,9,4, 3,8,4, 4,8,4, 5,9,4, 1,9,0, 1,8,0, 6,9,0, 6,8,0},
{2,10,4, 3,10,4, 4,10,4, 5,10,4, 2,9,0, 3,8,0, 4,8,0, 5,9,0}
};
bl.program = program;
}
}
}
}
if (states[0]==2)
{
Date now = new Date();
if (now.getTime() > timeout.getTime())
{
states[0]=0;
states[1]=0;
states[2]=0;
states[3]=0;
states[4]=0;
}
}
}
public boolean equals(Material mat)
{
if (super.equals(mat))
if (number == ((MultiSwitch)mat).number)
return true;
return false;
}
}

View File

@@ -0,0 +1,110 @@
package com.droidquest.materials;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import javax.swing.ImageIcon;
import com.droidquest.items.Item;
import com.droidquest.items.Sentry;
public class PanicButton extends Material
{
boolean state = true;
transient ImageIcon images[];
transient Sentry sentry;
int number;
// image[0] = blue, off, Sentry alive
// image[1] = orange, on, Sentry dead
public PanicButton(int n)
{
super(true, false);
number = n;
GenerateIcons();
}
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;
g2.setBackground(Color.black);
g2.clearRect(0,0,28,32);
Color color;
if (a==0)
color = Color.blue;
else
color = new Color(255,128,0);
g.setColor(color);
g.fillRect(8,0,12,26);
g.fillRect(4,2,20,22);
g.fillRect(0,4,28,18);
g.setColor(Color.black);
g.fillRect(8,6,12,14);
g.fillRect(4,8,20,10);
g.setColor(color);
g.fillRect(12,8,4,10);
g.fillRect(8,10,12,6);
}
icon = images[0];
}
public void TouchedByItem(Item item)
{
if (item == level.player && level.player.carriedBy == null)
{
if (sentry==null)
{
for (int a=0; a<level.items.size(); a++)
{
Item i = (Item) level.items.elementAt(a);
if (i instanceof Sentry && i.room == item.room)
sentry = (Sentry) i;
}
}
if (sentry != null)
{
if (state)
{ // turn off
sentry.previousBehavior = sentry.behavior;
sentry.behavior = -2;
icon = images[1];
state = false;
}
else
{ // turn on
sentry.behavior = sentry.previousBehavior;
icon = images[0];
state = true;
}
}
}
}
public boolean equals(Material mat)
{
if (super.equals(mat))
if (number == ((PanicButton)mat).number)
return true;
return false;
}
}

View File

@@ -0,0 +1,47 @@
package com.droidquest.materials;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import javax.swing.ImageIcon;
import com.droidquest.items.GenericRobot;
import com.droidquest.items.Item;
public class PeriscopeDown extends Material
{
public PeriscopeDown()
{
super(true, false);
BufferedImage bi = new BufferedImage(28,32,BufferedImage.TYPE_4BYTE_ABGR);
Graphics g;
try
{
g = bi.getGraphics();
}
catch (NullPointerException e)
{
System.out.println("Could not get Graphics pointer to " + getClass() + "Image");
return;
}
g.setColor(Color.black);
g.fillRect(0,0,28,32);
icon = new ImageIcon(bi);
}
public void TouchedByItem(Item item)
{
if (item == level.player)
if (item.x < 462 || item.y > 80)
{
GenericRobot gr = (GenericRobot) level.player.room.portalItem;
level.currentViewer = level.player;
gr.periscope = false;
}
}
}

View File

@@ -0,0 +1,61 @@
package com.droidquest.materials;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import javax.swing.ImageIcon;
import com.droidquest.items.GenericRobot;
import com.droidquest.items.Item;
public class PeriscopeUp extends Material
{
public PeriscopeUp()
{
super(true, false);
GenerateIcons();
}
public void GenerateIcons()
{
BufferedImage bi = new BufferedImage(28,32,BufferedImage.TYPE_4BYTE_ABGR);
Graphics g;
try
{
g = bi.getGraphics();
}
catch (NullPointerException e)
{
System.out.println("Could not get Graphics pointer to " + getClass() + " Image");
return;
}
g.setColor(Color.black);
g.fillRect(0,0,28,32);
g.setColor(Color.white);
g.fillRect(8,9,12,2);
g.fillRect(8,21,12,2);
g.fillRect(4,11,4,2);
g.fillRect(4,19,4,2);
g.fillRect(20,11,4,2);
g.fillRect(20,19,4,2);
g.fillRect(0,13,4,6);
g.fillRect(24,13,4,6);
g.fillRect(8,13,12,6);
icon = new ImageIcon(bi);
}
public void TouchedByItem(Item item)
{
if (item == level.player)
if (item.x > 462 && item.y < 80)
{
GenericRobot gr = (GenericRobot) level.player.room.portalItem;
level.currentViewer = gr;
gr.periscope = true;
}
}
}

View File

@@ -0,0 +1,68 @@
package com.droidquest.materials;
import java.awt.Color;
import javax.swing.ImageIcon;
import com.droidquest.avatars.GameCursor;
import com.droidquest.items.Item;
public class PlayerBlocker extends Material
{
transient ImageIcon images[];
String[] filenames;
int animationState=0;
public PlayerBlocker(Color col)
{
color = col;
detectable = false;
}
public PlayerBlocker(String[] files)
{
detectable = false;
filenames = files;
GenerateIcons();
}
public void GenerateIcons()
{
if (filenames != null)
{
int numfiles = filenames.length;
images = new ImageIcon[numfiles];
for (int a=0; a<filenames.length; a++)
images[a] = new ImageIcon("images/"+ filenames[a]);
icon = images[0];
}
else
super.GenerateIcons();
}
public void Animate()
{
if (images!=null)
{
animationState++;
if (animationState==images.length)
animationState=0;
icon = images[animationState];
}
}
public boolean Passable(Item item)
{
if (level.gameCursor.getClass().toString().endsWith("GameCursor"))
{
GameCursor gc = (GameCursor) level.gameCursor;
if (gc.PlayerInRobot(null) == item)
return false;
}
if (item == level.player)
return false;
else
return true;
}
}

View File

@@ -0,0 +1,68 @@
package com.droidquest.materials;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import javax.swing.ImageIcon;
import com.droidquest.items.Item;
public class Portal extends Material
{
public String levelName;
public boolean bringStuff;
public boolean initLevel;
public Portal(String ln, boolean bs, boolean il)
{
super("",true, false);
levelName = ln;
bringStuff = bs;
initLevel = il;
GenerateIcons();
}
public void GenerateIcons()
{
BufferedImage bi = new BufferedImage(28,32,BufferedImage.TYPE_4BYTE_ABGR);
Graphics g;
try
{
g = bi.getGraphics();
}
catch (NullPointerException e)
{
System.out.println("Could not get Graphics pointer to " + getClass() + " Image");
return;
}
g.setColor(Color.blue);
g.fillRect(0,0,28,32);
g.setColor(Color.white);
g.fillRect(0,0,28,2);
g.fillRect(0,0,2,32);
icon = new ImageIcon(bi);
}
public void TouchedByItem(Item item)
{
if (item == level.player && level.player.carriedBy == null)
{
if (item.x%28==0 && item.y%32==0)
level.portal = this;
}
}
public boolean equals(Material mat)
{
if (super.equals(mat))
if (levelName == ((Portal)mat).levelName
&& bringStuff == ((Portal)mat).bringStuff
&& initLevel == ((Portal)mat).initLevel)
return true;
return false;
}
}

View File

@@ -0,0 +1,12 @@
package com.droidquest.materials;
import java.awt.Color;
public class PrototypeBurner extends Material
{
public PrototypeBurner()
{
color = Color.black;
passable = true;
}
}

View File

@@ -0,0 +1,35 @@
package com.droidquest.materials;
import java.awt.Color;
import com.droidquest.avatars.GameCursor;
import com.droidquest.items.Item;
public class RobotBlocker extends Material
{
// Creates a Material that blocks one particular Class of Robot.
Item robot;
public RobotBlocker(Item rob, Color col)
{
robot = rob;
color = col;
passable = true;
detectable = false;
}
public boolean Passable(Item item)
{
if (level.gameCursor.getClass().toString().endsWith("GameCursor"))
{
GameCursor gc = (GameCursor) level.gameCursor;
if (gc.PlayerInRobot(null) == robot)
return false;
}
if (item == robot || item == level.player)
return false;
else
return true;
}
}

View File

@@ -0,0 +1,40 @@
package com.droidquest.materials;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import javax.swing.ImageIcon;
import com.droidquest.items.Item;
public class SecretReset extends Material
{
public SecretReset()
{
super(true, false);
BufferedImage bi = new BufferedImage(28,32,BufferedImage.TYPE_4BYTE_ABGR);
Graphics g;
try
{
g = bi.getGraphics();
}
catch (NullPointerException e)
{
System.out.println("Could not get Graphics pointer to " + getClass() + " Image");
return;
}
g.setColor(Color.black);
g.fillRect(0,0,28,32);
icon = new ImageIcon(bi);
}
public void TouchedByItem(Item item)
{
if (item==level.player)
{
level.LinkRoomsUpDown(8,7);
}
}
}

View File

@@ -0,0 +1,41 @@
package com.droidquest.materials;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import javax.swing.ImageIcon;
import com.droidquest.items.Item;
public class SecretSet extends Material
{
public SecretSet()
{
super(true, false);
BufferedImage bi = new BufferedImage(28,32,BufferedImage.TYPE_4BYTE_ABGR);
Graphics g;
try
{
g = bi.getGraphics();
}
catch (NullPointerException e)
{
System.out.println("Could not get Graphics pointer to " + getClass() + " Image");
return;
}
g.setColor(Color.black);
g.fillRect(0,0,28,32);
icon = new ImageIcon(bi);
}
public void TouchedByItem(Item item)
{
if (item==level.player)
{
level.LinkRoomsUpDown(2,7);
level.LinkRoomsUpDown(8,2);
}
}
}

View File

@@ -0,0 +1,85 @@
package com.droidquest.materials;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import javax.swing.ImageIcon;
import com.droidquest.devices.ContactSensor;
import com.droidquest.devices.DirectionalSensor;
import com.droidquest.devices.RoomSensor;
import com.droidquest.items.Item;
public class ShapeEditor extends Material
{
Item target;
public ShapeEditor(Item item)
{
super(true, false);
target = item;
GenerateIcons();
}
public void GenerateIcons()
{
target.GenerateIcons();
BufferedImage bi = new BufferedImage(28,32,BufferedImage.TYPE_4BYTE_ABGR);
Graphics g;
try
{
g = bi.getGraphics();
}
catch (NullPointerException e)
{
System.out.println("Could not get Graphics pointer to " + getClass() + "Image");
return;
}
g.setColor(Color.black);
g.fillRect(0,0,28,32);
g.drawImage(target.currentIcon, 14-target.getWidth()/2, 16-target.getHeight()/2, level);
icon = new ImageIcon(bi);
}
public void TouchedByItem(Item item)
{
Item newItem = null;
if (item.editable)
{
if (item.getClass().toString().endsWith("Sensor"))
{
Item newTarget = (Item) target.clone();
if (item.getClass().toString().endsWith("ContactSensor"))
newItem = new ContactSensor(0,0,null,newTarget);
else if (item.getClass().toString().endsWith("RoomSensor"))
newItem = new RoomSensor(0,0,null,newTarget);
else if (item.getClass().toString().endsWith("DirectionalSensor"))
newItem = new DirectionalSensor(0,0,null,newTarget);
}
else
newItem = (Item) target.clone();
Item carrier = item.carriedBy;
carrier.Drops();
int itemX = item.x;
int itemY = item.y;
level.items.removeElement(item);
newItem.x=itemX;
newItem.y=itemY;
newItem.room = carrier.room;
level.items.addElement(newItem);
carrier.PicksUp(newItem);
}
}
public boolean equals(Material mat)
{
if (super.equals(mat))
if (target == ((ShapeEditor)mat).target)
return true;
return false;
}
}

View File

@@ -0,0 +1,24 @@
package com.droidquest.materials;
import com.droidquest.items.Item;
import com.droidquest.levels.Level;
public class SkyGuardMat extends Material
{
public SkyGuardMat()
{
super(true,false);
}
public void TouchedByItem(Item item)
{
if (item==level.player)
{
level.PlaySound(level.player.room, Level.DISCHARGESOUND);
level.player.x = 2*28;
level.player.y = 8*32;
level.player.SetRoom(level.player.room.downRoom);
}
}
}

View File

@@ -0,0 +1,12 @@
package com.droidquest.materials;
import java.awt.Color;
public class SmallChipBurner extends Material
{
public SmallChipBurner()
{
color = Color.black;
passable = true;
}
}

View File

@@ -0,0 +1,247 @@
package com.droidquest.materials;
import java.awt.Color;
import java.awt.Dimension;
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 Switch extends Material
{
// Programmable wall switch, normally used for opening doors when
// touched. Each line in the program is an array of numbers, with the
// first explaining what function the array of numbers performs.
//
// Wait4Contact
// Wait4Removal
// Wait4Time x
// SetValueHigh
// SetValueLow
// Replace (x,y,m)...
// LeftRoom
// RightRoom
// UpRoom
// DownRoom
// ResetRoom
public static final int ROT_UP =0; // Rotation refers to which wall the switch is attached to
public static final int ROT_RIGHT =1;
public static final int ROT_DOWN =2;
public static final int ROT_LEFT =3;
int rotation;
transient ImageIcon images[];
protected boolean value;
public static final int WAIT4CONTACT =-1;
public static final int WAIT4REMOVAL =-2;
public static final int WAIT4TIME =-3;
public static final int SETVALUEHIGH =-4;
public static final int SETVALUELOW =-5;
public static final int REPLACE =-6;
public static final int LEFTROOM =-7;
public static final int RIGHTROOM =-8;
public static final int UPROOM =-9;
public static final int DOWNROOM =-10;
public static final int RESETROOM =-11;
//public static final int WAIT4PLAYERCONTACT = -12;
//If I actually add this, it'll change the signature.
int switchState=0;
transient Room room;
transient Room currentRoom;
int[][] program;
Item trigger=null;
Date timeout;
boolean timing=false;
public Switch(int rot)
{
super(true,false);
int[][] p = {{0}};
program = p;
GenerateIcons();
rotation = rot;
}
public Switch(int rot, int[][] p)
{
super(true,false);
program = p;
GenerateIcons();
rotation = rot;
}
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;
g2.setBackground(Color.black);
g2.clearRect(0,0,28,32);
if (a==0)
g2.setColor(Color.white);
else
g2.setColor(new Color(255,128,0));
switch (rotation)
{
case ROT_UP:
g2.fillRect(2,10,24,6);
g2.fillRect(10,0,8,10);
break;
case ROT_RIGHT:
g2.fillRect(12,4,6,24);
g2.fillRect(18,12,10,8);
break;
case ROT_DOWN:
g2.fillRect(2,16,24,6);
g2.fillRect(10,22,8,10);
break;
case ROT_LEFT:
g2.fillRect(10,4,6,24);
g2.fillRect(0,12,10,8);
break;
}
}
}
public boolean equals(Material mat)
{
if (super.equals(mat))
if (rotation == ((Switch)mat).rotation
&& value == ((Switch)mat).value
&& program == ((Switch)mat).program)
return true;
return false;
}
public void TouchedByItem(Item item)
{
if (switchState == program.length)
switchState=0;
if (program[switchState][0]==WAIT4CONTACT)
{
trigger = item;
room = item.room;
currentRoom = room;
switchState++;
}
if (program[switchState][0]== -12) // == WAIT4PLAYERCONTACT
if (item == level.player)
{
trigger = item;
room = item.room;
currentRoom = room;
switchState++;
}
}
public void Animate()
{
if (switchState == program.length)
switchState=0;
if (value)
icon = images[1];
else
icon = images[0];
switch (program[switchState][0])
{
case WAIT4REMOVAL:
{
Dimension d = trigger.GetXY();
int bigXL = d.width / 28;
int bigXR = (d.width + trigger.getWidth() ) / 28;
int bigYT = d.height / 32;
int bigYB = (d.height + trigger.getHeight()) /32;
boolean removed = true;
for (int Y=bigYT; Y<bigYB; Y++)
for (int X=bigXL; X<bigXR; X++)
if (trigger.room.MaterialArray[Y][X]==this)
removed=false;
if (removed)
switchState++;
currentRoom = room;
}
break;
case WAIT4TIME:
if (timing)
{
Date now = new Date();
if (now.getTime() >= timeout.getTime())
{
switchState++;
timing = false;
currentRoom = room;
}
}
else
{
timeout = new Date(new Date().getTime() + 1000*program[switchState][1]);
timing = true;
}
break;
case SETVALUEHIGH:
value=true;
switchState++;
break;
case SETVALUELOW:
value=false;
switchState++;
break;
case REPLACE:
if (currentRoom == null)
currentRoom = trigger.room;
for (int a=0; a<(program[switchState].length-1)/3; a++)
currentRoom.SetMaterial(program[switchState][a*3+1],
program[switchState][a*3+2],
program[switchState][a*3+3]);
switchState++;
break;
case LEFTROOM:
currentRoom = currentRoom.leftRoom;
switchState++;
break;
case RIGHTROOM:
currentRoom = currentRoom.rightRoom;
switchState++;
break;
case UPROOM:
currentRoom = currentRoom.upRoom;
switchState++;
break;
case DOWNROOM:
currentRoom = currentRoom.downRoom;
switchState++;
break;
case RESETROOM:
currentRoom = room;
switchState++;
break;
}
}
}

View File

@@ -0,0 +1,34 @@
package com.droidquest.materials;
import com.droidquest.items.Item;
import com.droidquest.items.Train;
public class Switch1 extends Switch
{
transient Train train;
public Switch1()
{
super(Switch.ROT_UP);
}
public void TouchedByItem(Item item)
{
if (train==null)
for (int a=0; a<level.items.size(); a++)
{
Item t = (Item) level.items.elementAt(a);
if (t.getClass().toString().endsWith("Train"))
train = (Train) t;
}
if (train==null)
return;
if (train.room==null)
{
train.x = 108;
train.y = 250;
train.room = item.room;
}
}
}

View File

@@ -0,0 +1,24 @@
package com.droidquest.materials;
import com.droidquest.items.Item;
public class SwitchA extends Switch
{
// Classes SwitchA & SwitchB are used in the double switch puzzle in
// Level 3. SwitchA simply reacts to being touched and turns its value
// to true. SwitchB does the same, but also looks for the existence of
// SwitchA and polls its value. When both are true, SwitchB removes the
// Sentry and changes the textbox to say "KLAATA BARADA NIKTU", or
// something like that.
public SwitchA()
{
super(Switch.ROT_LEFT);
}
public void TouchedByItem(Item item)
{
value=true;
}
}

View File

@@ -0,0 +1,55 @@
package com.droidquest.materials;
import com.droidquest.decorations.TextBox;
import com.droidquest.items.Item;
import com.droidquest.items.Sentry;
public class SwitchB extends Switch
{
transient SwitchA switchA=null;
boolean flipped=false;
transient Sentry sentry=null;
public SwitchB()
{
super(Switch.ROT_LEFT);
}
public void TouchedByItem(Item item)
{
value=true;
for (int a=0; a<level.materials.size(); a++)
{
Material mat = (Material) level.materials.elementAt(a);
if (mat.getClass().toString().endsWith("SwitchA"))
switchA = (SwitchA) mat;
}
for (int a=0; a<level.items.size(); a++)
{
Item item2 = (Item) level.items.elementAt(a);
if (item2.room==item.room)
if (item2.getClass().toString().endsWith("Sentry"))
sentry = (Sentry) item2;
}
}
public void Animate()
{
super.Animate();
if (!flipped)
if (value)
{
if (switchA!=null)
if (switchA.value)
{
flipped=true;
TextBox textbox = (TextBox) sentry.room.textBoxes.elementAt(0);
textbox.textString="KLAATA BARADA NIKTO!";
textbox.y=6*32;
textbox.width = 400;
level.items.removeElement(sentry);
}
}
}
}

View File

@@ -0,0 +1,38 @@
package com.droidquest.materials;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import javax.swing.ImageIcon;
public class VendingSlot extends Material
{
public VendingSlot()
{
super(false, true);
GenerateIcons();
}
public void GenerateIcons()
{
BufferedImage bi = new BufferedImage(28,32,BufferedImage.TYPE_4BYTE_ABGR);
Graphics g;
try
{
g = bi.getGraphics();
}
catch (NullPointerException e)
{
System.out.println("Could not get Graphics pointer to " + getClass() + " Image");
return;
}
g.setColor(new Color(0,0,128));
g.fillRect(0,0,28,32);
g.setColor(Color.black);
g.fillRect(0,24,28,4);
icon = new ImageIcon(bi);
}
}

View File

@@ -0,0 +1,75 @@
package com.droidquest.materials;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import javax.swing.ImageIcon;
import com.droidquest.Room;
public class XitSlot extends Material
{
public int doorState=0;
public Room room=null;
public XitSlot()
{
super(true, false);
GenerateIcons();
}
public void GenerateIcons()
{
BufferedImage bi = new BufferedImage(28,32,BufferedImage.TYPE_4BYTE_ABGR);
Graphics g;
try
{
g = bi.getGraphics();
}
catch (NullPointerException e)
{
System.out.println("Could not get Graphics pointer to " + getClass() + " Image");
return;
}
g.setColor(Color.blue);
g.fillRect(0,0,28,32);
g.setColor(Color.black);
g.fillRect(12,4,4,24);
icon = new ImageIcon(bi);
}
public void Animate()
{
switch (doorState)
{
case 1:
room.SetMaterial(11,8,0);
room.SetMaterial(14,5,0);
room.SetMaterial(17,2,0);
room.SetMaterial(12,7,2);
room.SetMaterial(15,4,2);
doorState=2;
break;
case 2:
room.SetMaterial(12,7,0);
room.SetMaterial(15,4,0);
room.SetMaterial(13,6,2);
room.SetMaterial(16,3,2);
doorState=3;
break;
case 3:
room.SetMaterial(13,6,0);
room.SetMaterial(16,3,0);
room.SetMaterial(11,8,2);
room.SetMaterial(14,5,2);
room.SetMaterial(17,2,2);
doorState=1;
break;
}
}
}