Skip to content

Commit

Permalink
Merge branch 'master' into ai-peekandreveal-x
Browse files Browse the repository at this point in the history
  • Loading branch information
Agetian authored Oct 22, 2024
2 parents 23640bc + 9014e28 commit 5aaaed6
Show file tree
Hide file tree
Showing 21 changed files with 202 additions and 138 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/snapshots-android.yml
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ jobs:
version=$(echo "$apk_file" | grep -oP 'forge-android-\K\d+\.\d+\.\d+-SNAPSHOT' | sed 's/-signed-aligned.apk//')
echo "APK File: $apk_file"
echo "Version: $version"
mv *.apk "forge-android-$version-$d-signed-aligned.apk"
# mv *.apk "forge-android-$version-$d-signed-aligned.apk"
echo "$version-$d" > version.txt
else
Expand Down
20 changes: 17 additions & 3 deletions .github/workflows/snapshots-pc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -59,9 +59,23 @@ jobs:
# If this works just gotta figure out how to append datetime
mv /home/runner/.m2/repository/forge/forge-installer/*/*.jar izpack/
cd izpack
out="$(basename -s .jar *)"
d=$(date +%m-%d)
mv "${out}.jar" "${out}-${d}.jar"
d=$(date +%m.%d)
ls
# rename files
jar_file=$(find . -maxdepth 1 -type f -name '*.jar' -print -quit)
if [ -n "$jar_file" ]; then
outj="$(basename -s .jar *)"
mv "${outj}.jar" "${outj}-${d}.jar"
else
echo "No .jar files found in the specified folder."
fi
bz2_file=$(find . -maxdepth 1 -type f -name '*.bz2' -print -quit)
if [ -n "$bz2_file" ]; then
outb="$(basename -s .tar.bz2 *)"
mv "${outb}.tar.bz2" "${outb}-${d}.tar.bz2"
else
echo "No .bz2 files found in the specified folder."
fi
- name: 📂 Sync files
uses: SamKirkland/FTP-Deploy-Action@v4.3.4
Expand Down
8 changes: 4 additions & 4 deletions forge-core/src/main/java/forge/card/mana/ManaCost.java
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ public final class ManaCost implements Comparable<ManaCost>, Iterable<ManaCostSh

private List<ManaCostShard> shards;
private final int genericCost;
private boolean hasNoCost = true; // lands cost
private final boolean hasNoCost; // lands cost
private String stringValue; // precalculated for toString;

private Float compareWeight = null;
Expand Down Expand Up @@ -93,14 +93,14 @@ private void sealClass(List<ManaCostShard> shards0) {
public ManaCost(final IParserManaCost parser) {
final List<ManaCostShard> shardsTemp = Lists.newArrayList();
while (parser.hasNext()) {
this.hasNoCost = false;
final ManaCostShard shard = parser.next();
if (shard != null && shard != ManaCostShard.GENERIC) {
shardsTemp.add(shard);
} // null is OK - that was generic mana
}
this.genericCost = parser.getTotalGenericCost(); // collect generic mana
// here
int generic = parser.getTotalGenericCost(); // collect generic mana here
this.hasNoCost = generic == -1;
this.genericCost = generic == -1 ? 0 : generic;
sealClass(shardsTemp);
}

Expand Down
10 changes: 6 additions & 4 deletions forge-core/src/main/java/forge/card/mana/ManaCostParser.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package forge.card.mana;

import org.apache.commons.lang3.StringUtils;
import com.google.common.primitives.Ints;


/**
Expand Down Expand Up @@ -54,7 +54,7 @@ public final int getTotalGenericCost() {
*/
@Override
public final boolean hasNext() {
return this.nextToken < this.cost.length && !this.cost[this.nextToken].equals("-1");
return this.nextToken < this.cost.length;
}

