DroidQuest/src/com/droidquest/avatars/LabCursor.java

155 lines
4.0 KiB
Java

package com.droidquest.avatars;
import com.droidquest.Room;
import com.droidquest.devices.SmallChip;
import com.droidquest.items.GenericRobot;
import com.droidquest.items.Item;
import com.droidquest.items.ToolBox;
import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
public class LabCursor extends Player {
public boolean hot;
public LabCursor(int X, int Y, Room r) {
x = X;
y = Y;
hot = false;
room = r;
width = 28;
height = 32;
GenerateIcons();
// Lab cursor has a longer key repeat rate than the game cursor
setKeyRepeatRate(10);
}
public void GenerateIcons() {
icons = new ImageIcon[2];
icons[0] = new ImageIcon(new BufferedImage(width, height, BufferedImage.TYPE_4BYTE_ABGR));
icons[1] = new ImageIcon(new BufferedImage(width, height, BufferedImage.TYPE_4BYTE_ABGR));
Graphics g;
try {
g = icons[0].getImage().getGraphics();
}
catch (NullPointerException e) {
System.out.println("Could not get Graphics pointer to LabCursor Image");
return;
}
g.setColor(Color.white);
g.fillRect(0, 0, width, height);
try {
g = icons[1].getImage().getGraphics();
}
catch (NullPointerException e) {
System.out.println("Could not get Graphics pointer to LabCursor Image");
return;
}
g.setColor(new Color(255, 128, 0));
g.fillRect(0, 0, width, height);
if (hot) {
currentIcon = icons[1].getImage();
}
else {
currentIcon = icons[0].getImage();
}
}
public boolean CanBePickedUp(Item i) {
return !(i instanceof GenericRobot);
}
@Override
protected boolean handleSaveSmallChip() {
if (carrying != null) {
if (carrying instanceof SmallChip) {
FileDialog fd = new FileDialog(level.roomdisplay.dq, "Save Chip", FileDialog.SAVE);
fd.setDirectory("chips");
fd.show();
System.out.println("Dialog returned with "
+ fd.getDirectory()
+ fd.getFile());
if (fd.getFile() != null) {
((SmallChip) carrying).SaveChip(fd.getDirectory() + fd.getFile());
}
return true;
}
}
return false;
}
@Override
public boolean handleHotCursor() {
hot = !hot;
if (hot) {
currentIcon = icons[1].getImage();
}
else {
currentIcon = icons[0].getImage();
}
this.room.level.roomdisplay.dq.setHotCursorSelected(hot);
return true;
}
@Override
public boolean handlePaintbrush() {
if (level.paintbrush == null) {
return false;
}
if (carrying != null) {
Drops();
}
level.paintbrush.x = (x / 28) * 28;
level.paintbrush.y = (y / 32) * 32;
level.paintbrush.room = room;
room = null;
if (level.currentViewer == level.player) {
level.currentViewer = level.paintbrush;
}
level.player = level.paintbrush;
handleRemote();
level.roomdisplay.dq.selectPaintBrush();
return true;
}
@Override
public boolean handleToolbox() {
if (level.toolbox == null) {
return false;
}
if (level.toolbox.room != room) {
// Summon Toolbox
if (carrying != null) {
return false;
}
if (((ToolBox) level.toolbox).open) {
((ToolBox) level.toolbox).Toggle();
}
level.toolbox.room = room;
level.toolbox.x = x + 28;
level.toolbox.y = y + 6;
PicksUp(level.toolbox);
}
else {
((ToolBox) level.toolbox).Toggle();
}
return true;
}
}