Fix dev menu options to run in game thread so they don't cause crash

This commit is contained in:
drdev
2014-04-14 19:53:48 +00:00
parent b41bafd584
commit 3c7b8efb72

View File

@@ -11,6 +11,7 @@ import forge.screens.match.FControl;
import forge.toolbox.FEvent; import forge.toolbox.FEvent;
import forge.toolbox.FEvent.FEventHandler; import forge.toolbox.FEvent.FEventHandler;
import forge.util.GuiDisplayUtil; import forge.util.GuiDisplayUtil;
import forge.util.ThreadUtil;
public class VDevMenu extends FDropDownMenu { public class VDevMenu extends FDropDownMenu {
@Override @Override
@@ -18,37 +19,67 @@ public class VDevMenu extends FDropDownMenu {
addItem(new FMenuItem("Generate Mana", new FEventHandler() { addItem(new FMenuItem("Generate Mana", new FEventHandler() {
@Override @Override
public void handleEvent(FEvent e) { public void handleEvent(FEvent e) {
GuiDisplayUtil.devModeGenerateMana(); ThreadUtil.invokeInGameThread(new Runnable() { //must invoke all these in game thread since they may require synchronous user input
@Override
public void run() {
GuiDisplayUtil.devModeGenerateMana();
}
});
} }
})); }));
addItem(new FMenuItem("Tutor for Card", new FEventHandler() { addItem(new FMenuItem("Tutor for Card", new FEventHandler() {
@Override @Override
public void handleEvent(FEvent e) { public void handleEvent(FEvent e) {
GuiDisplayUtil.devModeTutor(); ThreadUtil.invokeInGameThread(new Runnable() {
@Override
public void run() {
GuiDisplayUtil.devModeTutor();
}
});
} }
})); }));
addItem(new FMenuItem("Add card to hand", new FEventHandler() { addItem(new FMenuItem("Add card to hand", new FEventHandler() {
@Override @Override
public void handleEvent(FEvent e) { public void handleEvent(FEvent e) {
GuiDisplayUtil.devModeCardToHand(); ThreadUtil.invokeInGameThread(new Runnable() {
@Override
public void run() {
GuiDisplayUtil.devModeCardToHand();
}
});
} }
})); }));
addItem(new FMenuItem("Add card to play", new FEventHandler() { addItem(new FMenuItem("Add card to play", new FEventHandler() {
@Override @Override
public void handleEvent(FEvent e) { public void handleEvent(FEvent e) {
GuiDisplayUtil.devModeCardToBattlefield(); ThreadUtil.invokeInGameThread(new Runnable() {
@Override
public void run() {
GuiDisplayUtil.devModeCardToBattlefield();
}
});
} }
})); }));
addItem(new FMenuItem("Set Player Life", new FEventHandler() { addItem(new FMenuItem("Set Player Life", new FEventHandler() {
@Override @Override
public void handleEvent(FEvent e) { public void handleEvent(FEvent e) {
GuiDisplayUtil.devModeSetLife(); ThreadUtil.invokeInGameThread(new Runnable() {
@Override
public void run() {
GuiDisplayUtil.devModeSetLife();
}
});
} }
})); }));
addItem(new FMenuItem("Setup Game State", new FEventHandler() { addItem(new FMenuItem("Setup Game State", new FEventHandler() {
@Override @Override
public void handleEvent(FEvent e) { public void handleEvent(FEvent e) {
GuiDisplayUtil.devSetupGameState(); ThreadUtil.invokeInGameThread(new Runnable() {
@Override
public void run() {
GuiDisplayUtil.devSetupGameState();
}
});
} }
})); }));
@@ -72,31 +103,56 @@ public class VDevMenu extends FDropDownMenu {
addItem(new FMenuItem("Add Counter to Permanent", new FEventHandler() { addItem(new FMenuItem("Add Counter to Permanent", new FEventHandler() {
@Override @Override
public void handleEvent(FEvent e) { public void handleEvent(FEvent e) {
GuiDisplayUtil.devModeAddCounter(); ThreadUtil.invokeInGameThread(new Runnable() {
@Override
public void run() {
GuiDisplayUtil.devModeAddCounter();
}
});
} }
})); }));
addItem(new FMenuItem("Tap Permanent", new FEventHandler() { addItem(new FMenuItem("Tap Permanent", new FEventHandler() {
@Override @Override
public void handleEvent(FEvent e) { public void handleEvent(FEvent e) {
GuiDisplayUtil.devModeTapPerm(); ThreadUtil.invokeInGameThread(new Runnable() {
@Override
public void run() {
GuiDisplayUtil.devModeTapPerm();
}
});
} }
})); }));
addItem(new FMenuItem("Untap Permanent", new FEventHandler() { addItem(new FMenuItem("Untap Permanent", new FEventHandler() {
@Override @Override
public void handleEvent(FEvent e) { public void handleEvent(FEvent e) {
GuiDisplayUtil.devModeUntapPerm(); ThreadUtil.invokeInGameThread(new Runnable() {
@Override
public void run() {
GuiDisplayUtil.devModeUntapPerm();
}
});
} }
})); }));
addItem(new FMenuItem("Rigged planar roll", new FEventHandler() { addItem(new FMenuItem("Rigged planar roll", new FEventHandler() {
@Override @Override
public void handleEvent(FEvent e) { public void handleEvent(FEvent e) {
GuiDisplayUtil.devModeRiggedPlanarRoll(); ThreadUtil.invokeInGameThread(new Runnable() {
@Override
public void run() {
GuiDisplayUtil.devModeRiggedPlanarRoll();
}
});
} }
})); }));
addItem(new FMenuItem("Planeswalk to", new FEventHandler() { addItem(new FMenuItem("Planeswalk to", new FEventHandler() {
@Override @Override
public void handleEvent(FEvent e) { public void handleEvent(FEvent e) {
GuiDisplayUtil.devModePlaneswalkTo(); ThreadUtil.invokeInGameThread(new Runnable() {
@Override
public void run() {
GuiDisplayUtil.devModePlaneswalkTo();
}
});
} }
})); }));
} }