Fixed DT1 viewing in MPQ viewer

Fixed issue where DT1 wouldn't draw until palette selected
Created Dt1Info panel
Added back scrollbars without fading
Increased bottom padding for "center" button to be above scroll bars
This commit is contained in:
Collin Smith 2021-07-15 21:11:38 -07:00
parent 9241e3a898
commit ebf0015528
2 changed files with 86 additions and 2 deletions

View File

@ -0,0 +1,51 @@
package com.riiablo.map2;
import com.kotcrab.vis.ui.widget.VisTable;
import com.riiablo.map.DT1;
public class Dt1Info extends VisTable {
DT1 dt1;
VisTable header, tileTable;
public Dt1Info() {}
public Dt1Info setDT1(DT1 dt1) {
if (this.dt1 == dt1) return this;
this.dt1 = dt1;
clear();
header = new VisTable();
header.add("Header:").left().colspan(2).row();
add(header, "tiles: ", dt1.getNumTiles());
tileTable = new VisTable();
VisTable left = new VisTable();
left.add(header).row();
left.add().growY().row();
left.add(tileTable).row();
add(left).growY().spaceRight(8);
return this;
}
private static VisTable add(VisTable table, String label, int value) {
return add(table, label, String.valueOf(value));
}
private static VisTable add(VisTable table, String label, String format, Object... args) {
table.add(label).right();
table.add(String.format(format, args)).left();
table.row();
return table;
}
public void update(int t) {
DT1.Tile tile = dt1.getTile(t);
tileTable.clear();
tileTable.add("Tile:").left().colspan(2).row();
add(tileTable, "width,height: ", "%d,%d", tile.width, tile.height);
}
}

View File

