Fixed mod structural crash / Fixed input fragment disappearing

This commit is contained in:
Anuken
2019-10-09 17:36:57 -04:00
parent 3a3c5e2304
commit 16eb069717
6 changed files with 16 additions and 9 deletions

View File

@@ -4,12 +4,14 @@ import io.anuke.arc.*;
import io.anuke.arc.assets.loaders.*; import io.anuke.arc.assets.loaders.*;
import io.anuke.arc.collection.*; import io.anuke.arc.collection.*;
import io.anuke.arc.files.*; import io.anuke.arc.files.*;
import io.anuke.arc.util.*;
/** Handles files in a modded context. */ /** Handles files in a modded context. */
public class FileTree implements FileHandleResolver{ public class FileTree implements FileHandleResolver{
private ObjectMap<String, FileHandle> files = new ObjectMap<>(); private ObjectMap<String, FileHandle> files = new ObjectMap<>();
public void addFile(String path, FileHandle f){ public void addFile(String path, FileHandle f){
Log.info("Add " + path);
files.put(path, f); files.put(path, f);
} }

View File

@@ -238,7 +238,6 @@ public class UI implements ApplicationListener, Loadable{
Core.scene.add(menuGroup); Core.scene.add(menuGroup);
Core.scene.add(hudGroup); Core.scene.add(hudGroup);
control.input.getFrag().build(hudGroup);
hudfrag.build(hudGroup); hudfrag.build(hudGroup);
menufrag.build(menuGroup); menufrag.build(menuGroup);
chatfrag.container().build(hudGroup); chatfrag.container().build(hudGroup);

View File

@@ -538,6 +538,8 @@ public abstract class InputHandler implements InputProcessor, GestureListener{
uiGroup.setFillParent(true); uiGroup.setFillParent(true);
ui.hudGroup.addChild(uiGroup); ui.hudGroup.addChild(uiGroup);
buildUI(uiGroup); buildUI(uiGroup);
frag.add();
} }
if(player != null){ if(player != null){

View File

@@ -203,11 +203,14 @@ public class Mods implements Loadable{
private void buildFiles(){ private void buildFiles(){
for(LoadedMod mod : loaded){ for(LoadedMod mod : loaded){
boolean zipFolder = !mod.file.isDirectory() && mod.root.parent() != null;
String parentName = zipFolder ? mod.root.name() : null;
for(FileHandle file : mod.root.list()){ for(FileHandle file : mod.root.list()){
//ignore special folders like bundles or sprites //ignore special folders like bundles or sprites
if(file.isDirectory() && !specialFolders.contains(file.name())){ if(file.isDirectory() && !specialFolders.contains(file.name())){
//TODO calling child/parent on these files will give you gibberish; create wrapper class. //TODO calling child/parent on these files will give you gibberish; create wrapper class.
file.walk(f -> tree.addFile(mod.file.isDirectory() ? f.path().substring(1 + mod.file.path().length()) : f.path(), f)); file.walk(f -> tree.addFile(mod.file.isDirectory() ? f.path().substring(1 + mod.file.path().length()) :
zipFolder ? f.path().substring(parentName.length() + 1) : f.path(), f));
} }
} }

View File

@@ -51,6 +51,7 @@ public class HudFragment extends Fragment{
//menu at top left //menu at top left
parent.fill(cont -> { parent.fill(cont -> {
cont.setName("overlaymarker");
cont.top().left(); cont.top().left();
if(mobile){ if(mobile){

View File

@@ -1,11 +1,12 @@
package io.anuke.mindustry.ui.fragments; package io.anuke.mindustry.ui.fragments;
import io.anuke.arc.scene.Group; import io.anuke.arc.*;
import io.anuke.arc.scene.event.Touchable; import io.anuke.arc.scene.event.*;
import io.anuke.arc.scene.ui.layout.WidgetGroup; import io.anuke.arc.scene.ui.layout.*;
import io.anuke.mindustry.*;
/** Fragment for displaying overlays such as block inventories. */ /** Fragment for displaying overlays such as block inventories. */
public class OverlayFragment extends Fragment{ public class OverlayFragment{
public final BlockInventoryFragment inv; public final BlockInventoryFragment inv;
public final BlockConfigFragment config; public final BlockConfigFragment config;
@@ -17,10 +18,9 @@ public class OverlayFragment extends Fragment{
config = new BlockConfigFragment(); config = new BlockConfigFragment();
} }
@Override public void add(){
public void build(Group parent){
group.setFillParent(true); group.setFillParent(true);
parent.addChild(group); Vars.ui.hudGroup.addChildBefore(Core.scene.find("overlaymarker"), group);
inv.build(group); inv.build(group);
config.build(group); config.build(group);