initial AdventureMode port

- todo needed adventure application startup upon pressing the adventure mode button
This commit is contained in:
Anthony Calosa
2022-02-06 11:10:52 +08:00
parent 5c3aeb508e
commit 3c6af87e9d
97 changed files with 266 additions and 101 deletions

View File

@@ -1,26 +0,0 @@
package forge.adventure.scene;
/**
* Enum of all scenes
*/
public enum SceneType {
StartScene(new forge.adventure.scene.StartScene()),
NewGameScene(new forge.adventure.scene.NewGameScene()),
SettingsScene(new forge.adventure.scene.SettingsScene()),
GameScene(new forge.adventure.scene.GameScene()),
DuelScene(new forge.adventure.scene.DuelScene()),
SaveLoadScene(new forge.adventure.scene.SaveLoadScene()),
DeckEditScene(new forge.adventure.scene.DeckEditScene()),
TileMapScene(new forge.adventure.scene.TileMapScene()),
RewardScene(new forge.adventure.scene.RewardScene()),
InnScene(new forge.adventure.scene.InnScene()),
DeckSelectScene(new forge.adventure.scene.DeckSelectScene()),
ShopScene(new forge.adventure.scene.ShopScene()),
PlayerStatisticScene(new forge.adventure.scene.PlayerStatisticScene());
public final forge.adventure.scene.Scene instance;
SceneType(forge.adventure.scene.Scene scene) {
this.instance = scene;
}
}

View File

