package com.droidquest.items; import java.util.Vector; import com.droidquest.Wire; import com.droidquest.chipstuff.Gate; import com.droidquest.chipstuff.Port; import com.droidquest.chipstuff.Signal; import com.droidquest.devices.ANDGate; import com.droidquest.devices.Device; import com.droidquest.devices.FlipFlop; import com.droidquest.devices.NOTGate; import com.droidquest.devices.Node; import com.droidquest.devices.ORGate; import com.droidquest.devices.PortDevice; import com.droidquest.devices.PrototypeChip; import com.droidquest.devices.SmallChip; import com.droidquest.devices.XORGate; public class ChipDecompiler extends Thread { public ChipDecompiler(PrototypeChip pc, SmallChip sc) { Vector deviceList = new Vector(); pc.grabbable = false; sc.grabbable = false; // Remove all wires and devices from Prototype Chip, expect for PortDevices for (int a=pc.InternalRoom.wires.size()-1; a>=0; a--) { Wire wire = (Wire)pc.InternalRoom.wires.elementAt(a); wire.Remove(); } for (int a=0; a<8; a++) { pc.portdevices[a].ports[0].type = Port.TYPE_UNDEFINED; pc.ports[a].type = Port.TYPE_UNDEFINED; pc.ports[a].value = false; } for (int a=0; a4) // Need many nodes { Port[] ports = new Port[numConnections]; for (int b=0; b 504) device.x = 504; if (device.y < 32) device.y = 32; if (device.y > 320) device.y = 320; } } // Rotate devices to point to the "next" device. AND, OR, NOT, XOR only for (int a=0; aMath.abs(dy)) { if (dx<0) device.rotate(-1); else device.rotate(1); } else { if (dy>0) { device.rotate(1); device.rotate(1); } } } } } pc.grabbable = true; sc.grabbable = true; } public Port FindPort(Signal sig, int num, PrototypeChip pc, SmallChip sc, Vector deviceList) { // Find Nth port that this signal attaches to in given SmallChip. int n=0; for (int a=0; a<8; a++) if (sc.portSignals[a].internalSignal == sig) { n++; if (n==num) return pc.portdevices[a].ports[0]; } for (int a=0; a