diff --git a/.gitattributes b/.gitattributes index 7bf211589e7..056af9a57b1 100644 --- a/.gitattributes +++ b/.gitattributes @@ -15996,6 +15996,7 @@ forge-m-base/src/forge/player/LobbyPlayerHuman.java -text forge-m-base/src/forge/player/PlayerControllerHuman.java -text forge-m-base/src/forge/screens/FScreen.java -text forge-m-base/src/forge/screens/LaunchScreen.java -text +forge-m-base/src/forge/screens/SplashScreen.java -text forge-m-base/src/forge/screens/constructed/ConstructedScreen.java -text forge-m-base/src/forge/screens/draft/DraftScreen.java -text forge-m-base/src/forge/screens/guantlet/GuantletScreen.java -text @@ -16008,6 +16009,7 @@ forge-m-base/src/forge/toolbox/FButton.java -text forge-m-base/src/forge/toolbox/FContainer.java -text forge-m-base/src/forge/toolbox/FDisplayObject.java -text forge-m-base/src/forge/toolbox/FLabel.java -text +forge-m-base/src/forge/toolbox/FProgressBar.java -text forge-m-base/src/forge/utils/Utils.java -text forge-m-desktop/.classpath -text forge-m-desktop/.project -text diff --git a/forge-m-base/src/forge/Forge.java b/forge-m-base/src/forge/Forge.java index 3e26cc00dd0..1b72480a504 100644 --- a/forge-m-base/src/forge/Forge.java +++ b/forge-m-base/src/forge/Forge.java @@ -23,6 +23,9 @@ import forge.assets.FSkin; import forge.assets.FSkinColor; import forge.assets.FSkinFont; import forge.assets.FImage; +import forge.gui.toolbox.FProgressBar; +import forge.gui.workshop.CardScriptInfo; +import forge.properties.NewConstants; import forge.screens.FScreen; import forge.screens.home.HomeScreen; import forge.toolbox.FDisplayObject; @@ -51,6 +54,28 @@ public class Forge implements ApplicationListener { Gdx.graphics.setContinuousRendering(false); //save power consumption by disabling continuous rendering Gdx.input.setInputProcessor(new FGestureDetector()); + CardStorageReader.ProgressObserver progressBarBridge = new CardStorageReader.ProgressObserver() { + FProgressBar bar = view.getSplash().getProgressBar(); + @Override + public void setOperationName(final String name, final boolean usePercents) { + FThreads.invokeInEdtLater(new Runnable() { @Override public void run() { + bar.setDescription(name); + bar.setPercentMode(usePercents); + } }); + } + + @Override + public void report(int current, int total) { + if ( total != bar.getMaximum()) + bar.setMaximum(total); + bar.setValueThreadSafe(current); + } + }; + + // Loads all cards (using progress bar). + final CardStorageReader reader = new CardStorageReader(NewConstants.CARD_DATA_DIR, progressBarBridge, CardScriptInfo.readerObserver); + magicDb = new StaticData(reader, "res/editions", "res/blockdata"); + FSkin.loadLight("journeyman", true); FSkin.loadFull(true); openScreen(new HomeScreen()); diff --git a/forge-m-base/src/forge/assets/FImage.java b/forge-m-base/src/forge/assets/FImage.java index 2ca1fdd6d3d..3343f89c3a1 100644 --- a/forge-m-base/src/forge/assets/FImage.java +++ b/forge-m-base/src/forge/assets/FImage.java @@ -5,5 +5,5 @@ import forge.Forge.Graphics; public interface FImage { float getSourceWidth(); float getSourceHeight(); - void draw(Graphics g, float x, float y, float w, float h); + void draw(Graphics g, float x, float y, float w, float h); } diff --git a/forge-m-base/src/forge/player/PlayerControllerHuman.java b/forge-m-base/src/forge/player/PlayerControllerHuman.java index f3507bd5408..2b74bc18f59 100644 --- a/forge-m-base/src/forge/player/PlayerControllerHuman.java +++ b/forge-m-base/src/forge/player/PlayerControllerHuman.java @@ -59,468 +59,468 @@ public class PlayerControllerHuman extends PlayerController { super(game0, p, lp); } - @Override - public SpellAbility getAbilityToPlay(List abilities, - MouseEvent triggerEvent) { - // TODO Auto-generated method stub - return null; - } - - @Override - public void playSpellAbilityForFree(SpellAbility copySA, - boolean mayChoseNewTargets) { - // TODO Auto-generated method stub - - } - - @Override - public void playSpellAbilityNoStack(SpellAbility effectSA, - boolean mayChoseNewTargets) { - // TODO Auto-generated method stub - - } - - @Override - public List sideboard(Deck deck, GameType gameType) { - // TODO Auto-generated method stub - return null; - } - - @Override - public List chooseCardsYouWonToAddToDeck(List losses) { - // TODO Auto-generated method stub - return null; - } - - @Override - public Map assignCombatDamage(Card attacker, - List blockers, int damageDealt, GameEntity defender, - boolean overrideOrder) { - // TODO Auto-generated method stub - return null; - } - - @Override - public Integer announceRequirements(SpellAbility ability, String announce, - boolean allowZero) { - // TODO Auto-generated method stub - return null; - } - - @Override - public List choosePermanentsToSacrifice(SpellAbility sa, int min, - int max, List validTargets, String message) { - // TODO Auto-generated method stub - return null; - } - - @Override - public List choosePermanentsToDestroy(SpellAbility sa, int min, - int max, List validTargets, String message) { - // TODO Auto-generated method stub - return null; - } - - @Override - public TargetChoices chooseNewTargetsFor(SpellAbility ability) { - // TODO Auto-generated method stub - return null; - } - - @Override - public boolean chooseTargetsFor(SpellAbility currentAbility) { - // TODO Auto-generated method stub - return false; - } - - @Override - public Pair chooseTarget( - SpellAbility sa, - List> allTargets) { - // TODO Auto-generated method stub - return null; - } - - @Override - public List chooseCardsForEffect(List sourceList, - SpellAbility sa, String title, int min, int max, boolean isOptional) { - // TODO Auto-generated method stub - return null; - } - - @Override - public T chooseSingleEntityForEffect( - Collection sourceList, SpellAbility sa, String title, - boolean isOptional, Player relatedPlayer) { - // TODO Auto-generated method stub - return null; - } - - @Override - public SpellAbility chooseSingleSpellForEffect(List spells, - SpellAbility sa, String title) { - // TODO Auto-generated method stub - return null; - } - - @Override - public boolean confirmAction(SpellAbility sa, PlayerActionConfirmMode mode, - String message) { - // TODO Auto-generated method stub - return false; - } - - @Override - public boolean confirmStaticApplication(Card hostCard, GameEntity affected, - String logic, String message) { - // TODO Auto-generated method stub - return false; - } - - @Override - public boolean confirmTrigger(SpellAbility sa, Trigger regtrig, - Map triggerParams, boolean isMandatory) { - // TODO Auto-generated method stub - return false; - } - - @Override - public boolean getWillPlayOnFirstTurn(boolean isFirstGame) { - // TODO Auto-generated method stub - return false; - } - - @Override - public List orderBlockers(Card attacker, List blockers) { - // TODO Auto-generated method stub - return null; - } - - @Override - public List orderAttackers(Card blocker, List attackers) { - // TODO Auto-generated method stub - return null; - } - - @Override - public void reveal(Collection cards, ZoneType zone, Player owner, - String messagePrefix) { - // TODO Auto-generated method stub - - } - - @Override - public void notifyOfValue(SpellAbility saSource, GameObject realtedTarget, - String value) { - // TODO Auto-generated method stub - - } - - @Override - public ImmutablePair, List> arrangeForScry(List topN) { - // TODO Auto-generated method stub - return null; - } - - @Override - public boolean willPutCardOnTop(Card c) { - // TODO Auto-generated method stub - return false; - } - - @Override - public List orderMoveToZoneList(List cards, - ZoneType destinationZone) { - // TODO Auto-generated method stub - return null; - } - - @Override - public List chooseCardsToDiscardFrom(Player playerDiscard, - SpellAbility sa, List validCards, int min, int max) { - // TODO Auto-generated method stub - return null; - } - - @Override - public void playMiracle(SpellAbility miracle, Card card) { - // TODO Auto-generated method stub - - } - - @Override - public List chooseCardsToDelve(int colorLessAmount, List grave) { - // TODO Auto-generated method stub - return null; - } - - @Override - public List chooseCardsToRevealFromHand(int min, int max, - List valid) { - // TODO Auto-generated method stub - return null; - } - - @Override - public List chooseCardsToDiscardUnlessType(int min, List hand, - String param, SpellAbility sa) { - // TODO Auto-generated method stub - return null; - } - - @Override - public List chooseSaToActivateFromOpeningHand( - List usableFromOpeningHand) { - // TODO Auto-generated method stub - return null; - } - - @Override - public Mana chooseManaFromPool(List manaChoices) { - // TODO Auto-generated method stub - return null; - } - - @Override - public String chooseSomeType(String kindOfType, SpellAbility sa, - List validTypes, List invalidTypes, - boolean isOptional) { - // TODO Auto-generated method stub - return null; - } - - @Override - public Pair chooseAndRemoveOrPutCounter( - Card cardWithCounter) { - // TODO Auto-generated method stub - return null; - } - - @Override - public boolean confirmReplacementEffect( - ReplacementEffect replacementEffect, SpellAbility effectSA, - String question) { - // TODO Auto-generated method stub - return false; - } - - @Override - public List getCardsToMulligan(boolean isCommander, Player firstPlayer) { - // TODO Auto-generated method stub - return null; - } - - @Override - public void declareAttackers(Player attacker, Combat combat) { - // TODO Auto-generated method stub - - } - - @Override - public void declareBlockers(Player defender, Combat combat) { - // TODO Auto-generated method stub - - } - - @Override - public SpellAbility chooseSpellAbilityToPlay() { - // TODO Auto-generated method stub - return null; - } - - @Override - public void playChosenSpellAbility(SpellAbility sa) { - // TODO Auto-generated method stub - - } - - @Override - public List chooseCardsToDiscardToMaximumHandSize(int numDiscard) { - // TODO Auto-generated method stub - return null; - } - - @Override - public boolean payManaOptional(Card card, Cost cost, SpellAbility sa, - String prompt, ManaPaymentPurpose purpose) { - // TODO Auto-generated method stub - return false; - } - - @Override - public int chooseNumber(SpellAbility sa, String title, int min, int max) { - // TODO Auto-generated method stub - return 0; - } - - @Override - public int chooseNumber(SpellAbility sa, String title, - List values, Player relatedPlayer) { - // TODO Auto-generated method stub - return 0; - } - - @Override - public boolean chooseBinary(SpellAbility sa, String question, - BinaryChoiceType kindOfChoice, Boolean defaultChioce) { - // TODO Auto-generated method stub - return false; - } - - @Override - public boolean chooseFlipResult(SpellAbility sa, Player flipper, - boolean[] results, boolean call) { - // TODO Auto-generated method stub - return false; - } - - @Override - public Card chooseProtectionShield(GameEntity entityBeingDamaged, - List options, Map choiceMap) { - // TODO Auto-generated method stub - return null; - } - - @Override - public List chooseModeForAbility(SpellAbility sa, int min, - int num) { - // TODO Auto-generated method stub - return null; - } - - @Override - public byte chooseColor(String message, SpellAbility sa, ColorSet colors) { - // TODO Auto-generated method stub - return 0; - } - - @Override - public byte chooseColorAllowColorless(String message, Card c, - ColorSet colors) { - // TODO Auto-generated method stub - return 0; - } - - @Override - public PaperCard chooseSinglePaperCard(SpellAbility sa, String message, - Predicate cpp, String name) { - // TODO Auto-generated method stub - return null; - } - - @Override - public List chooseColors(String message, SpellAbility sa, int min, - int max, List options) { - // TODO Auto-generated method stub - return null; - } - - @Override - public CounterType chooseCounterType(Collection options, - SpellAbility sa, String prompt) { - // TODO Auto-generated method stub - return null; - } - - @Override - public boolean confirmPayment(CostPart costPart, String string) { - // TODO Auto-generated method stub - return false; - } - - @Override - public ReplacementEffect chooseSingleReplacementEffect(String prompt, - List possibleReplacers, - HashMap runParams) { - // TODO Auto-generated method stub - return null; - } - - @Override - public String chooseProtectionType(String string, SpellAbility sa, - List choices) { - // TODO Auto-generated method stub - return null; - } - - @Override - public CardShields chooseRegenerationShield(Card c) { - // TODO Auto-generated method stub - return null; - } - - @Override - public boolean payCostToPreventEffect(Cost cost, SpellAbility sa, - boolean alreadyPaid, List allPayers) { - // TODO Auto-generated method stub - return false; - } - - @Override - public void orderAndPlaySimultaneousSa(List activePlayerSAs) { - // TODO Auto-generated method stub - - } - - @Override - public void playTrigger(Card host, WrappedAbility wrapperAbility, - boolean isMandatory) { - // TODO Auto-generated method stub - - } - - @Override - public boolean playSaFromPlayEffect(SpellAbility tgtSA) { - // TODO Auto-generated method stub - return false; - } - - @Override - public Map chooseProliferation() { - // TODO Auto-generated method stub - return null; - } - - @Override - public boolean chooseCardsPile(SpellAbility sa, List pile1, - List pile2, boolean faceUp) { - // TODO Auto-generated method stub - return false; - } - - @Override - public void revealAnte(String message, - Multimap removedAnteCards) { - // TODO Auto-generated method stub - - } - - @Override - public boolean payManaCost(ManaCost toPay, CostPartMana costPartMana, - SpellAbility sa, String prompt, boolean isActivatedAbility) { - // TODO Auto-generated method stub - return false; - } - - @Override - public Map chooseCardsForConvoke(SpellAbility sa, - ManaCost manaCost, List untappedCreats) { - // TODO Auto-generated method stub - return null; - } - - @Override - public String chooseCardName(SpellAbility sa, Predicate cpp, - String valid, String message) { - // TODO Auto-generated method stub - return null; - } - - @Override - public Card chooseSingleCardForZoneChange(ZoneType destination, - List origin, SpellAbility sa, List fetchList, - String selectPrompt, boolean b, Player decider) { - // TODO Auto-generated method stub - return null; - } + @Override + public SpellAbility getAbilityToPlay(List abilities, + MouseEvent triggerEvent) { + // TODO Auto-generated method stub + return null; + } + + @Override + public void playSpellAbilityForFree(SpellAbility copySA, + boolean mayChoseNewTargets) { + // TODO Auto-generated method stub + + } + + @Override + public void playSpellAbilityNoStack(SpellAbility effectSA, + boolean mayChoseNewTargets) { + // TODO Auto-generated method stub + + } + + @Override + public List sideboard(Deck deck, GameType gameType) { + // TODO Auto-generated method stub + return null; + } + + @Override + public List chooseCardsYouWonToAddToDeck(List losses) { + // TODO Auto-generated method stub + return null; + } + + @Override + public Map assignCombatDamage(Card attacker, + List blockers, int damageDealt, GameEntity defender, + boolean overrideOrder) { + // TODO Auto-generated method stub + return null; + } + + @Override + public Integer announceRequirements(SpellAbility ability, String announce, + boolean allowZero) { + // TODO Auto-generated method stub + return null; + } + + @Override + public List choosePermanentsToSacrifice(SpellAbility sa, int min, + int max, List validTargets, String message) { + // TODO Auto-generated method stub + return null; + } + + @Override + public List choosePermanentsToDestroy(SpellAbility sa, int min, + int max, List validTargets, String message) { + // TODO Auto-generated method stub + return null; + } + + @Override + public TargetChoices chooseNewTargetsFor(SpellAbility ability) { + // TODO Auto-generated method stub + return null; + } + + @Override + public boolean chooseTargetsFor(SpellAbility currentAbility) { + // TODO Auto-generated method stub + return false; + } + + @Override + public Pair chooseTarget( + SpellAbility sa, + List> allTargets) { + // TODO Auto-generated method stub + return null; + } + + @Override + public List chooseCardsForEffect(List sourceList, + SpellAbility sa, String title, int min, int max, boolean isOptional) { + // TODO Auto-generated method stub + return null; + } + + @Override + public T chooseSingleEntityForEffect( + Collection sourceList, SpellAbility sa, String title, + boolean isOptional, Player relatedPlayer) { + // TODO Auto-generated method stub + return null; + } + + @Override + public SpellAbility chooseSingleSpellForEffect(List spells, + SpellAbility sa, String title) { + // TODO Auto-generated method stub + return null; + } + + @Override + public boolean confirmAction(SpellAbility sa, PlayerActionConfirmMode mode, + String message) { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean confirmStaticApplication(Card hostCard, GameEntity affected, + String logic, String message) { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean confirmTrigger(SpellAbility sa, Trigger regtrig, + Map triggerParams, boolean isMandatory) { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean getWillPlayOnFirstTurn(boolean isFirstGame) { + // TODO Auto-generated method stub + return false; + } + + @Override + public List orderBlockers(Card attacker, List blockers) { + // TODO Auto-generated method stub + return null; + } + + @Override + public List orderAttackers(Card blocker, List attackers) { + // TODO Auto-generated method stub + return null; + } + + @Override + public void reveal(Collection cards, ZoneType zone, Player owner, + String messagePrefix) { + // TODO Auto-generated method stub + + } + + @Override + public void notifyOfValue(SpellAbility saSource, GameObject realtedTarget, + String value) { + // TODO Auto-generated method stub + + } + + @Override + public ImmutablePair, List> arrangeForScry(List topN) { + // TODO Auto-generated method stub + return null; + } + + @Override + public boolean willPutCardOnTop(Card c) { + // TODO Auto-generated method stub + return false; + } + + @Override + public List orderMoveToZoneList(List cards, + ZoneType destinationZone) { + // TODO Auto-generated method stub + return null; + } + + @Override + public List chooseCardsToDiscardFrom(Player playerDiscard, + SpellAbility sa, List validCards, int min, int max) { + // TODO Auto-generated method stub + return null; + } + + @Override + public void playMiracle(SpellAbility miracle, Card card) { + // TODO Auto-generated method stub + + } + + @Override + public List chooseCardsToDelve(int colorLessAmount, List grave) { + // TODO Auto-generated method stub + return null; + } + + @Override + public List chooseCardsToRevealFromHand(int min, int max, + List valid) { + // TODO Auto-generated method stub + return null; + } + + @Override + public List chooseCardsToDiscardUnlessType(int min, List hand, + String param, SpellAbility sa) { + // TODO Auto-generated method stub + return null; + } + + @Override + public List chooseSaToActivateFromOpeningHand( + List usableFromOpeningHand) { + // TODO Auto-generated method stub + return null; + } + + @Override + public Mana chooseManaFromPool(List manaChoices) { + // TODO Auto-generated method stub + return null; + } + + @Override + public String chooseSomeType(String kindOfType, SpellAbility sa, + List validTypes, List invalidTypes, + boolean isOptional) { + // TODO Auto-generated method stub + return null; + } + + @Override + public Pair chooseAndRemoveOrPutCounter( + Card cardWithCounter) { + // TODO Auto-generated method stub + return null; + } + + @Override + public boolean confirmReplacementEffect( + ReplacementEffect replacementEffect, SpellAbility effectSA, + String question) { + // TODO Auto-generated method stub + return false; + } + + @Override + public List getCardsToMulligan(boolean isCommander, Player firstPlayer) { + // TODO Auto-generated method stub + return null; + } + + @Override + public void declareAttackers(Player attacker, Combat combat) { + // TODO Auto-generated method stub + + } + + @Override + public void declareBlockers(Player defender, Combat combat) { + // TODO Auto-generated method stub + + } + + @Override + public SpellAbility chooseSpellAbilityToPlay() { + // TODO Auto-generated method stub + return null; + } + + @Override + public void playChosenSpellAbility(SpellAbility sa) { + // TODO Auto-generated method stub + + } + + @Override + public List chooseCardsToDiscardToMaximumHandSize(int numDiscard) { + // TODO Auto-generated method stub + return null; + } + + @Override + public boolean payManaOptional(Card card, Cost cost, SpellAbility sa, + String prompt, ManaPaymentPurpose purpose) { + // TODO Auto-generated method stub + return false; + } + + @Override + public int chooseNumber(SpellAbility sa, String title, int min, int max) { + // TODO Auto-generated method stub + return 0; + } + + @Override + public int chooseNumber(SpellAbility sa, String title, + List values, Player relatedPlayer) { + // TODO Auto-generated method stub + return 0; + } + + @Override + public boolean chooseBinary(SpellAbility sa, String question, + BinaryChoiceType kindOfChoice, Boolean defaultChioce) { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean chooseFlipResult(SpellAbility sa, Player flipper, + boolean[] results, boolean call) { + // TODO Auto-generated method stub + return false; + } + + @Override + public Card chooseProtectionShield(GameEntity entityBeingDamaged, + List options, Map choiceMap) { + // TODO Auto-generated method stub + return null; + } + + @Override + public List chooseModeForAbility(SpellAbility sa, int min, + int num) { + // TODO Auto-generated method stub + return null; + } + + @Override + public byte chooseColor(String message, SpellAbility sa, ColorSet colors) { + // TODO Auto-generated method stub + return 0; + } + + @Override + public byte chooseColorAllowColorless(String message, Card c, + ColorSet colors) { + // TODO Auto-generated method stub + return 0; + } + + @Override + public PaperCard chooseSinglePaperCard(SpellAbility sa, String message, + Predicate cpp, String name) { + // TODO Auto-generated method stub + return null; + } + + @Override + public List chooseColors(String message, SpellAbility sa, int min, + int max, List options) { + // TODO Auto-generated method stub + return null; + } + + @Override + public CounterType chooseCounterType(Collection options, + SpellAbility sa, String prompt) { + // TODO Auto-generated method stub + return null; + } + + @Override + public boolean confirmPayment(CostPart costPart, String string) { + // TODO Auto-generated method stub + return false; + } + + @Override + public ReplacementEffect chooseSingleReplacementEffect(String prompt, + List possibleReplacers, + HashMap runParams) { + // TODO Auto-generated method stub + return null; + } + + @Override + public String chooseProtectionType(String string, SpellAbility sa, + List choices) { + // TODO Auto-generated method stub + return null; + } + + @Override + public CardShields chooseRegenerationShield(Card c) { + // TODO Auto-generated method stub + return null; + } + + @Override + public boolean payCostToPreventEffect(Cost cost, SpellAbility sa, + boolean alreadyPaid, List allPayers) { + // TODO Auto-generated method stub + return false; + } + + @Override + public void orderAndPlaySimultaneousSa(List activePlayerSAs) { + // TODO Auto-generated method stub + + } + + @Override + public void playTrigger(Card host, WrappedAbility wrapperAbility, + boolean isMandatory) { + // TODO Auto-generated method stub + + } + + @Override + public boolean playSaFromPlayEffect(SpellAbility tgtSA) { + // TODO Auto-generated method stub + return false; + } + + @Override + public Map chooseProliferation() { + // TODO Auto-generated method stub + return null; + } + + @Override + public boolean chooseCardsPile(SpellAbility sa, List pile1, + List pile2, boolean faceUp) { + // TODO Auto-generated method stub + return false; + } + + @Override + public void revealAnte(String message, + Multimap removedAnteCards) { + // TODO Auto-generated method stub + + } + + @Override + public boolean payManaCost(ManaCost toPay, CostPartMana costPartMana, + SpellAbility sa, String prompt, boolean isActivatedAbility) { + // TODO Auto-generated method stub + return false; + } + + @Override + public Map chooseCardsForConvoke(SpellAbility sa, + ManaCost manaCost, List untappedCreats) { + // TODO Auto-generated method stub + return null; + } + + @Override + public String chooseCardName(SpellAbility sa, Predicate cpp, + String valid, String message) { + // TODO Auto-generated method stub + return null; + } + + @Override + public Card chooseSingleCardForZoneChange(ZoneType destination, + List origin, SpellAbility sa, List fetchList, + String selectPrompt, boolean b, Player decider) { + // TODO Auto-generated method stub + return null; + } }*/ diff --git a/forge-m-base/src/forge/screens/FScreen.java b/forge-m-base/src/forge/screens/FScreen.java index 465986b8986..0451ff0aafd 100644 --- a/forge-m-base/src/forge/screens/FScreen.java +++ b/forge-m-base/src/forge/screens/FScreen.java @@ -21,34 +21,34 @@ public abstract class FScreen extends FContainer { private final FLabel btnBack, lblHeader, btnMenu; protected FScreen(boolean showBackButton, String headerCaption, boolean showMenuButton) { - if (showBackButton) { - btnBack = add(new FLabel.ButtonBuilder().icon(FSkinImage.BACK).command(new Runnable() { - @Override - public void run() { - Forge.back(); - } - }).build()); - } - else { - btnBack = null; - } - if (headerCaption != null) { - lblHeader = add(new FLabel.Builder().text(headerCaption).fontSize(16).align(HAlignment.CENTER).build()); - } - else { - lblHeader = null; - } - if (showMenuButton) { - btnMenu = add(new FLabel.ButtonBuilder().icon(FSkinImage.FAVICON).command(new Runnable() { - @Override - public void run() { - showMenu(); - } - }).build()); - } - else { - btnMenu = null; - } + if (showBackButton) { + btnBack = add(new FLabel.ButtonBuilder().icon(FSkinImage.BACK).command(new Runnable() { + @Override + public void run() { + Forge.back(); + } + }).build()); + } + else { + btnBack = null; + } + if (headerCaption != null) { + lblHeader = add(new FLabel.Builder().text(headerCaption).fontSize(16).align(HAlignment.CENTER).build()); + } + else { + lblHeader = null; + } + if (showMenuButton) { + btnMenu = add(new FLabel.ButtonBuilder().icon(FSkinImage.FAVICON).command(new Runnable() { + @Override + public void run() { + showMenu(); + } + }).build()); + } + else { + btnMenu = null; + } } public void onOpen() { @@ -63,54 +63,54 @@ public abstract class FScreen extends FContainer { } public void showMenu() { - buildMenu(); + buildMenu(); } protected void buildMenu() { - + } @Override protected final void doLayout(float width, float height) { - float headerX = 0; - float insets = 0; - float headerWidth = width; - float buttonWidth = Utils.AVG_FINGER_WIDTH; - float headerHeight = Utils.AVG_FINGER_HEIGHT; + float headerX = 0; + float insets = 0; + float headerWidth = width; + float buttonWidth = Utils.AVG_FINGER_WIDTH; + float headerHeight = Utils.AVG_FINGER_HEIGHT; - if (btnBack != null) { - btnBack.setBounds(insets, insets, buttonWidth, headerHeight); - headerX = btnBack.getWidth(); - headerWidth -= headerX; - } - if (btnMenu != null) { - btnMenu.setBounds(width - buttonWidth - insets, insets, buttonWidth, headerHeight); - headerWidth -= btnMenu.getWidth(); - } - if (lblHeader != null) { - lblHeader.setBounds(headerX, 0, headerWidth, headerHeight); + if (btnBack != null) { + btnBack.setBounds(insets, insets, buttonWidth, headerHeight); + headerX = btnBack.getWidth(); + headerWidth -= headerX; + } + if (btnMenu != null) { + btnMenu.setBounds(width - buttonWidth - insets, insets, buttonWidth, headerHeight); + headerWidth -= btnMenu.getWidth(); + } + if (lblHeader != null) { + lblHeader.setBounds(headerX, 0, headerWidth, headerHeight); - doLayout(headerHeight, width, height); - } - else { - doLayout(0, width, height); - } + doLayout(headerHeight, width, height); + } + else { + doLayout(0, width, height); + } } protected abstract void doLayout(float startY, float width, float height); @Override protected void drawBackground(Graphics g) { - float w = getWidth(); - float h = getHeight(); + float w = getWidth(); + float h = getHeight(); g.drawImage(FSkinImage.BG_TEXTURE, 0, 0, w, h); g.fillRect(clrTheme, 0, 0, w, h); if (lblHeader != null) { //draw custom background behind header label - float x = lblHeader.getLeft() + 6; - float y = lblHeader.getTop() + 1; - w -= x; - h = lblHeader.getHeight() - 2; + float x = lblHeader.getLeft() + 6; + float y = lblHeader.getTop() + 1; + w -= x; + h = lblHeader.getHeight() - 2; g.fillRect(d80, x, y + 5, w, h - 5); g.fillRect(a100, x + 5, y, w - 5, h - 5); g.drawRect(d40, x + 5, y, w - 5, h - 5); diff --git a/forge-m-base/src/forge/screens/LaunchScreen.java b/forge-m-base/src/forge/screens/LaunchScreen.java index 35867b015c5..3caa37e8fe6 100644 --- a/forge-m-base/src/forge/screens/LaunchScreen.java +++ b/forge-m-base/src/forge/screens/LaunchScreen.java @@ -15,36 +15,36 @@ import forge.game.player.RegisteredPlayer; import forge.toolbox.FDisplayObject; public abstract class LaunchScreen extends FScreen { - private final StartButton btnStart; + private final StartButton btnStart; public LaunchScreen(String headerCaption) { - super(true, headerCaption, true); - btnStart = add(new StartButton()); + super(true, headerCaption, true); + btnStart = add(new StartButton()); } @Override protected final void doLayout(float startY, float width, float height) { - float imageWidth = FSkinImage.BTN_START_UP.getSourceWidth(); - float imageHeight = FSkinImage.BTN_START_UP.getSourceHeight(); - float padding = imageHeight * 0.1f; + float imageWidth = FSkinImage.BTN_START_UP.getSourceWidth(); + float imageHeight = FSkinImage.BTN_START_UP.getSourceHeight(); + float padding = imageHeight * 0.1f; - btnStart.setBounds((width - imageWidth) / 2, height - imageHeight - padding, imageWidth, imageHeight); + btnStart.setBounds((width - imageWidth) / 2, height - imageHeight - padding, imageWidth, imageHeight); - doLayoutAboveBtnStart(startY, width, height - imageHeight - 2 * padding); + doLayoutAboveBtnStart(startY, width, height - imageHeight - 2 * padding); } protected abstract void doLayoutAboveBtnStart(float startY, float width, float height); protected abstract boolean buildLaunchParams(LaunchParams launchParams); protected class LaunchParams { - public GameType gameType; - public final List players = new ArrayList(); - public final List appliedVariants = new ArrayList(); + public GameType gameType; + public final List players = new ArrayList(); + public final List appliedVariants = new ArrayList(); } private class StartButton extends FDisplayObject { - private boolean pressed; - private boolean creatingMatch; + private boolean pressed; + private boolean creatingMatch; /** * Instantiates a new FButton. @@ -60,25 +60,25 @@ public abstract class LaunchScreen extends FScreen { @Override public final boolean touchUp(float x, float y) { - pressed = false; + pressed = false; return true; } @Override public final boolean tap(float x, float y, int count) { if (count == 1 && !creatingMatch) { - creatingMatch = true; //ensure user doesn't create multiple matches by tapping multiple times + creatingMatch = true; //ensure user doesn't create multiple matches by tapping multiple times - LaunchParams launchParams = new LaunchParams(); - if (buildLaunchParams(launchParams)) { - if (launchParams.gameType == null) { - throw new RuntimeException("Must set launchParams.gameType"); - } - if (launchParams.players.isEmpty()) { - throw new RuntimeException("Must add at least one player to launchParams.players"); - } + LaunchParams launchParams = new LaunchParams(); + if (buildLaunchParams(launchParams)) { + if (launchParams.gameType == null) { + throw new RuntimeException("Must set launchParams.gameType"); + } + if (launchParams.players.isEmpty()) { + throw new RuntimeException("Must add at least one player to launchParams.players"); + } - boolean useRandomFoil = false; //Singletons.getModel().getPreferences().getPrefBoolean(FPref.UI_RANDOM_FOIL); + boolean useRandomFoil = false; //Singletons.getModel().getPreferences().getPrefBoolean(FPref.UI_RANDOM_FOIL); for (RegisteredPlayer rp : launchParams.players) { rp.setRandomFoil(useRandomFoil); } @@ -92,17 +92,17 @@ public abstract class LaunchScreen extends FScreen { rules.canCloneUseTargetsImage = false; //Singletons.getModel().getPreferences().getPrefBoolean(FPref.UI_CLONE_MODE_SOURCE); Forge.openScreen(new MatchScreen(new Match(rules, launchParams.players))); - } + } - creatingMatch = false; + creatingMatch = false; } return true; } @Override public void draw(Graphics g) { - g.drawImage(pressed ? FSkinImage.BTN_START_DOWN : FSkinImage.BTN_START_UP, - 0, 0, getWidth(), getHeight()); + g.drawImage(pressed ? FSkinImage.BTN_START_DOWN : FSkinImage.BTN_START_UP, + 0, 0, getWidth(), getHeight()); } } } diff --git a/forge-m-base/src/forge/screens/SplashScreen.java b/forge-m-base/src/forge/screens/SplashScreen.java new file mode 100644 index 00000000000..313e7437db5 --- /dev/null +++ b/forge-m-base/src/forge/screens/SplashScreen.java @@ -0,0 +1,27 @@ +package forge.screens; + +import forge.screens.FScreen; +import forge.toolbox.FProgressBar; + +public abstract class SplashScreen extends FScreen { + private static SplashScreen splashScreen; + + public static FProgressBar getProgressBar(String desc) { + return splashScreen.progressBar; + } + + private FProgressBar progressBar = new FProgressBar(); + + public SplashScreen() { + super(false, null, false); + if (splashScreen != null) { + throw new RuntimeException("Cannot initialize SplashScreen more than once"); + } + splashScreen = this; + add(progressBar); + } + + @Override + protected final void doLayout(float startY, float width, float height) { + } +} diff --git a/forge-m-base/src/forge/screens/constructed/ConstructedScreen.java b/forge-m-base/src/forge/screens/constructed/ConstructedScreen.java index 0d867ccbdd2..ec19d524227 100644 --- a/forge-m-base/src/forge/screens/constructed/ConstructedScreen.java +++ b/forge-m-base/src/forge/screens/constructed/ConstructedScreen.java @@ -10,32 +10,32 @@ import forge.utils.Utils; public class ConstructedScreen extends LaunchScreen { public ConstructedScreen() { - super("Constructed"); + super("Constructed"); } - @Override - protected void doLayoutAboveBtnStart(float startY, float width, float height) { - // TODO Auto-generated method stub - - } + @Override + protected void doLayoutAboveBtnStart(float startY, float width, float height) { + // TODO Auto-generated method stub + + } - @Override - protected boolean buildLaunchParams(LaunchParams launchParams) { - launchParams.gameType = GameType.Constructed; + @Override + protected boolean buildLaunchParams(LaunchParams launchParams) { + launchParams.gameType = GameType.Constructed; - //TODO: Allow picking decks - Deck humanDeck = Utils.generateRandomDeck(2); - LobbyPlayerHuman humanLobbyPlayer = new LobbyPlayerHuman("Human"); - RegisteredPlayer humanRegisteredPlayer = new RegisteredPlayer(humanDeck); - humanRegisteredPlayer.setPlayer(humanLobbyPlayer); - launchParams.players.add(humanRegisteredPlayer); + //TODO: Allow picking decks + Deck humanDeck = Utils.generateRandomDeck(2); + LobbyPlayerHuman humanLobbyPlayer = new LobbyPlayerHuman("Human"); + RegisteredPlayer humanRegisteredPlayer = new RegisteredPlayer(humanDeck); + humanRegisteredPlayer.setPlayer(humanLobbyPlayer); + launchParams.players.add(humanRegisteredPlayer); - Deck aiDeck = Utils.generateRandomDeck(2); - LobbyPlayerAi aiLobbyPlayer = new LobbyPlayerAi("AI Player"); - RegisteredPlayer aiRegisteredPlayer = new RegisteredPlayer(aiDeck); - aiRegisteredPlayer.setPlayer(aiLobbyPlayer); - launchParams.players.add(aiRegisteredPlayer); + Deck aiDeck = Utils.generateRandomDeck(2); + LobbyPlayerAi aiLobbyPlayer = new LobbyPlayerAi("AI Player"); + RegisteredPlayer aiRegisteredPlayer = new RegisteredPlayer(aiDeck); + aiRegisteredPlayer.setPlayer(aiLobbyPlayer); + launchParams.players.add(aiRegisteredPlayer); - return false; //TODO: Support launching match - } + return false; //TODO: Support launching match + } } diff --git a/forge-m-base/src/forge/screens/draft/DraftScreen.java b/forge-m-base/src/forge/screens/draft/DraftScreen.java index 1392f1ffa1f..c0cff6537e7 100644 --- a/forge-m-base/src/forge/screens/draft/DraftScreen.java +++ b/forge-m-base/src/forge/screens/draft/DraftScreen.java @@ -5,18 +5,18 @@ import forge.game.GameType; public class DraftScreen extends LaunchScreen { public DraftScreen() { - super("Draft"); + super("Draft"); } - @Override - protected void doLayoutAboveBtnStart(float startY, float width, float height) { - // TODO Auto-generated method stub - - } + @Override + protected void doLayoutAboveBtnStart(float startY, float width, float height) { + // TODO Auto-generated method stub + + } - @Override - protected boolean buildLaunchParams(LaunchParams launchParams) { - launchParams.gameType = GameType.Draft; - return false; //TODO: Support launching match - } + @Override + protected boolean buildLaunchParams(LaunchParams launchParams) { + launchParams.gameType = GameType.Draft; + return false; //TODO: Support launching match + } } diff --git a/forge-m-base/src/forge/screens/guantlet/GuantletScreen.java b/forge-m-base/src/forge/screens/guantlet/GuantletScreen.java index b5ac3f2c997..1962ec3e7fb 100644 --- a/forge-m-base/src/forge/screens/guantlet/GuantletScreen.java +++ b/forge-m-base/src/forge/screens/guantlet/GuantletScreen.java @@ -5,18 +5,18 @@ import forge.screens.LaunchScreen; public class GuantletScreen extends LaunchScreen { public GuantletScreen() { - super("Guantlet"); + super("Guantlet"); } - @Override - protected void doLayoutAboveBtnStart(float startY, float width, float height) { - // TODO Auto-generated method stub - - } + @Override + protected void doLayoutAboveBtnStart(float startY, float width, float height) { + // TODO Auto-generated method stub + + } - @Override - protected boolean buildLaunchParams(LaunchParams launchParams) { - launchParams.gameType = GameType.Gauntlet; - return false; //TODO: Support launching match - } + @Override + protected boolean buildLaunchParams(LaunchParams launchParams) { + launchParams.gameType = GameType.Gauntlet; + return false; //TODO: Support launching match + } } diff --git a/forge-m-base/src/forge/screens/home/HomeScreen.java b/forge-m-base/src/forge/screens/home/HomeScreen.java index 1fdfe52b9a6..70d9de92903 100644 --- a/forge-m-base/src/forge/screens/home/HomeScreen.java +++ b/forge-m-base/src/forge/screens/home/HomeScreen.java @@ -21,43 +21,43 @@ public class HomeScreen extends FScreen { private final ArrayList buttons = new ArrayList(); public HomeScreen() { - super(false, null, false); + super(false, null, false); addButton("Constructed", new Runnable() { - @Override - public void run() { - Forge.openScreen(new ConstructedScreen()); - } + @Override + public void run() { + Forge.openScreen(new ConstructedScreen()); + } }); addButton("Draft", new Runnable() { - @Override - public void run() { - Forge.openScreen(new DraftScreen()); - } + @Override + public void run() { + Forge.openScreen(new DraftScreen()); + } }); addButton("Sealed", new Runnable() { - @Override - public void run() { - Forge.openScreen(new SealedScreen()); - } + @Override + public void run() { + Forge.openScreen(new SealedScreen()); + } }); addButton("Quest", new Runnable() { - @Override - public void run() { - Forge.openScreen(new QuestScreen()); - } + @Override + public void run() { + Forge.openScreen(new QuestScreen()); + } }); addButton("Guantlet", new Runnable() { - @Override - public void run() { - Forge.openScreen(new GuantletScreen()); - } + @Override + public void run() { + Forge.openScreen(new GuantletScreen()); + } }); addButton("Settings", new Runnable() { - @Override - public void run() { - Forge.openScreen(new SettingsScreen()); - } + @Override + public void run() { + Forge.openScreen(new SettingsScreen()); + } }); } diff --git a/forge-m-base/src/forge/screens/match/MatchScreen.java b/forge-m-base/src/forge/screens/match/MatchScreen.java index d208901b9d7..8548705ce7f 100644 --- a/forge-m-base/src/forge/screens/match/MatchScreen.java +++ b/forge-m-base/src/forge/screens/match/MatchScreen.java @@ -4,11 +4,11 @@ import forge.screens.FScreen; import forge.game.Match; public class MatchScreen extends FScreen { - private final Match match; + private final Match match; public MatchScreen(Match match0) { - super(false, null, true); - this.match = match0; + super(false, null, true); + this.match = match0; } @Override diff --git a/forge-m-base/src/forge/screens/quest/QuestScreen.java b/forge-m-base/src/forge/screens/quest/QuestScreen.java index eeb38ca3190..8a9a622a692 100644 --- a/forge-m-base/src/forge/screens/quest/QuestScreen.java +++ b/forge-m-base/src/forge/screens/quest/QuestScreen.java @@ -5,18 +5,18 @@ import forge.screens.LaunchScreen; public class QuestScreen extends LaunchScreen { public QuestScreen() { - super("Quest"); + super("Quest"); } - @Override - protected void doLayoutAboveBtnStart(float startY, float width, float height) { - // TODO Auto-generated method stub - - } + @Override + protected void doLayoutAboveBtnStart(float startY, float width, float height) { + // TODO Auto-generated method stub + + } - @Override - protected boolean buildLaunchParams(LaunchParams launchParams) { - launchParams.gameType = GameType.Quest; - return false; //TODO: Support launching match - } + @Override + protected boolean buildLaunchParams(LaunchParams launchParams) { + launchParams.gameType = GameType.Quest; + return false; //TODO: Support launching match + } } diff --git a/forge-m-base/src/forge/screens/sealed/SealedScreen.java b/forge-m-base/src/forge/screens/sealed/SealedScreen.java index 96aed3aa83c..401fe1f5d04 100644 --- a/forge-m-base/src/forge/screens/sealed/SealedScreen.java +++ b/forge-m-base/src/forge/screens/sealed/SealedScreen.java @@ -5,18 +5,18 @@ import forge.screens.LaunchScreen; public class SealedScreen extends LaunchScreen { public SealedScreen() { - super("Sealed"); + super("Sealed"); } - @Override - protected void doLayoutAboveBtnStart(float startY, float width, float height) { - // TODO Auto-generated method stub - - } + @Override + protected void doLayoutAboveBtnStart(float startY, float width, float height) { + // TODO Auto-generated method stub + + } - @Override - protected boolean buildLaunchParams(LaunchParams launchParams) { - launchParams.gameType = GameType.Sealed; - return false; //TODO: Support launching match - } + @Override + protected boolean buildLaunchParams(LaunchParams launchParams) { + launchParams.gameType = GameType.Sealed; + return false; //TODO: Support launching match + } } diff --git a/forge-m-base/src/forge/screens/settings/SettingsScreen.java b/forge-m-base/src/forge/screens/settings/SettingsScreen.java index dd266b2508c..a0460b186f7 100644 --- a/forge-m-base/src/forge/screens/settings/SettingsScreen.java +++ b/forge-m-base/src/forge/screens/settings/SettingsScreen.java @@ -5,7 +5,7 @@ import forge.screens.FScreen; public class SettingsScreen extends FScreen { public SettingsScreen() { - super(true, "Settings", true); + super(true, "Settings", true); } @Override diff --git a/forge-m-base/src/forge/toolbox/FButton.java b/forge-m-base/src/forge/toolbox/FButton.java index 6f57f843339..b11a1471711 100644 --- a/forge-m-base/src/forge/toolbox/FButton.java +++ b/forge-m-base/src/forge/toolbox/FButton.java @@ -85,7 +85,7 @@ public class FButton extends FDisplayObject { } public void setCommand(Runnable command0) { - command = command0; + command = command0; } @Override @@ -107,7 +107,7 @@ public class FButton extends FDisplayObject { @Override public final boolean tap(float x, float y, int count) { if (count == 1 && command != null) { - command.run(); + command.run(); } return true; } diff --git a/forge-m-base/src/forge/toolbox/FContainer.java b/forge-m-base/src/forge/toolbox/FContainer.java index ae8891e9a14..32461f89fa5 100644 --- a/forge-m-base/src/forge/toolbox/FContainer.java +++ b/forge-m-base/src/forge/toolbox/FContainer.java @@ -18,9 +18,9 @@ public abstract class FContainer extends FDisplayObject { public final void draw(Graphics g) { drawBackground(g); for (FDisplayObject child : children) { - if (child.isVisible()) { - g.draw(child); - } + if (child.isVisible()) { + g.draw(child); + } } drawOverlay(g); } diff --git a/forge-m-base/src/forge/toolbox/FDisplayObject.java b/forge-m-base/src/forge/toolbox/FDisplayObject.java index 6129d86c49f..b9c66cc758e 100644 --- a/forge-m-base/src/forge/toolbox/FDisplayObject.java +++ b/forge-m-base/src/forge/toolbox/FDisplayObject.java @@ -8,8 +8,8 @@ import com.badlogic.gdx.math.Vector2; import forge.Forge.Graphics; public abstract class FDisplayObject { - private boolean visible = true; - private boolean enabled = true; + private boolean visible = true; + private boolean enabled = true; private final Rectangle bounds = new Rectangle(); public void setPosition(float x, float y) { @@ -54,7 +54,7 @@ public abstract class FDisplayObject { return visible; } public void setVisible(boolean b0) { - visible = b0; + visible = b0; } public abstract void draw(Graphics g); diff --git a/forge-m-base/src/forge/toolbox/FLabel.java b/forge-m-base/src/forge/toolbox/FLabel.java index 803c00c8869..616097fda89 100644 --- a/forge-m-base/src/forge/toolbox/FLabel.java +++ b/forge-m-base/src/forge/toolbox/FLabel.java @@ -10,7 +10,7 @@ import forge.assets.FSkinColor.Colors; import forge.assets.FSkinFont; public class FLabel extends FDisplayObject { - public static class Builder { + public static class Builder { //========== Default values for FLabel are set here. private float bldIconScaleFactor = 0.8f; private int bldFontSize = 14; @@ -79,18 +79,18 @@ public class FLabel extends FDisplayObject { // Call this using FLabel.Builder()... protected FLabel(final Builder b0) { - iconScaleFactor = b0.bldIconScaleFactor; - font = FSkinFont.get(b0.bldFontSize); - alignment = b0.bldAlignment; - insets = b0.bldInsets; - selectable = b0.bldSelectable; - selected = b0.bldSelected; - opaque = b0.bldOpaque; - iconInBackground = b0.bldIconInBackground; - iconScaleAuto = b0.bldIconScaleAuto; - text = b0.bldText != null ? b0.bldText : ""; + iconScaleFactor = b0.bldIconScaleFactor; + font = FSkinFont.get(b0.bldFontSize); + alignment = b0.bldAlignment; + insets = b0.bldInsets; + selectable = b0.bldSelectable; + selected = b0.bldSelected; + opaque = b0.bldOpaque; + iconInBackground = b0.bldIconInBackground; + iconScaleAuto = b0.bldIconScaleAuto; + text = b0.bldText != null ? b0.bldText : ""; icon = b0.bldIcon; - command = b0.bldCommand; + command = b0.bldCommand; setEnabled(b0.bldEnabled); } @@ -135,45 +135,45 @@ public class FLabel extends FDisplayObject { @Override public final boolean tap(float x, float y, int count) { - boolean handled = false; - if (selectable) { - setSelected(!selected); - handled = true; - } - if (command != null) { - command.run(); - handled = true; + boolean handled = false; + if (selectable) { + setSelected(!selected); + handled = true; } - return handled; + if (command != null) { + command.run(); + handled = true; + } + return handled; } - @Override - public void draw(Graphics g) { - float w = getWidth(); - float h = getHeight(); + @Override + public void draw(Graphics g) { + float w = getWidth(); + float h = getHeight(); - if (pressed) { - g.drawRect(d50, 0, 0, w, h); - g.drawRect(d10, 1, 1, w - 2, h - 2); - g.fillGradientRect(d50, d10, true, 2, 2, w - 4, h - 4); - } - else if (selected && (opaque || selectable)) { - g.drawRect(d30, 0, 0, w, h); - g.drawRect(l10, 1, 1, w - 2, h - 2); - g.fillGradientRect(d30, l10, true, 2, 2, w - 4, h - 4); + if (pressed) { + g.drawRect(d50, 0, 0, w, h); + g.drawRect(d10, 1, 1, w - 2, h - 2); + g.fillGradientRect(d50, d10, true, 2, 2, w - 4, h - 4); } - else if (opaque) { + else if (selected && (opaque || selectable)) { + g.drawRect(d30, 0, 0, w, h); + g.drawRect(l10, 1, 1, w - 2, h - 2); + g.fillGradientRect(d30, l10, true, 2, 2, w - 4, h - 4); + } + else if (opaque) { g.drawRect(d50, 0, 0, w, h); g.drawRect(l10, 1, 1, w - 2, h - 2); g.fillGradientRect(d10, l20, true, 2, 2, w - 4, h - 4); - } + } else if (selectable) { g.drawRect(l10, 0, 0, w, h); g.drawRect(l30, 1, 1, w - 2, h - 2); } - drawContent(g, w, h, pressed); - } + drawContent(g, w, h, pressed); + } protected void drawContent(Graphics g, float w, float h, final boolean pressed) { float x = insets.x; @@ -181,8 +181,8 @@ public class FLabel extends FDisplayObject { w -= 2 * x; h -= 2 * x; if (pressed) { //while pressed, translate graphics so icon and text appear shifted down and to the right - x++; - y++; + x++; + y++; } if (icon != null) { @@ -195,9 +195,9 @@ public class FLabel extends FDisplayObject { iconWidth = iconHeight * aspectRatio; } if (iconInBackground || text.isEmpty()) { - if (alignment == HAlignment.CENTER) { - x += (w - iconWidth) / 2; - } + if (alignment == HAlignment.CENTER) { + x += (w - iconWidth) / 2; + } y += (h - iconHeight) / 2; } else { @@ -208,14 +208,14 @@ public class FLabel extends FDisplayObject { g.drawImage(icon, x, y, iconWidth, iconHeight); if (!text.isEmpty()) { - x += iconWidth; - g.startClip(x, y, w, h); + x += iconWidth; + g.startClip(x, y, w, h); g.drawText(text, font, clrText, x, y, w, h, false, HAlignment.LEFT, true); g.endClip(); } } else if (!text.isEmpty()) { - g.startClip(x, y, w, h); + g.startClip(x, y, w, h); g.drawText(text, font, clrText, x, y, w, h, false, alignment, true); g.endClip(); } diff --git a/forge-m-base/src/forge/toolbox/FProgressBar.java b/forge-m-base/src/forge/toolbox/FProgressBar.java new file mode 100644 index 00000000000..11b9b24cb4d --- /dev/null +++ b/forge-m-base/src/forge/toolbox/FProgressBar.java @@ -0,0 +1,104 @@ +package forge.toolbox; + +import java.util.Date; + +import forge.Forge.Graphics; + +public class FProgressBar extends FDisplayObject { + private long startMillis = 0; + private int tempVal = 0, etaSecs = 0, maximum = 0, value = 0; + private String desc = ""; + private String tempMsg, message; + private boolean showETA = true; + private boolean showCount = true; + + private boolean percentMode = false; + + /** */ + public FProgressBar() { + super(); + this.reset(); + } + + /** + * Sets description on bar. + * + * @param s0   A description to prepend before statistics. + */ + public void setDescription(final String s0) { + this.desc = s0; + } + + private final Runnable barIncrementor = new Runnable() { + @Override + public void run() { + value = tempVal; + message = tempMsg; + } + }; + + /** Increments bar, thread safe. Calculations executed on separate thread. */ + public void setValueThreadSafe(int value) { + //GuiUtils.checkEDT("FProgressBar$increment", false); + tempVal = value; + + // String.format leads to StringBuilder anyway. Direct calls will be faster + StringBuilder sb = new StringBuilder(desc); + if (showCount) { + sb.append(" "); + if (percentMode) + sb.append(100 * tempVal / maximum).append("%"); + else + sb.append(tempVal).append(" of ").append(maximum); + } + + if (showETA) { + calculateETA(tempVal); + sb.append(", ETA").append(String.format("%02d:%02d:%02d", etaSecs / 3600, (etaSecs % 3600) / 60, etaSecs % 60 + 1)); + } + tempMsg = sb.toString(); + + // When calculations finished; EDT can be used. + //SwingUtilities.invokeLater(barIncrementor); + barIncrementor.run(); + } + + /** Resets the various values required for this class. Must be called from EDT. */ + public void reset() { + //FThreads.assertExecutedByEdt(true); + this.startMillis = new Date().getTime(); + this.setShowETA(true); + this.setShowCount(true); + } + + /** @param b0   Boolean, show the ETA statistic or not */ + public void setShowETA(boolean b0) { + this.showETA = b0; + } + + /** @param b0   Boolean, show the ETA statistic or not */ + public void setShowCount(boolean b0) { + this.showCount = b0; + } + + /** */ + private void calculateETA(int v0) { + float tempMillis = new Date().getTime(); + float timePerUnit = (tempMillis - startMillis) / v0; + etaSecs = (int) ((this.maximum - v0) * timePerUnit) / 1000; + } + + public boolean isPercentMode() { + return percentMode; + } + + public void setPercentMode(boolean value) { + this.percentMode = value; + } + + @Override + public void draw(Graphics g) { + // TODO Auto-generated method stub + + } +} diff --git a/forge-m-base/src/forge/utils/Utils.java b/forge-m-base/src/forge/utils/Utils.java index 3302562d6a1..8c3de35317f 100644 --- a/forge-m-base/src/forge/utils/Utils.java +++ b/forge-m-base/src/forge/utils/Utils.java @@ -12,21 +12,21 @@ import forge.deck.generation.DeckGeneratorBase; import forge.deck.generation.DeckGeneratorMonoColor; public class Utils { - private final static float ppcX = Gdx.graphics.getPpcX(); - private final static float ppcY = Gdx.graphics.getPpcY(); - private final static float AVG_FINGER_SIZE_CM = 1.1f; + private final static float ppcX = Gdx.graphics.getPpcX(); + private final static float ppcY = Gdx.graphics.getPpcY(); + private final static float AVG_FINGER_SIZE_CM = 1.1f; - public final static float AVG_FINGER_WIDTH = cmToPixelsX(AVG_FINGER_SIZE_CM); - public final static float AVG_FINGER_HEIGHT = cmToPixelsY(AVG_FINGER_SIZE_CM); + public final static float AVG_FINGER_WIDTH = cmToPixelsX(AVG_FINGER_SIZE_CM); + public final static float AVG_FINGER_HEIGHT = cmToPixelsY(AVG_FINGER_SIZE_CM); - public static float cmToPixelsX(float cm) { - return ppcX * cm; - } - public static float cmToPixelsY(float cm) { - return ppcY * cm; - } + public static float cmToPixelsX(float cm) { + return ppcX * cm; + } + public static float cmToPixelsY(float cm) { + return ppcY * cm; + } - public static Deck generateRandomDeck(final int colorCount0) { + public static Deck generateRandomDeck(final int colorCount0) { CardDb cardDb = Forge.getMagicDb().getCommonCards(); DeckGeneratorBase gen = null; switch (colorCount0) { @@ -37,12 +37,12 @@ public class Utils { } if (gen != null) { - final Deck deck = new Deck(); + final Deck deck = new Deck(); gen.setSingleton(false); gen.setUseArtifacts(false); deck.getMain().addAll(gen.getDeck(60, false)); return deck; } return null; - } + } }