Many fixes - still need to get private frequencies to load

This commit is contained in:
Aidan C. Brady 2015-03-12 01:03:31 -05:00
parent dc611eb0b2
commit c2c3bd14bc
4 changed files with 73 additions and 49 deletions

View file

@ -87,28 +87,24 @@ public class GuiTeleporter extends GuiMekanism
buttonList.add(deleteButton);
}
public void setFrequency()
public void setFrequency(String freq)
{
String text = frequencyField.getText();
if(text.isEmpty())
if(freq.isEmpty())
{
return;
}
ArrayList data = new ArrayList();
data.add(0);
data.add(text);
data.add(freq);
data.add(!privateMode);
Mekanism.packetHandler.sendToServer(new TileEntityMessage(Coord4D.get(tileEntity), data));
frequencyField.setText("");
}
public String getSecurity()
public String getSecurity(Frequency freq)
{
return privateMode ? EnumColor.DARK_RED + MekanismUtils.localize("gui.private") : MekanismUtils.localize("gui.public");
return !freq.publicFreq ? EnumColor.DARK_RED + MekanismUtils.localize("gui.private") : MekanismUtils.localize("gui.public");
}
public void updateButtons()
@ -118,6 +114,24 @@ public class GuiTeleporter extends GuiMekanism
return;
}
List<String> text = new ArrayList<String>();
if(privateMode)
{
for(Frequency freq : tileEntity.privateCache)
{
text.add(freq.name);
}
}
else {
for(Frequency freq : tileEntity.publicCache)
{
text.add(freq.name + " (" + freq.owner + ")");
}
}
scrollList.setText(text);
if(privateMode)
{
publicButton.enabled = true;
@ -161,24 +175,6 @@ public class GuiTeleporter extends GuiMekanism
updateButtons();
List<String> text = new ArrayList<String>();
if(privateMode)
{
for(Frequency freq : tileEntity.privateCache)
{
text.add(freq.name);
}
}
else {
for(Frequency freq : tileEntity.publicCache)
{
text.add(freq.name + " (" + freq.owner + ")");
}
}
scrollList.setText(text);
frequencyField.updateCursorCounter();
}
@ -198,7 +194,7 @@ public class GuiTeleporter extends GuiMekanism
if(xAxis >= 137 && xAxis <= 148 && yAxis >= 103 && yAxis <= 114)
{
setFrequency();
setFrequency(frequencyField.getText());
frequencyField.setText("");
SoundHandler.playSound("gui.button.press");
}
@ -217,7 +213,8 @@ public class GuiTeleporter extends GuiMekanism
{
if(frequencyField.isFocused())
{
setFrequency();
setFrequency(frequencyField.getText());
frequencyField.setText("");
}
}
@ -244,7 +241,13 @@ public class GuiTeleporter extends GuiMekanism
}
else if(guibutton.id == 2)
{
setFrequency();
int selection = scrollList.getSelection();
if(selection != -1)
{
Frequency freq = privateMode ? tileEntity.privateCache.get(selection) : tileEntity.publicCache.get(selection);
setFrequency(freq.name);
}
}
else if(guibutton.id == 3)
{
@ -281,7 +284,7 @@ public class GuiTeleporter extends GuiMekanism
fontRendererObj.drawString(MekanismUtils.localize("gui.security") + ":", 32, 91, 0x404040);
fontRendererObj.drawString(" " + (tileEntity.frequency != null ? tileEntity.frequency.name : EnumColor.DARK_RED + MekanismUtils.localize("gui.none")), 32 + fontRendererObj.getStringWidth(MekanismUtils.localize("gui.freq") + ":"), 81, 0x797979);
fontRendererObj.drawString(" " + getSecurity(), 32 + fontRendererObj.getStringWidth(MekanismUtils.localize("gui.security") + ":"), 91, 0x797979);
fontRendererObj.drawString(" " + (tileEntity.frequency != null ? getSecurity(tileEntity.frequency) : EnumColor.DARK_RED + MekanismUtils.localize("gui.none")), 32 + fontRendererObj.getStringWidth(MekanismUtils.localize("gui.security") + ":"), 91, 0x797979);
String str = MekanismUtils.localize("gui.set") + ":";
renderScaledText(str, 27, 104, 0x404040, 20);

View file

@ -56,8 +56,6 @@ public class GuiScrollList extends GuiElement
public void setText(List<String> text)
{
scroll = 0;
if(text == null)
{
textEntries.clear();
@ -70,6 +68,11 @@ public class GuiScrollList extends GuiElement
}
textEntries = text;
if(textEntries.size()<=size)
{
scroll = 0;
}
}
@Override

View file

@ -2,9 +2,9 @@ package mekanism.common.frequency;
import io.netty.buffer.ByteBuf;
import java.lang.reflect.Constructor;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import mekanism.api.Coord4D;
@ -58,6 +58,8 @@ public class FrequencyManager
if(freq.equals(iterFreq))
{
iterFreq.activeCoords.add(coord);
dataHandler.markDirty();
return iterFreq;
}
}
@ -70,6 +72,7 @@ public class FrequencyManager
for(Frequency freq : frequencies)
{
freq.activeCoords.remove(coord);
dataHandler.markDirty();
}
}
@ -80,6 +83,8 @@ public class FrequencyManager
if(freq.equals(iterFreq))
{
iterFreq.activeCoords.add(coord);
dataHandler.markDirty();
return iterFreq;
}
}
@ -88,6 +93,8 @@ public class FrequencyManager
{
freq.activeCoords.add(coord);
frequencies.add(freq);
dataHandler.markDirty();
return freq;
}
@ -96,15 +103,17 @@ public class FrequencyManager
public void createOrLoad(World world)
{
if(dataHandler == null)
{
dataHandler = (FrequencyDataHandler)world.perWorldStorage.loadData(FrequencyDataHandler.class, getName());
String name = getName();
if(dataHandler == null)
{
dataHandler = new FrequencyDataHandler(getName());
dataHandler = (FrequencyDataHandler)world.perWorldStorage.loadData(FrequencyDataHandler.class, name);
if(dataHandler == null)
{
dataHandler = new FrequencyDataHandler(name);
dataHandler.setManager(this);
world.perWorldStorage.setData(getName(), dataHandler);
world.perWorldStorage.setData(name, dataHandler);
}
else {
dataHandler.setManager(this);
@ -121,6 +130,7 @@ public class FrequencyManager
public void addFrequency(Frequency freq)
{
frequencies.add(freq);
dataHandler.markDirty();
}
public boolean containsFrequency(Frequency freq)
@ -178,6 +188,7 @@ public class FrequencyManager
public FrequencyManager manager;
public Set<Frequency> loadedFrequencies;
public String loadedOwner;
public FrequencyDataHandler(String tagName)
{
@ -194,6 +205,7 @@ public class FrequencyManager
if(loadedFrequencies != null)
{
manager.frequencies = loadedFrequencies;
manager.owner = loadedOwner;
}
}
@ -205,10 +217,10 @@ public class FrequencyManager
if(nbtTags.hasKey("owner"))
{
manager.owner = nbtTags.getString("owner");
loadedOwner = nbtTags.getString("owner");
}
NBTTagList list = nbtTags.getTagList("invList", NBT.TAG_COMPOUND);
NBTTagList list = nbtTags.getTagList("freqList", NBT.TAG_COMPOUND);
loadedFrequencies = new HashSet<Frequency>();
@ -216,8 +228,8 @@ public class FrequencyManager
{
NBTTagCompound compound = list.getCompoundTagAt(i);
Frequency freq = (Frequency)Class.forName(frequencyClass).newInstance();
freq.read(compound);
Constructor c = Class.forName(frequencyClass).getConstructor(new Class[] {NBTTagCompound.class});
Frequency freq = (Frequency)c.newInstance(compound);
loadedFrequencies.add(freq);
}

View file

@ -91,6 +91,7 @@ public class TileEntityTeleporter extends TileEntityElectricBlock implements IPe
if(frequency != null && !frequency.valid)
{
frequency = manager.validateFrequency(owner, Coord4D.get(this), frequency);
System.out.println(frequency);
}
frequency = manager.update(owner, Coord4D.get(this), frequency);
@ -128,17 +129,19 @@ public class TileEntityTeleporter extends TileEntityElectricBlock implements IPe
public void setFrequency(String name, boolean publicFreq)
{
if(name.equals(frequency))
{
return;
}
FrequencyManager manager = getManager(new Frequency(name, null).setPublic(publicFreq));
for(Frequency freq : manager.getFrequencies())
{
if(freq.equals(frequency))
{
return;
}
else if(freq.name.equals(name))
if(freq.name.equals(name))
{
frequency = freq;
frequency.activeCoords.add(Coord4D.get(this));
return;
}
}
@ -146,8 +149,9 @@ public class TileEntityTeleporter extends TileEntityElectricBlock implements IPe
Frequency freq = new Frequency(name, owner).setPublic(publicFreq);
freq.activeCoords.add(Coord4D.get(this));
manager.addFrequency(freq);
frequency = freq;
MekanismUtils.saveChunk(this);
}
public FrequencyManager getManager(Frequency freq)
@ -485,7 +489,7 @@ public class TileEntityTeleporter extends TileEntityElectricBlock implements IPe
if(nbtTags.hasKey("frequency"))
{
frequency = new Frequency(nbtTags);
frequency = new Frequency(nbtTags.getCompoundTag("frequency"));
frequency.valid = false;
}
}
@ -502,7 +506,9 @@ public class TileEntityTeleporter extends TileEntityElectricBlock implements IPe
if(frequency != null)
{
frequency.write(nbtTags);
NBTTagCompound frequencyTag = new NBTTagCompound();
frequency.write(frequencyTag);
nbtTags.setTag("frequency", frequencyTag);
}
}