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); buttonList.add(deleteButton);
} }
public void setFrequency() public void setFrequency(String freq)
{ {
String text = frequencyField.getText(); if(freq.isEmpty())
if(text.isEmpty())
{ {
return; return;
} }
ArrayList data = new ArrayList(); ArrayList data = new ArrayList();
data.add(0); data.add(0);
data.add(text); data.add(freq);
data.add(!privateMode); data.add(!privateMode);
Mekanism.packetHandler.sendToServer(new TileEntityMessage(Coord4D.get(tileEntity), data)); 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() public void updateButtons()
@ -118,6 +114,24 @@ public class GuiTeleporter extends GuiMekanism
return; 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) if(privateMode)
{ {
publicButton.enabled = true; publicButton.enabled = true;
@ -161,24 +175,6 @@ public class GuiTeleporter extends GuiMekanism
updateButtons(); 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(); frequencyField.updateCursorCounter();
} }
@ -198,7 +194,7 @@ public class GuiTeleporter extends GuiMekanism
if(xAxis >= 137 && xAxis <= 148 && yAxis >= 103 && yAxis <= 114) if(xAxis >= 137 && xAxis <= 148 && yAxis >= 103 && yAxis <= 114)
{ {
setFrequency(); setFrequency(frequencyField.getText());
frequencyField.setText(""); frequencyField.setText("");
SoundHandler.playSound("gui.button.press"); SoundHandler.playSound("gui.button.press");
} }
@ -217,7 +213,8 @@ public class GuiTeleporter extends GuiMekanism
{ {
if(frequencyField.isFocused()) if(frequencyField.isFocused())
{ {
setFrequency(); setFrequency(frequencyField.getText());
frequencyField.setText("");
} }
} }
@ -244,7 +241,13 @@ public class GuiTeleporter extends GuiMekanism
} }
else if(guibutton.id == 2) 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) 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(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(" " + (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") + ":"; String str = MekanismUtils.localize("gui.set") + ":";
renderScaledText(str, 27, 104, 0x404040, 20); renderScaledText(str, 27, 104, 0x404040, 20);

View file

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

View file

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

View file

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