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