@@ -22,6 +22,7 @@ public class Localizer {
private Locale locale;
private ResourceBundle resourceBundle;
private boolean silent = false;
public static Localizer getInstance() {
if (instance == null) {
@@ -60,7 +61,11 @@ public class Localizer {
public String getMessageorUseDefault(final String key, final String defaultValue, final Object... messageArguments) {
try {
return getMessage(key, messageArguments);
silent = true;
String value = getMessage(key, messageArguments);
if (value.contains("INVALID PROPERTY:"))
return defaultValue;
return value;
} catch (Exception e) {
return defaultValue;
}
@@ -73,14 +78,17 @@ public class Localizer {
//formatter = new MessageFormat(resourceBundle.getString(key.toLowerCase()), locale);
formatter = new MessageFormat(resourceBundle.getString(key), locale);
} catch (final IllegalArgumentException | MissingResourceException e) {
if (!silent)
e.printStackTrace();
}
if (formatter == null) {
if (formatter == null && !silent) {
System.err.println("INVALID PROPERTY: '" + key + "' -- Translation Needed?");
return "INVALID PROPERTY: '" + key + "' -- Translation Needed?";
}
silent = false;
formatter.setLocale(locale);
String formattedMessage = "CHAR ENCODING ERROR";

View File

@@ -6,6 +6,7 @@ import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Input.Keys;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.utils.Clipboard;
import forge.adventure.AdventureApplicationAdapter;
import forge.animation.ForgeAnimation;
import forge.assets.AssetsDownloader;
import forge.assets.FSkin;
@@ -71,6 +72,7 @@ public class Forge implements ApplicationListener {
public static boolean isPortraitMode = false;
public static boolean gameInProgress = false;
public static boolean disposeTextures = false;
public static boolean isAdventureMode = false;
public static int cacheSize = 400;
public static int totalDeviceRAM = 0;
public static int androidVersion = 0;
@@ -252,7 +254,19 @@ public class Forge implements ApplicationListener {
/*for (FScreen fScreen : Dscreens)
System.out.println(fScreen.toString());*/
}
public static void openHomeDefault() {
openHomeScreen(-1, null); //default for startup
splashScreen = null;
if (isLandscapeMode()) { //open preferred new game screen by default if landscape mode
NewGameMenu.getPreferredScreen().open();
}
}
public static void openAdventure() {
splashScreen = null;
isAdventureMode = true;
//how to insert adventure startup / adapter here??
}
protected void afterDbLoaded() {
stopContinuousRendering(); //save power consumption by disabling continuous rendering once assets loaded
@@ -261,14 +275,11 @@ public class Forge implements ApplicationListener {
SoundSystem.instance.setBackgroundMusic(MusicPlaylist.MENUS); //start background music
destroyThis = false; //Allow back()
Gdx.input.setCatchKey(Keys.MENU, true);
openHomeScreen(-1, null); //default for startup
splashScreen = null;
afterDBloaded = true;
splashScreen.setShowModeSelector(true);
boolean isLandscapeMode = isLandscapeMode();
if (isLandscapeMode) { //open preferred new game screen by default if landscape mode
NewGameMenu.getPreferredScreen().open();
}
//adjust height modifier
adjustHeightModifier(getScreenWidth(), getScreenHeight());
@@ -534,7 +545,7 @@ public class Forge implements ApplicationListener {
graphics.begin(screenWidth, screenHeight);
screen.screenPos.setSize(screenWidth, screenHeight);
if (screen.getRotate180()) {
graphics.startRotateTransform(screenWidth / 2, screenHeight / 2, 180);
graphics.startRotateTransform(screenWidth / 2f, screenHeight / 2f, 180);
}
screen.draw(graphics);
if (screen.getRotate180()) {
@@ -545,7 +556,7 @@ public class Forge implements ApplicationListener {
overlay.screenPos.setSize(screenWidth, screenHeight);
overlay.setSize(screenWidth, screenHeight); //update overlay sizes as they're rendered
if (overlay.getRotate180()) {
graphics.startRotateTransform(screenWidth / 2, screenHeight / 2, 180);
graphics.startRotateTransform(screenWidth / 2f, screenHeight / 2f, 180);
}
overlay.draw(graphics);
if (overlay.getRotate180()) {
@@ -770,6 +781,9 @@ public class Forge implements ApplicationListener {
if (currentScreen != null) {
currentScreen.buildTouchListeners(x, y, potentialListeners);
}
if (splashScreen != null) {
splashScreen.buildTouchListeners(x, y, potentialListeners);
}
}
@Override

View File

@@ -1,6 +1,10 @@
package forge.adventure.character;
import com.badlogic.gdx.graphics.g2d.*;
import com.badlogic.gdx.graphics.g2d.Animation;
import com.badlogic.gdx.graphics.g2d.Batch;
import com.badlogic.gdx.graphics.g2d.Sprite;
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
import com.badlogic.gdx.math.Vector2;
import com.badlogic.gdx.scenes.scene2d.Actor;
import com.badlogic.gdx.utils.Array;

View File

@@ -1,10 +1,10 @@
package forge.adventure.character;
import com.badlogic.gdx.math.Vector2;
import forge.adventure.player.AdventurePlayer;
import forge.adventure.stage.GameStage;
import forge.adventure.util.Config;
import forge.adventure.util.Current;
import forge.adventure.player.AdventurePlayer;
/**
* Class that will represent the player sprite on the map

View File

@@ -55,7 +55,7 @@ public class RewardsEditor extends JComponent{
public RewardsEditor()
{
list.setCellRenderer(new RewardsEditor.RewardDataRenderer());
list.setCellRenderer(new RewardDataRenderer());
list.addListSelectionListener(e -> updateEdit());
addButton("add",e->addReward());
addButton("remove",e->remove());

View File

@@ -5,7 +5,12 @@ import com.badlogic.gdx.graphics.g2d.TextureRegion;
import com.google.common.collect.Lists;
import forge.adventure.data.DifficultyData;
import forge.adventure.data.HeroListData;
import forge.adventure.util.*;
import forge.adventure.util.CardUtil;
import forge.adventure.util.Config;
import forge.adventure.util.Reward;
import forge.adventure.util.SaveFileContent;
import forge.adventure.util.SaveFileData;
import forge.adventure.util.SignalList;
import forge.adventure.world.WorldSave;
import forge.deck.CardPool;
import forge.deck.Deck;

View File

@@ -10,11 +10,19 @@ import forge.adventure.player.AdventurePlayer;
import forge.assets.FImage;
import forge.assets.FSkinFont;
import forge.assets.FSkinImage;
import forge.deck.*;
import forge.deck.CardPool;
import forge.deck.Deck;
import forge.deck.DeckFormat;
import forge.deck.DeckSection;
import forge.deck.FDeckViewer;
import forge.gui.FThreads;
import forge.item.InventoryItem;
import forge.item.PaperCard;
import forge.itemmanager.*;
import forge.itemmanager.CardManager;
import forge.itemmanager.ColumnDef;
import forge.itemmanager.ItemColumn;
import forge.itemmanager.ItemManager;
import forge.itemmanager.ItemManagerConfig;
import forge.itemmanager.filters.ItemFilter;
import forge.localinstance.properties.ForgePreferences;
import forge.menu.FCheckBoxMenuItem;
@@ -25,7 +33,10 @@ import forge.model.FModel;
import forge.screens.FScreen;
import forge.screens.LoadingOverlay;
import forge.screens.TabPageScreen;
import forge.toolbox.*;
import forge.toolbox.FContainer;
import forge.toolbox.FEvent;
import forge.toolbox.FLabel;
import forge.toolbox.GuiChoose;
import forge.util.Callback;
import forge.util.ItemPool;
import forge.util.Localizer;
@@ -69,24 +80,24 @@ import java.util.Map;
((CardManagerPage)page).refresh();
}
for (TabPage<AdventureDeckEditor> tabPage : tabPages) {
((AdventureDeckEditor.DeckEditorPage)tabPage).initialize();
((DeckEditorPage)tabPage).initialize();
}
}
private static AdventureDeckEditor.DeckEditorPage[] getPages() {
private static DeckEditorPage[] getPages() {
final Localizer localizer = Localizer.getInstance();
return new AdventureDeckEditor.DeckEditorPage[] {
new AdventureDeckEditor.CatalogPage(ItemManagerConfig.QUEST_EDITOR_POOL, localizer.getMessage("lblInventory"), FSkinImage.QUEST_BOX),
new AdventureDeckEditor.DeckSectionPage(DeckSection.Main, ItemManagerConfig.QUEST_DECK_EDITOR),
new AdventureDeckEditor.DeckSectionPage(DeckSection.Sideboard, ItemManagerConfig.QUEST_DECK_EDITOR)
return new DeckEditorPage[] {
new CatalogPage(ItemManagerConfig.QUEST_EDITOR_POOL, localizer.getMessage("lblInventory"), FSkinImage.QUEST_BOX),
new DeckSectionPage(DeckSection.Main, ItemManagerConfig.QUEST_DECK_EDITOR),
new DeckSectionPage(DeckSection.Sideboard, ItemManagerConfig.QUEST_DECK_EDITOR)
};
}
private AdventureDeckEditor.CatalogPage catalogPage;
private AdventureDeckEditor.DeckSectionPage mainDeckPage;
private AdventureDeckEditor.DeckSectionPage sideboardPage;
private AdventureDeckEditor.DeckSectionPage commanderPage;
private CatalogPage catalogPage;
private DeckSectionPage mainDeckPage;
private DeckSectionPage sideboardPage;
private DeckSectionPage commanderPage;
protected final AdventureDeckEditor.DeckHeader deckHeader = add(new AdventureDeckEditor.DeckHeader());
protected final DeckHeader deckHeader = add(new DeckHeader());
protected final FLabel lblName = deckHeader.add(new FLabel.Builder().font(FSkinFont.get(16)).insets(new Vector2(Utils.scale(5), 0)).build());
private final FLabel btnMoreOptions = deckHeader.add(new FLabel.Builder().text("...").font(FSkinFont.get(20)).align(Align.center).pressedColor(Header.BTN_PRESSED_COLOR).build());
@@ -99,11 +110,11 @@ import java.util.Map;
//cache specific pages
for (TabPage<AdventureDeckEditor> tabPage : tabPages) {
if (tabPage instanceof AdventureDeckEditor.CatalogPage) {
catalogPage = (AdventureDeckEditor.CatalogPage) tabPage;
if (tabPage instanceof CatalogPage) {
catalogPage = (CatalogPage) tabPage;
}
else if (tabPage instanceof AdventureDeckEditor.DeckSectionPage) {
AdventureDeckEditor.DeckSectionPage deckSectionPage = (AdventureDeckEditor.DeckSectionPage) tabPage;
else if (tabPage instanceof DeckSectionPage) {
DeckSectionPage deckSectionPage = (DeckSectionPage) tabPage;
switch (deckSectionPage.deckSection) {
case Main:
case Schemes:
@@ -131,7 +142,7 @@ import java.util.Map;
final Localizer localizer = Localizer.getInstance();
addItem(new FMenuItem(localizer.getMessage("btnCopyToClipboard"), Forge.hdbuttons ? FSkinImage.HDEXPORT : FSkinImage.BLANK, e1 -> FDeckViewer.copyDeckToClipboard(getDeck())));
((AdventureDeckEditor.DeckEditorPage)getSelectedPage()).buildDeckMenu(this);
((DeckEditorPage)getSelectedPage()).buildDeckMenu(this);
}
};
menu.show(btnMoreOptions, 0, btnMoreOptions.getHeight());
@@ -149,19 +160,19 @@ import java.util.Map;
public Deck getDeck() {
return AdventurePlayer.current().getSelectedDeck();
}
protected AdventureDeckEditor.CatalogPage getCatalogPage() {
protected CatalogPage getCatalogPage() {
return catalogPage;
}
protected AdventureDeckEditor.DeckSectionPage getMainDeckPage() {
protected DeckSectionPage getMainDeckPage() {
return mainDeckPage;
}
protected AdventureDeckEditor.DeckSectionPage getSideboardPage() {
protected DeckSectionPage getSideboardPage() {
return sideboardPage;
}
protected AdventureDeckEditor.DeckSectionPage getCommanderPage() {
protected DeckSectionPage getCommanderPage() {
return commanderPage;
}
@@ -222,7 +233,7 @@ import java.util.Map;
}
}
protected static abstract class CardManagerPage extends AdventureDeckEditor.DeckEditorPage {
protected static abstract class CardManagerPage extends DeckEditorPage {
private final ItemManagerConfig config;
protected final CardManager cardManager = add(new CardManager(false));
@@ -233,7 +244,7 @@ import java.util.Map;
cardManager.setContextMenuBuilder(new ItemManager.ContextMenuBuilder<PaperCard>() {
@Override
public void buildMenu(final FDropDownMenu menu, final PaperCard card) {
AdventureDeckEditor.CardManagerPage.this.buildMenu(menu, card);
CardManagerPage.this.buildMenu(menu, card);
}
});
}
@@ -488,7 +499,7 @@ import java.util.Map;
}
}
protected static class CatalogPage extends AdventureDeckEditor.CardManagerPage {
protected static class CatalogPage extends CardManagerPage {
private boolean initialized, needRefreshWhenShown;
protected CatalogPage(ItemManagerConfig config, String caption0, FImage icon0) {
@@ -631,7 +642,7 @@ import java.util.Map;
}
}
protected static class DeckSectionPage extends AdventureDeckEditor.CardManagerPage {
protected static class DeckSectionPage extends CardManagerPage {
private final String captionPrefix;
private final DeckSection deckSection;

View File

@@ -3,14 +3,19 @@ package forge.adventure.scene;
import com.badlogic.gdx.Input;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.scenes.scene2d.InputEvent;
import com.badlogic.gdx.scenes.scene2d.ui.*;
import com.badlogic.gdx.scenes.scene2d.ui.Dialog;
import com.badlogic.gdx.scenes.scene2d.ui.Label;
import com.badlogic.gdx.scenes.scene2d.ui.ScrollPane;
import com.badlogic.gdx.scenes.scene2d.ui.Table;
import com.badlogic.gdx.scenes.scene2d.ui.TextButton;
import com.badlogic.gdx.scenes.scene2d.ui.TextField;
import com.badlogic.gdx.scenes.scene2d.utils.ClickListener;
import com.badlogic.gdx.utils.Align;
import com.badlogic.gdx.utils.IntMap;
import forge.adventure.AdventureApplicationAdapter;
import forge.adventure.player.AdventurePlayer;
import forge.adventure.util.Controls;
import forge.adventure.util.Current;
import forge.adventure.player.AdventurePlayer;
public class DeckSelectScene extends UIScene {
private final IntMap<TextButton> buttons = new IntMap<>();

View File

@@ -5,9 +5,9 @@ import forge.LobbyPlayer;
import forge.adventure.AdventureApplicationAdapter;
import forge.adventure.character.EnemySprite;
import forge.adventure.character.PlayerSprite;
import forge.adventure.player.AdventurePlayer;
import forge.adventure.util.Config;
import forge.adventure.util.Current;
import forge.adventure.player.AdventurePlayer;
import forge.assets.FSkin;
import forge.deck.Deck;
import forge.game.GameRules;
@@ -24,7 +24,12 @@ import forge.sound.MusicPlaylist;
import forge.sound.SoundSystem;
import forge.trackable.TrackableCollection;
import java.util.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* DuelScene

View File

@@ -2,13 +2,13 @@ package forge.adventure.scene;
import com.badlogic.gdx.Input;
import forge.Forge;
import forge.gui.error.BugReporter;
import forge.screens.match.MatchController;
import forge.toolbox.FContainer;
import forge.toolbox.FDisplayObject;
import forge.toolbox.FGestureAdapter;
import forge.toolbox.FOverlay;
import forge.util.Utils;
import forge.gui.error.BugReporter;
import java.util.ArrayList;
import java.util.List;

View File

@@ -2,16 +2,16 @@ package forge.adventure.scene;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL20;
import forge.adventure.AdventureApplicationAdapter;
import forge.Forge;
import forge.Graphics;
import forge.adventure.AdventureApplicationAdapter;
import forge.animation.ForgeAnimation;
import forge.assets.ImageCache;
import forge.gamemodes.match.LobbySlotType;
import forge.interfaces.IUpdateable;
import forge.screens.FScreen;
import forge.toolbox.FDisplayObject;
import forge.toolbox.FOverlay;
import forge.gamemodes.match.LobbySlotType;
import forge.interfaces.IUpdateable;
import java.util.List;

View File

@@ -9,14 +9,14 @@ import com.badlogic.gdx.scenes.scene2d.utils.ClickListener;
import com.badlogic.gdx.utils.Array;
import forge.adventure.AdventureApplicationAdapter;
import forge.adventure.character.ShopActor;
import forge.assets.ImageCache;
import forge.adventure.player.AdventurePlayer;
import forge.adventure.pointofintrest.PointOfInterestChanges;
import forge.adventure.util.CardUtil;
import forge.adventure.util.Current;
import forge.adventure.util.Reward;
import forge.adventure.util.RewardActor;
import forge.adventure.player.AdventurePlayer;
import forge.adventure.pointofintrest.PointOfInterestChanges;
import forge.adventure.world.WorldSave;
import forge.assets.ImageCache;
/**
* Displays the rewards of a fight or a treasure

View File

@@ -4,7 +4,13 @@ import com.badlogic.gdx.Input;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.scenes.scene2d.InputEvent;
import com.badlogic.gdx.scenes.scene2d.ui.*;
import com.badlogic.gdx.scenes.scene2d.ui.Dialog;
import com.badlogic.gdx.scenes.scene2d.ui.Image;
import com.badlogic.gdx.scenes.scene2d.ui.Label;
import com.badlogic.gdx.scenes.scene2d.ui.ScrollPane;
import com.badlogic.gdx.scenes.scene2d.ui.Table;
import com.badlogic.gdx.scenes.scene2d.ui.TextButton;
import com.badlogic.gdx.scenes.scene2d.ui.TextField;
import com.badlogic.gdx.scenes.scene2d.utils.ClickListener;
import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable;
import com.badlogic.gdx.utils.Align;

View File

@@ -0,0 +1,26 @@
package forge.adventure.scene;
/**
* Enum of all scenes
*/
public enum SceneType {
StartScene(new StartScene()),
NewGameScene(new NewGameScene()),
SettingsScene(new SettingsScene()),
GameScene(new GameScene()),
DuelScene(new DuelScene()),
SaveLoadScene(new SaveLoadScene()),
DeckEditScene(new DeckEditScene()),
TileMapScene(new TileMapScene()),
RewardScene(new RewardScene()),
InnScene(new InnScene()),
DeckSelectScene(new DeckSelectScene()),
ShopScene(new ShopScene()),
PlayerStatisticScene(new PlayerStatisticScene());
public final Scene instance;
SceneType(Scene scene) {
this.instance = scene;
}
}

View File

@@ -6,7 +6,13 @@ import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.scenes.scene2d.Actor;
import com.badlogic.gdx.scenes.scene2d.Stage;
import com.badlogic.gdx.scenes.scene2d.ui.*;
import com.badlogic.gdx.scenes.scene2d.ui.CheckBox;
import com.badlogic.gdx.scenes.scene2d.ui.Label;
import com.badlogic.gdx.scenes.scene2d.ui.ScrollPane;
import com.badlogic.gdx.scenes.scene2d.ui.SelectBox;
import com.badlogic.gdx.scenes.scene2d.ui.Slider;
import com.badlogic.gdx.scenes.scene2d.ui.Table;
import com.badlogic.gdx.scenes.scene2d.ui.TextField;
import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener;
import com.badlogic.gdx.utils.Align;
import forge.adventure.AdventureApplicationAdapter;

View File

@@ -42,7 +42,7 @@ public class StartScene extends UIScene {
}
public boolean settings() {
AdventureApplicationAdapter.instance.switchScene(forge.adventure.scene.SceneType.SettingsScene.instance);
AdventureApplicationAdapter.instance.switchScene(SceneType.SettingsScene.instance);
return true;
}

View File

@@ -3,11 +3,11 @@ package forge.adventure.scene;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.maps.tiled.TiledMap;
import forge.adventure.pointofintrest.PointOfInterest;
import forge.adventure.stage.MapStage;
import forge.adventure.stage.PointOfInterestMapRenderer;
import forge.adventure.util.Config;
import forge.adventure.util.TemplateTmxMapLoader;
import forge.adventure.pointofintrest.PointOfInterest;
import forge.adventure.world.WorldSave;
/**

View File

@@ -12,17 +12,23 @@ import com.badlogic.gdx.math.Vector2;
import com.badlogic.gdx.scenes.scene2d.Group;
import com.badlogic.gdx.utils.Array;
import forge.adventure.AdventureApplicationAdapter;
import forge.adventure.character.*;
import forge.adventure.character.CharacterSprite;
import forge.adventure.character.EnemySprite;
import forge.adventure.character.EntryActor;
import forge.adventure.character.MapActor;
import forge.adventure.character.OnCollide;
import forge.adventure.character.ShopActor;
import forge.adventure.character.TextureSprite;
import forge.adventure.data.RewardData;
import forge.adventure.data.ShopData;
import forge.adventure.data.WorldData;
import forge.adventure.pointofintrest.PointOfInterestChanges;
import forge.adventure.scene.DuelScene;
import forge.adventure.scene.RewardScene;
import forge.adventure.scene.SceneType;
import forge.adventure.util.Config;
import forge.adventure.util.Current;
import forge.adventure.util.Reward;
import forge.adventure.pointofintrest.PointOfInterestChanges;
import forge.adventure.world.WorldSave;
import java.util.ArrayList;

View File

@@ -9,7 +9,11 @@ import forge.adventure.character.EnemySprite;
import forge.adventure.data.BiomeData;
import forge.adventure.data.EnemyData;
import forge.adventure.data.WorldData;
import forge.adventure.scene.*;
import forge.adventure.scene.DuelScene;
import forge.adventure.scene.RewardScene;
import forge.adventure.scene.Scene;
import forge.adventure.scene.SceneType;
import forge.adventure.scene.TileMapScene;
import forge.adventure.util.Current;
import forge.adventure.util.SaveFileContent;
import forge.adventure.util.SaveFileData;

View File

@@ -25,7 +25,7 @@ import java.util.Collection;
import java.util.List;
import java.util.regex.Pattern;
import static forge.adventure.data.RewardData.*;
import static forge.adventure.data.RewardData.generateAllCards;
/**
* Utility class to deck generation and card filtering

View File

@@ -5,7 +5,14 @@ import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
import com.badlogic.gdx.scenes.scene2d.Actor;
import com.badlogic.gdx.scenes.scene2d.InputEvent;
import com.badlogic.gdx.scenes.scene2d.ui.*;
import com.badlogic.gdx.scenes.scene2d.ui.CheckBox;
import com.badlogic.gdx.scenes.scene2d.ui.Dialog;
import com.badlogic.gdx.scenes.scene2d.ui.Label;
import com.badlogic.gdx.scenes.scene2d.ui.SelectBox;
import com.badlogic.gdx.scenes.scene2d.ui.Skin;
import com.badlogic.gdx.scenes.scene2d.ui.Slider;
import com.badlogic.gdx.scenes.scene2d.ui.TextButton;
import com.badlogic.gdx.scenes.scene2d.ui.TextField;
import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener;
import com.badlogic.gdx.scenes.scene2d.utils.ClickListener;

View File

@@ -5,7 +5,11 @@ import com.badlogic.gdx.graphics.PixmapIO;
import com.badlogic.gdx.math.Rectangle;
import com.badlogic.gdx.math.Vector2;
import java.io.*;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.HashMap;
public class SaveFileData extends HashMap<String,byte[]>

View File

@@ -16,7 +16,7 @@ import java.io.ObjectOutputStream;
public abstract class Serializer {
static public void WritePixmap(java.io.ObjectOutputStream out, Pixmap pixmap) throws IOException {
static public void WritePixmap(ObjectOutputStream out, Pixmap pixmap) throws IOException {
if (pixmap != null) {
PixmapIO.PNG png = new PixmapIO.PNG();

View File

@@ -18,7 +18,7 @@ public class TemplateTmxMapLoader extends TmxMapLoader {
FileHandle tmxFile;
@Override
protected TiledMap loadTiledMap(FileHandle tmxFile, TmxMapLoader.Parameters parameter, ImageResolver imageResolver) {
protected TiledMap loadTiledMap(FileHandle tmxFile, Parameters parameter, ImageResolver imageResolver) {
this.tmxFile = tmxFile;
return super.loadTiledMap(tmxFile, parameter, imageResolver);
}

View File

@@ -5,7 +5,13 @@ import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.scenes.scene2d.Actor;
import com.badlogic.gdx.scenes.scene2d.Group;
import com.badlogic.gdx.scenes.scene2d.InputEvent;
import com.badlogic.gdx.scenes.scene2d.ui.*;
import com.badlogic.gdx.scenes.scene2d.ui.Image;
import com.badlogic.gdx.scenes.scene2d.ui.ImageButton;
import com.badlogic.gdx.scenes.scene2d.ui.Label;
import com.badlogic.gdx.scenes.scene2d.ui.ScrollPane;
import com.badlogic.gdx.scenes.scene2d.ui.TextButton;
import com.badlogic.gdx.scenes.scene2d.ui.TextField;
import com.badlogic.gdx.scenes.scene2d.ui.Window;
import com.badlogic.gdx.scenes.scene2d.utils.ClickListener;
import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable;
import com.badlogic.gdx.utils.Array;

View File

@@ -8,7 +8,11 @@ import com.badlogic.gdx.math.Vector2;
import com.badlogic.gdx.scenes.scene2d.Actor;
import com.badlogic.gdx.utils.Disposable;
import com.badlogic.gdx.utils.Json;
import forge.adventure.data.*;
import forge.adventure.data.BiomeData;
import forge.adventure.data.BiomeSpriteData;
import forge.adventure.data.BiomeTerrainData;
import forge.adventure.data.PointOfInterestData;
import forge.adventure.data.WorldData;
import forge.adventure.pointofintrest.PointOfInterest;
import forge.adventure.pointofintrest.PointOfInterestMap;
import forge.adventure.scene.Scene;

View File

@@ -9,9 +9,13 @@ import forge.adventure.util.SaveFileData;
import forge.adventure.util.SignalList;
import forge.deck.Deck;
import forge.localinstance.properties.ForgeProfileProperties;
import org.jetbrains.annotations.NotNull;
import java.io.*;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.HashMap;
import java.util.zip.DeflaterOutputStream;
import java.util.zip.InflaterInputStream;
@@ -79,7 +83,7 @@ public class WorldSave {
}
return true;
}
public static boolean isSafeFile(@NotNull String name) {
public static boolean isSafeFile(String name) {
return filenameToSlot(name)!= INVALID_SAVE_SLOT;
}
static public int filenameToSlot(String name) {

View File

@@ -9,14 +9,18 @@ import forge.Graphics;
import forge.assets.FSkinColor;
import forge.assets.FSkinFont;
import forge.assets.FSkinTexture;
import forge.toolbox.FButton;
import forge.toolbox.FContainer;
import forge.toolbox.FEvent;
import forge.toolbox.FProgressBar;
import forge.util.Localizer;
public class SplashScreen extends FContainer {
private TextureRegion background;
private final FProgressBar progressBar;
private FSkinFont disclaimerFont;
private boolean preparedForDialogs;
private boolean preparedForDialogs, showModeSelector, init;
private FButton btnAdventure, btnHome;
public SplashScreen() {
progressBar = new FProgressBar();
@@ -63,14 +67,74 @@ public class SplashScreen extends FContainer {
preparedForDialogs = true;
}
public void setShowModeSelector(boolean value) {
showModeSelector = value;
}
@Override
protected void drawBackground(Graphics g) {
if (showModeSelector)
showSelector(g);
else
showSplash(g);
}
private void showSelector(Graphics g) {
g.drawImage(FSkinTexture.BG_TEXTURE, 0, 0, getWidth(), getHeight());
float x, y, w, h;
float backgroundRatio = (float) background.getRegionWidth() / background.getRegionHeight();
float screenRatio = getWidth() / getHeight();
if (backgroundRatio > screenRatio) {
x = 0;
w = getWidth();
h = getWidth() * backgroundRatio;
y = (getHeight() - h) / 2;
}
else {
y = 0;
h = getHeight();
w = getHeight() / backgroundRatio;
x = (getWidth() - w) / 2;
}
g.drawImage(background, x, y, w, h);
y += h * 295f / 450f;
float padding = 20f / 450f * w;
float height = 57f / 450f * h;
if (!init) {
btnAdventure = new FButton(Localizer.getInstance().getMessageorUseDefault("lblAdventureMode", "Adventure Mode"));
btnAdventure.setCommand(new FEvent.FEventHandler() {
@Override
public void handleEvent(FEvent e) {
Forge.openAdventure();
}
});
btnHome = new FButton(Localizer.getInstance().getMessageorUseDefault("lblClassicMode", "Classic Mode"));
btnHome.setCommand(new FEvent.FEventHandler() {
@Override
public void handleEvent(FEvent e) {
Forge.openHomeDefault();
}
});
float btn_w = (w - 2 * padding);
float btn_x = x + padding;
float btn_y = y + padding;
btnHome.setFont(FSkinFont.get(22));
btnAdventure.setFont(FSkinFont.get(22));
btnHome.setBounds(btn_x, btn_y, btn_w, height);
add(btnHome);
btnAdventure.setBounds(btn_x, btn_y+height+padding/2, btn_w, height);
add(btnAdventure);
init = true;
}
}
private void showSplash(Graphics g) {
if (background == null) { return; }
g.drawImage(FSkinTexture.BG_TEXTURE, 0, 0, getWidth(), getHeight());
float x, y, w, h;
float backgroundRatio = background.getRegionWidth() / background.getRegionHeight();
float backgroundRatio = (float) background.getRegionWidth() / background.getRegionHeight();
float screenRatio = getWidth() / getHeight();
if (backgroundRatio > screenRatio) {
x = 0;

View File

@@ -135,8 +135,10 @@ public abstract class FDisplayObject {
//TODO: mouse detection on android?
if (Forge.afterDBloaded && !GuiBase.isAndroid()) {
Forge.hoveredCount = listeners.size();
if (Forge.getCurrentScreen() != null) {
if (!Forge.getCurrentScreen().toString().contains("Match"))
Forge.hoveredCount = 1;
}
if (exact) {
setHovered(this.enabled && this.visible && ((FCardPanel) this).renderedCardContains(screenToLocalX(screenX), screenToLocalY(screenY)) && Forge.hoveredCount < 2);
} else {