155 lines
4.0 KiB
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;
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |