68 lines
1.7 KiB
Java
68 lines
1.7 KiB
Java
package buildcraft.core.tablet;
|
|
|
|
import java.util.LinkedList;
|
|
import net.minecraft.nbt.NBTTagCompound;
|
|
import buildcraft.api.core.BCLog;
|
|
import buildcraft.api.tablet.ITablet;
|
|
import buildcraft.api.tablet.TabletAPI;
|
|
import buildcraft.api.tablet.TabletProgram;
|
|
import buildcraft.api.tablet.TabletProgramFactory;
|
|
|
|
public abstract class TabletBase implements ITablet {
|
|
protected LinkedList<TabletProgram> programs = new LinkedList<TabletProgram>();
|
|
|
|
protected TabletBase() {
|
|
|
|
}
|
|
|
|
public void tick(float time) {
|
|
if (programs.size() > 0) {
|
|
programs.getLast().tick(time);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public int getScreenWidth() {
|
|
return 244;
|
|
}
|
|
|
|
@Override
|
|
public int getScreenHeight() {
|
|
return 306;
|
|
}
|
|
|
|
protected boolean launchProgramInternal(String name) {
|
|
TabletProgramFactory factory = TabletAPI.getProgram(name);
|
|
if (factory == null) {
|
|
BCLog.logger.error("Tried to launch non-existent tablet program on side CLIENT: " + name);
|
|
return false;
|
|
}
|
|
TabletProgram program = factory.create(this);
|
|
if (program == null) {
|
|
BCLog.logger.error("Factory could not create program on side CLIENT: " + name);
|
|
return false;
|
|
}
|
|
programs.add(program);
|
|
return true;
|
|
}
|
|
|
|
public abstract void receiveMessage(NBTTagCompound compound);
|
|
|
|
protected boolean receiveMessageInternal(NBTTagCompound compound) {
|
|
if (compound.hasKey("__program")) {
|
|
compound.removeTag("__program");
|
|
if (programs.getLast() != null) {
|
|
programs.getLast().receiveMessage(compound);
|
|
}
|
|
return true;
|
|
} else {
|
|
if (compound.hasKey("programToLaunch")) {
|
|
System.out.println("received");
|
|
launchProgramInternal(compound.getString("programToLaunch"));
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
}
|