/*
Expand All @@ -65,8 +65,10 @@ public final boolean hasNext() {
@Override
public final ManaCostShard next() {
final String unparsed = this.cost[this.nextToken++];
if (StringUtils.isNumeric(unparsed)) {
this.genericCost += Integer.parseInt(unparsed);
// consider negation sign
Integer i = Ints.tryParse(unparsed);
if (i != null) {
this.genericCost += i;
return null;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,10 @@ public boolean hasNext() {
@Override
public int getTotalGenericCost() {
ShardCount c = unpaidShards.get(ManaCostShard.GENERIC);
return c == null ? 0 : c.totalCount;
if (c == null) {
return unpaidShards.isEmpty() ? -1 : 0;
}
return c.totalCount;
}
}

Expand Down
31 changes: 24 additions & 7 deletions forge-gui-android/src/forge/app/Main.java
Original file line number Diff line number Diff line change
Expand Up @@ -215,7 +215,12 @@ private void displayMessage(View previousView, AndroidAdapter adapter, boolean e
TextView text = new TextView(this);
text.setGravity(Gravity.LEFT);
text.setTypeface(Typeface.SERIF);
String SP = Build.VERSION.SDK_INT > Build.VERSION_CODES.Q ? "Files & Media" : "Storage Permission";
String SP = "Storage Permission";
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
SP = "Photos and Videos, Music and Audio Permissions";
} else if (Build.VERSION.SDK_INT > Build.VERSION_CODES.Q) {
SP = "Files & Media Permissions";
}

String title = "Forge needs " + SP + " to run properly...\n" +
"Follow these simple steps:\n\n";
Expand Down Expand Up @@ -407,8 +412,14 @@ private boolean checkPermission() {
int pid = android.os.Process.myPid();
int uid = android.os.Process.myUid();
try {
int result = getBaseContext().checkPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE, pid, uid);
return result == PackageManager.PERMISSION_GRANTED;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
if (getBaseContext().checkPermission(android.Manifest.permission.READ_MEDIA_IMAGES, pid, uid) == PackageManager.PERMISSION_GRANTED)
if (getBaseContext().checkPermission(android.Manifest.permission.READ_MEDIA_AUDIO, pid, uid) == PackageManager.PERMISSION_GRANTED)
return getBaseContext().checkPermission(android.Manifest.permission.READ_MEDIA_VIDEO, pid, uid) == PackageManager.PERMISSION_GRANTED;
return false;
} else {
return getBaseContext().checkPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE, pid, uid) == PackageManager.PERMISSION_GRANTED;
}
} catch (NullPointerException e) {
return false;
}
Expand Down Expand Up @@ -495,9 +506,12 @@ private class AndroidClipboard implements com.badlogic.gdx.utils.Clipboard {

@Override
public boolean hasContents() {
if (cm.getPrimaryClip().getItemCount() > 0) {
ClipData clipData = cm.getPrimaryClip();
if (clipData == null)
return false;
if (clipData.getItemCount() > 0) {
try {
return cm.getPrimaryClip().getItemAt(0).coerceToText(getContext()).length() > 0;
return clipData.getItemAt(0).coerceToText(getContext()).length() > 0;
} catch (Exception ex) {
return false;
}
Expand All @@ -507,9 +521,12 @@ public boolean hasContents() {

@Override
public String getContents() {
if (cm.getPrimaryClip().getItemCount() > 0) {
ClipData clipData = cm.getPrimaryClip();
if (clipData == null)
return "";
if (clipData.getItemCount() > 0) {
try {
String text = cm.getPrimaryClip().getItemAt(0).coerceToText(getContext()).toString();
String text = clipData.getItemAt(0).coerceToText(getContext()).toString();
return Normalizer.normalize(text, Normalizer.Form.NFD);
} catch (Exception ex) {
ex.printStackTrace();
Expand Down
16 changes: 15 additions & 1 deletion forge-gui-android/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,22 @@
<uses-sdk
android:minSdkVersion="26"
android:targetSdkVersion="35" />
<!-- When your app targets Android 11 or higher and it declares the MANAGE_EXTERNAL_STORAGE permission,
Android Studio shows the lint warning. This warning reminds you that the Google Play store has a policy
that limits usage of the permission. -->
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>
<!-- Required only if your app needs to access images or photos
that other apps created. -->
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<!-- Required only if your app needs to access videos
that other apps created. -->
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
<!-- Required only if your app needs to access audio files
that other apps created. -->
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <!-- This one needs Android Runtime Permission for Android 6+ -->
<!-- This one needs Android Runtime Permission for Android 6+ -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
<uses-permission android:name="android.permission.VIBRATE"/>
Expand Down
8 changes: 7 additions & 1 deletion forge-gui-desktop/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,9 @@
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
</manifest>
<manifestEntries>
<Add-Opens>java.desktop/java.beans java.desktop/javax.swing.border java.desktop/javax.swing.event java.desktop/sun.swing java.desktop/java.awt.image java.desktop/java.awt.color java.desktop/sun.awt.image java.desktop/javax.swing java.desktop/java.awt java.base/java.util java.base/java.lang java.base/java.lang.reflect java.base/java.text java.desktop/java.awt.font java.base/jdk.internal.misc java.base/sun.nio.ch java.base/java.nio java.base/java.math java.base/java.util.concurrent java.base/java.net</Add-Opens>
</manifestEntries>
</archive>
</configuration>
</plugin>
Expand Down Expand Up @@ -127,9 +130,12 @@
</descriptorRefs>
<archive>
<manifest>
<mainClass>forge.view.Main</mainClass>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
</manifest>
<manifestEntries>
<Add-Opens>java.desktop/java.beans java.desktop/javax.swing.border java.desktop/javax.swing.event java.desktop/sun.swing java.desktop/java.awt.image java.desktop/java.awt.color java.desktop/sun.awt.image java.desktop/javax.swing java.desktop/java.awt java.base/java.util java.base/java.lang java.base/java.lang.reflect java.base/java.text java.desktop/java.awt.font java.base/jdk.internal.misc java.base/sun.nio.ch java.base/java.nio java.base/java.math java.base/java.util.concurrent java.base/java.net</Add-Opens>
<Main-Class>forge.view.Main</Main-Class>
</manifestEntries>
</archive>
</configuration>
<executions>
Expand Down
54 changes: 8 additions & 46 deletions forge-gui-desktop/src/main/java/forge/view/Main.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
Expand All @@ -23,17 +23,8 @@
import forge.gui.GuiBase;
import forge.gui.card.CardReaderExperiments;
import forge.util.BuildInfo;
import forge.util.JVMOptions;
import io.sentry.Sentry;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JOptionPane;
import java.lang.management.ManagementFactory;
import java.lang.management.RuntimeMXBean;
import java.util.ArrayList;
import java.util.List;

/**
* Main class for Forge's swing application view.
*/
Expand All @@ -42,37 +33,6 @@ public final class Main {
* Main entry point for Forge
*/
public static void main(final String[] args) {
String javaVersion = System.getProperty("java.version");
checkJVMArgs(javaVersion, args);
}
static void checkJVMArgs(String javaVersion, String[] args) {
RuntimeMXBean runtimeMxBean = ManagementFactory.getRuntimeMXBean();
List<String> arguments = runtimeMxBean.getInputArguments();

List<Object> options = new ArrayList<>();
JButton ok = new JButton("OK");
options.add(ok);
JVMOptions.getStringBuilder().append("Java Version: ").append(javaVersion).append("\nArguments: \n");
for (String a : arguments) {
if (a.startsWith("-agent") || a.startsWith("-javaagent"))
continue;
JVMOptions.getStringBuilder().append(a).append("\n");
}
JOptionPane pane = new JOptionPane(JVMOptions.getStringBuilder(), JOptionPane.PLAIN_MESSAGE, JOptionPane.DEFAULT_OPTION, null, options.toArray());
JDialog dlg = pane.createDialog(JOptionPane.getRootFrame(), "Error");
ok.addActionListener(e -> {
dlg.setVisible(false);
System.exit(0);
});
dlg.setResizable(false);

if (!JVMOptions.checkRuntime(arguments)) {
dlg.setVisible(true);
} else {
start(args);
}
}
static void start(final String[] args) {
Sentry.init(options -> {
options.setEnableExternalConfiguration(true);
options.setRelease(BuildInfo.getVersionString());
Expand All @@ -88,7 +48,7 @@ static void start(final String[] args) {

//Turn off the Java 2D system's use of Direct3D to improve rendering speed (particularly when Full Screen)
System.setProperty("sun.java2d.d3d", "false");

//Turn on OpenGl acceleration to improve performance
//System.setProperty("sun.java2d.opengl", "True");

Expand All @@ -110,7 +70,7 @@ static void start(final String[] args) {
// command line startup here
String mode = args[0].toLowerCase();

switch(mode) {
switch (mode) {
case "sim":
SimulateMatch.simulate(args);
break;
Expand All @@ -130,8 +90,9 @@ static void start(final String[] args) {

System.exit(0);
}

@SuppressWarnings("deprecation")
@Override
@Override
protected void finalize() throws Throwable {
try {
ExceptionHandler.unregisterErrorHandling();
Expand All @@ -141,5 +102,6 @@ protected void finalize() throws Throwable {
}

// disallow instantiation
private Main() { }
private Main() {
}
}
3 changes: 2 additions & 1 deletion forge-gui-mobile-dev/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -134,10 +134,11 @@
</descriptorRefs>
<archive>
<manifest>
<mainClass>forge.app.Main</mainClass>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
</manifest>
<manifestEntries>
<Add-Opens>java.desktop/java.beans java.desktop/javax.swing.border java.desktop/javax.swing.event java.desktop/sun.swing java.desktop/java.awt.image java.desktop/java.awt.color java.desktop/sun.awt.image java.desktop/javax.swing java.desktop/java.awt java.base/java.util java.base/java.lang java.base/java.lang.reflect java.base/java.text java.desktop/java.awt.font java.base/jdk.internal.misc java.base/sun.nio.ch java.base/java.nio java.base/java.math java.base/java.util.concurrent java.base/java.net</Add-Opens>
<Main-Class>forge.app.Main</Main-Class>
<SplashScreen-Image>splash/logo.gif</SplashScreen-Image>
</manifestEntries>
</archive>
Expand Down
21 changes: 1 addition & 20 deletions forge-gui-mobile-dev/src/forge/app/Main.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
import forge.interfaces.IDeviceAdapter;
import forge.util.BuildInfo;
import forge.util.FileUtil;
import forge.util.JVMOptions;
import forge.util.OperatingSystem;
import forge.util.RestartUtil;
import org.apache.commons.lang3.tuple.Pair;
Expand All @@ -17,30 +16,12 @@
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.lang.management.ManagementFactory;
import java.lang.management.RuntimeMXBean;
import java.util.ArrayList;
import java.util.List;

public class Main {
private static final String versionString = BuildInfo.getVersionString();
public static void main(String[] args) {
checkJVMArgs(System.getProperty("java.version"));
}

static void checkJVMArgs(String javaVersion) {
RuntimeMXBean runtimeMxBean = ManagementFactory.getRuntimeMXBean();
List<String> arguments = runtimeMxBean.getInputArguments();
JVMOptions.getStringBuilder().append("Java Version: ").append(javaVersion).append("\nArguments: \n");
for (String a : arguments) {
if (a.startsWith("-agent") || a.startsWith("-javaagent"))
continue;
JVMOptions.getStringBuilder().append(a).append("\n");
}
if (!JVMOptions.checkRuntime(arguments)) {
new DialogWindow("Error", JVMOptions.getStringBuilder().toString());
} else
new GameLauncher(versionString);
new GameLauncher(versionString);
}

public static class DesktopAdapter implements IDeviceAdapter {
Expand Down
Loading

0 comments on commit 5aaaed6

Please sign in to comment.