@ -86,6 +86,7 @@ import com.riiablo.codec.DccInfo;
import com.riiablo.codec.Palette; import com.riiablo.codec.Palette;
import com.riiablo.graphics.PaletteIndexedBatch; import com.riiablo.graphics.PaletteIndexedBatch;
import com.riiablo.map.DT1; import com.riiablo.map.DT1;
import com.riiablo.map2.Dt1Info;
import com.riiablo.mpq.widget.CollapsibleVisTable; import com.riiablo.mpq.widget.CollapsibleVisTable;
import com.riiablo.mpq.widget.DirectionActor; import com.riiablo.mpq.widget.DirectionActor;
import com.riiablo.mpq.widget.TabbedPane; import com.riiablo.mpq.widget.TabbedPane;
@ -216,6 +217,9 @@ public class MPQViewer {
CollapsibleVisTable dc6Panel; CollapsibleVisTable dc6Panel;
Dc6Info dc6Info; Dc6Info dc6Info;
CollapsibleVisTable dt1Panel;
Dt1Info dt1Info;
PaletteIndexedBatch batch; PaletteIndexedBatch batch;
ShaderProgram shader; ShaderProgram shader;
ShapeRenderer shapes; ShapeRenderer shapes;
@ -383,8 +387,10 @@ public class MPQViewer {
}}; }};
rendererScroller = new VisScrollPane(renderer = new Renderer()) { rendererScroller = new VisScrollPane(renderer = new Renderer()) {
{ {
setupFadeScrollBars(0, 0); // copy "list" style into "renderer scroller" style
setFadeScrollBars(true); setStyle(new ScrollPaneStyle(VisUI.getSkin().get("list", ScrollPaneStyle.class)));
// setupFadeScrollBars(0, 0);
// setFadeScrollBars(true);
setSmoothScrolling(false); setSmoothScrolling(false);
setFlingTime(0); setFlingTime(0);
setOverscroll(false, false); setOverscroll(false, false);
@ -446,6 +452,7 @@ public class MPQViewer {
VisTable controls = new VisTable(); VisTable controls = new VisTable();
controls.align(Align.bottomLeft); controls.align(Align.bottomLeft);
controls.pad(8); controls.pad(8);
controls.padBottom(controls.getPadBottom() + 18); // this is just a guess
controls.add(new VisTextButton("[ ]") {{ controls.add(new VisTextButton("[ ]") {{
addListener(new ClickListener() { addListener(new ClickListener() {
@Override @Override
@ -549,6 +556,14 @@ public class MPQViewer {
} }
}); });
}}).row(); }}).row();
add(new VisTextButton("7") {{
addListener(new ClickListener() {
@Override
public void clicked(InputEvent event, float x, float y) {
dt1Panel.setCollapsed(!dt1Panel.isCollapsed());
}
});
}}).row();
}}).align(Align.top).space(4); }}).align(Align.top).space(4);
optionsPanel.add(imageControlsPanel = new CollapsibleVisTable() {{ optionsPanel.add(imageControlsPanel = new CollapsibleVisTable() {{
add(imageControls = new TabbedPane() {{ add(imageControls = new TabbedPane() {{
@ -832,6 +847,11 @@ public class MPQViewer {
add(dc6Info = new Dc6Info()).row(); add(dc6Info = new Dc6Info()).row();
add().growY(); add().growY();
}}).growY().space(4); }}).growY().space(4);
optionsPanel.add(dt1Panel = new CollapsibleVisTable() {{
add("DT1:").align(Align.left).row();
add(dt1Info = new Dt1Info()).row();
add().growY();
}}).growY().space(4);
optionsSubpanels = new Array<>(); optionsSubpanels = new Array<>();
optionsSubpanels.add(imageControlsPanel); optionsSubpanels.add(imageControlsPanel);
@ -840,6 +860,7 @@ public class MPQViewer {
optionsSubpanels.add(cofPanel); optionsSubpanels.add(cofPanel);
optionsSubpanels.add(dccPanel); optionsSubpanels.add(dccPanel);
optionsSubpanels.add(dc6Panel); optionsSubpanels.add(dc6Panel);
optionsSubpanels.add(dt1Panel);
for (CollapsibleVisTable o : optionsSubpanels) { for (CollapsibleVisTable o : optionsSubpanels) {
o.setCollapsed(true); o.setCollapsed(true);
} }
@ -1462,7 +1483,9 @@ public class MPQViewer {
} else if (extension.equals("dt1")) { } else if (extension.equals("dt1")) {
imageControlsPanel.setCollapsed(false); imageControlsPanel.setCollapsed(false);
palettePanel.setCollapsed(false); palettePanel.setCollapsed(false);
dt1Panel.setCollapsed(false);
final DT1 dt1 = DT1.loadFromFile(handle); final DT1 dt1 = DT1.loadFromFile(handle);
dt1Info.setDT1(dt1);
dt1.prepareTextures(); dt1.prepareTextures();
renderer.setDrawable(new DelegatingDrawable<TextureRegionDrawable>() { renderer.setDrawable(new DelegatingDrawable<TextureRegionDrawable>() {
{ {
@ -1478,6 +1501,10 @@ public class MPQViewer {
TextureRegionDrawable drawable = new TextureRegionDrawable(); TextureRegionDrawable drawable = new TextureRegionDrawable();
drawable.setRegion(dt1.getTexture(0)); drawable.setRegion(dt1.getTexture(0));
setDelegate(drawable); setDelegate(drawable);
String palette = paletteList.getSelected();
Riiablo.batch.setPalette(palettes.get(palette));
Gdx.app.debug(TAG, "palette set to " + palette);
} }
@Override @Override
@ -1520,6 +1547,7 @@ public class MPQViewer {
int id = (int) slFrameIndex.getValue(); int id = (int) slFrameIndex.getValue();
delegate.setRegion(dt1.getTexture(id)); delegate.setRegion(dt1.getTexture(id));
slFrameIndex.setValue(id); slFrameIndex.setValue(id);
updateInfo();
} else if (actor == paletteList) { } else if (actor == paletteList) {
String palette = paletteList.getSelected(); String palette = paletteList.getSelected();
Riiablo.batch.setPalette(palettes.get(palette)); Riiablo.batch.setPalette(palettes.get(palette));
@ -1527,6 +1555,11 @@ public class MPQViewer {
} }
} }
void updateInfo() {
int id = (int) slFrameIndex.getValue();
dt1Info.update(id);
}
@Override @Override
public void draw(Batch batch, float x, float y, float width, float height) { public void draw(Batch batch, float x, float y, float width, float height) {
PaletteIndexedBatch b = Riiablo.batch; PaletteIndexedBatch b = Riiablo.batch;