mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-17 19:28:01 +00:00
Support displaying planeswalker token
This commit is contained in:
@@ -1,6 +1,12 @@
|
|||||||
package forge.screens.planarconquest;
|
package forge.screens.planarconquest;
|
||||||
|
|
||||||
|
import com.badlogic.gdx.graphics.g2d.BitmapFont.HAlignment;
|
||||||
|
import com.badlogic.gdx.math.Vector2;
|
||||||
|
|
||||||
import forge.FThreads;
|
import forge.FThreads;
|
||||||
|
import forge.achievement.PlaneswalkerAchievements;
|
||||||
|
import forge.assets.FImage;
|
||||||
|
import forge.card.CardZoom;
|
||||||
import forge.item.PaperCard;
|
import forge.item.PaperCard;
|
||||||
import forge.model.FModel;
|
import forge.model.FModel;
|
||||||
import forge.planarconquest.ConquestController;
|
import forge.planarconquest.ConquestController;
|
||||||
@@ -13,6 +19,7 @@ import forge.screens.MultiStepWizardScreen;
|
|||||||
import forge.screens.home.NewGameMenu;
|
import forge.screens.home.NewGameMenu;
|
||||||
import forge.screens.planarconquest.ConquestMenu.LaunchReason;
|
import forge.screens.planarconquest.ConquestMenu.LaunchReason;
|
||||||
import forge.toolbox.FChoiceList;
|
import forge.toolbox.FChoiceList;
|
||||||
|
import forge.toolbox.FLabel;
|
||||||
import forge.toolbox.FOptionPane;
|
import forge.toolbox.FOptionPane;
|
||||||
import forge.util.ThreadUtil;
|
import forge.util.ThreadUtil;
|
||||||
|
|
||||||
@@ -68,11 +75,23 @@ public class NewConquestScreen extends MultiStepWizardScreen<NewConquestScreenMo
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static class SelectPlaneswalkerStep extends WizardStep<NewConquestScreenModel> {
|
private static class SelectPlaneswalkerStep extends WizardStep<NewConquestScreenModel> {
|
||||||
|
private final TokenDisplay tokenDisplay = add(new TokenDisplay());
|
||||||
private final FChoiceList<PaperCard> lstPlaneswalkers = add(new FChoiceList<PaperCard>(ConquestUtil.getAllPlaneswalkers()) {
|
private final FChoiceList<PaperCard> lstPlaneswalkers = add(new FChoiceList<PaperCard>(ConquestUtil.getAllPlaneswalkers()) {
|
||||||
@Override
|
@Override
|
||||||
protected void onItemActivate(Integer index, PaperCard value) {
|
protected void onItemActivate(Integer index, PaperCard value) {
|
||||||
advance();
|
advance();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onSelectionChange() {
|
||||||
|
PaperCard planeswalker = getSelectedItem();
|
||||||
|
if (planeswalker != null) {
|
||||||
|
tokenDisplay.setIcon((FImage)PlaneswalkerAchievements.getTrophyImage(planeswalker.getName()));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
tokenDisplay.setIcon(null);
|
||||||
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
protected SelectPlaneswalkerStep() {
|
protected SelectPlaneswalkerStep() {
|
||||||
@@ -81,7 +100,12 @@ public class NewConquestScreen extends MultiStepWizardScreen<NewConquestScreenMo
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void doLayout(float width, float height) {
|
protected void doLayout(float width, float height) {
|
||||||
lstPlaneswalkers.setBounds(PADDING, PADDING, width - 2 * PADDING, height - 2 * PADDING);
|
float x = PADDING;
|
||||||
|
float y = PADDING;
|
||||||
|
float w = width - 2 * PADDING;
|
||||||
|
tokenDisplay.setBounds(x, y, w, height * 0.5f);
|
||||||
|
y += tokenDisplay.getHeight() + PADDING;
|
||||||
|
lstPlaneswalkers.setBounds(x, y, w, height - y - PADDING);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -100,6 +124,45 @@ public class NewConquestScreen extends MultiStepWizardScreen<NewConquestScreenMo
|
|||||||
model.planeswalker = lstPlaneswalkers.getSelectedItem();
|
model.planeswalker = lstPlaneswalkers.getSelectedItem();
|
||||||
return model.planeswalker != null;
|
return model.planeswalker != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private class TokenDisplay extends FLabel {
|
||||||
|
protected TokenDisplay() {
|
||||||
|
super(new FLabel.Builder().iconScaleFactor(1).insets(new Vector2(0, 0))
|
||||||
|
.iconInBackground(true).align(HAlignment.CENTER));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean tap(float x, float y, int count) {
|
||||||
|
return zoom();
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public boolean longPress(float x, float y) {
|
||||||
|
return zoom();
|
||||||
|
}
|
||||||
|
private boolean zoom() {
|
||||||
|
int index = lstPlaneswalkers.getSelectedIndex();
|
||||||
|
if (index == -1) { return false; }
|
||||||
|
CardZoom.show(lstPlaneswalkers.extractListData(), index, lstPlaneswalkers);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean fling(float velocityX, float velocityY) {
|
||||||
|
if (Math.abs(velocityX) > Math.abs(velocityY)) {
|
||||||
|
int selectedIndex = lstPlaneswalkers.getSelectedIndex();
|
||||||
|
if (velocityX > 0) {
|
||||||
|
if (selectedIndex > 0) {
|
||||||
|
lstPlaneswalkers.setSelectedIndex(selectedIndex - 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (selectedIndex < lstPlaneswalkers.getCount() - 1) {
|
||||||
|
lstPlaneswalkers.setSelectedIndex(selectedIndex + 1);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static class SelectStartingPlaneStep extends WizardStep<NewConquestScreenModel> {
|
private static class SelectStartingPlaneStep extends WizardStep<NewConquestScreenModel> {
|
||||||
|
|||||||
Reference in New Issue
Block a user