Skip to content

Commit

Permalink
Bug-fix
Browse files Browse the repository at this point in the history
  • Loading branch information
isHarryh committed Aug 3, 2023
1 parent 7da5bbf commit e54c6ed
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 34 deletions.
9 changes: 4 additions & 5 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,8 @@ out/
tmp*/
temp*/
test*/
*.class
*.config
*.exe
*.jar
*.log
*.zip

# Exclude runtime files
/ArkPetsConfig.json
/models_data.json
24 changes: 18 additions & 6 deletions core/src/cn/harryh/arkpets/ArkPets.java
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ public void create() {
plane.setObjSize(WD_W, WD_H);
plane.setSpeedLimit(config.physic_speed_limit_x, config.physic_speed_limit_y);
ArkConfig.Monitor primaryMonitor = ArkConfig.Monitor.getMonitors()[0];
intiWindow((int)(primaryMonitor.size[0] * 0.1f), (int)(primaryMonitor.size[0] * 0.1f));
initWindow((int)(primaryMonitor.size[0] * 0.1f), (int)(primaryMonitor.size[0] * 0.1f));
// 5.Behavior setup
behavior = Behavior.selectBehavior(cha.anim_list, new Behavior[] {
new BehaviorOperBuild2(config, cha.anim_list),
Expand Down Expand Up @@ -245,20 +245,32 @@ public boolean scrolled(float a, float b) {
private final String APP_TITLE;
public HWND HWND_MINE;

private void intiWindow(int x, int y) {
private void initWindow(int x, int y) {
// Initialize HWnd
if (HWND_MINE == null)
HWND_MINE = User32.INSTANCE.FindWindow(null, APP_TITLE);
refreshMonitorInfo();
HWND_TOPMOST = refreshWindowIdx();
// Make sure ArkPets has been set as foreground window once
for (int i = 0; ; i++) {
if (HWND_MINE.equals(User32.INSTANCE.GetForegroundWindow())) {
Logger.debug("Window", "SetForegroundWindow succeeded" + (i > 0 ? " (retry #" + i + ")" : ""));
break;
} else if (i > 1000) {
Logger.warn("Window", "SetForegroundWindow failed because max retries exceeded (retry #" + (i - 1) + ")");
break;
}
User32.INSTANCE.SetForegroundWindow(HWND_MINE);
}
// Set the initial style of the window
refreshMonitorInfo();
setWindowPos(x, y, true);
setWindowTransparent(false);
plane.changePosition(0, WD_postar.x, - (WD_postar.y + WD_H));
}

public void setWindowTransparent(boolean $transparent) {
Logger.debug("Window", "JNA SetWindowLong returns " +
Integer.toHexString(User32.INSTANCE.SetWindowLong(HWND_MINE, WinUser.GWL_EXSTYLE,
windowLongDefault | ($transparent ? WinUser.WS_EX_TRANSPARENT : 0))));
User32.INSTANCE.SetWindowLong(HWND_MINE, WinUser.GWL_EXSTYLE,
windowLongDefault | ($transparent ? WinUser.WS_EX_TRANSPARENT : 0));
}

private void setWindowAlpha(float $alpha) {
Expand Down
29 changes: 19 additions & 10 deletions core/src/cn/harryh/arkpets/utils/AssetCtrl.java
Original file line number Diff line number Diff line change
Expand Up @@ -208,19 +208,24 @@ public AssetAccessor(JSONObject fileMap) {
try {
if (fileMap != null && fileMap.size() != 0) {
for (String fileType : fileMap.keySet()) {
String oneFile;
JSONArray someFiles;
if ((oneFile = fileMap.getString(fileType)) != null) {
list.add(oneFile);
map.put(fileType, new ArrayList<>(List.of(oneFile)));
} else if ((someFiles = fileMap.getJSONArray(fileType)) != null) {
var temp = someFiles.toJavaList(String.class);
list.addAll(temp);
map.put(fileType, new ArrayList<>(temp));
try {
JSONArray someFiles; // Try to get as array
if ((someFiles = fileMap.getJSONArray(fileType)) != null) {
var temp = someFiles.toJavaList(String.class);
list.addAll(temp);
map.put(fileType, new ArrayList<>(temp));
}
} catch (com.alibaba.fastjson.JSONException | com.alibaba.fastjson2.JSONException ex) {
String oneFile; // Try to get as string
if ((oneFile = fileMap.getString(fileType)) != null) {
list.add(oneFile);
map.put(fileType, new ArrayList<>(List.of(oneFile)));
}
}
}
}
} catch (Exception e) {
Logger.error("AssetCtrl", "Failed to establish an asset accessor, details see below.", e);
list = new ArrayList<>();
map = new HashMap<>();
}
Expand All @@ -235,13 +240,15 @@ public String[] getAllFiles() {
public String[] getAllFilesOf(String fileType) {
if (map.containsKey(fileType))
return map.get(fileType).toArray(new String[0]);
Logger.warn("AssetCtrl", "getAllFilesOf() Method has returned an empty list.");
return new String[0];
}

public String getFirstFileOf(String fileType) {
String[] all = getAllFilesOf(fileType);
if (all != null && all.length > 0)
return all[0];
Logger.warn("AssetCtrl", "getFirstFileOf() Method has returned null.");
return null;
}

Expand Down Expand Up @@ -313,8 +320,10 @@ private static boolean isCheckedAsset(File $assetDir, JSONObject $modelsDataset)
AssetCtrl assetCtrl = getAssetCtrl($assetDir, $modelsDataset);
if (!assetCtrl.getAccessor().isAvailable())
return true; // Skip data-emptied asset (marked as verified)
List<String> existed = Arrays.asList(Objects.requireNonNull($assetDir.list()));
ArrayList<String> existed = new ArrayList<>(List.of(Objects.requireNonNull($assetDir.list())));
existed.replaceAll(String::toLowerCase);
for (String fileName : assetCtrl.getAccessor().getAllFiles()) {
fileName = fileName.toLowerCase();
if (!existed.contains(fileName)) {
Logger.warn("Verifier", "The asset file " + fileName + " (" + $assetDir + ") is missing.");
return false;
Expand Down
15 changes: 2 additions & 13 deletions desktop/src/cn/harryh/arkpets/controllers/Homepage.java
Original file line number Diff line number Diff line change
Expand Up @@ -874,19 +874,8 @@ private void foregroundVerifyModels() {
protected Boolean call() throws Exception {
ArrayList<File> pendingDirs = new ArrayList<>();
JSONObject modelsDatasetData = modelsDatasetFull.getJSONObject("data");
JSONObject modelsDatasetStorageDirectory = modelsDatasetFull.getJSONObject("storageDirectory");
for (String key : modelsDatasetData.keySet()) {
try {
JSONObject value = modelsDatasetData.getJSONObject(key);
JSONObject checksum = Objects.requireNonNull(value.getJSONObject("checksum"));
if (checksum.isEmpty())
continue;
String type = Objects.requireNonNull(value.getString("type"));
String directory = Objects.requireNonNull(modelsDatasetStorageDirectory.getString(type));
pendingDirs.add(new File(directory + File.separator + key));
} catch (NullPointerException ignored) {
}
}
for (AssetCtrl assetCtrl : foundModelAssets)
pendingDirs.add(new File(assetCtrl.getLocation()));

Thread.sleep(100);
boolean flag = false;
Expand Down

0 comments on commit e54c6ed

Please sign in to comment.