mirror of
https://github.com/Noratrieb/game-wip-dontplay.git
synced 2026-01-17 04:45:02 +01:00
Make tile db edit ui more bearable to use
This commit is contained in:
parent
60616cf3bb
commit
5a225c1402
3 changed files with 65 additions and 35 deletions
|
|
@ -12,14 +12,14 @@ use crate::{
|
||||||
res::Res,
|
res::Res,
|
||||||
stringfmt::LengthDisp,
|
stringfmt::LengthDisp,
|
||||||
texture_atlas::AtlasBundle,
|
texture_atlas::AtlasBundle,
|
||||||
tiles::tiledb_edit_ui::tiledb_edit_ui,
|
tiles::tiledb_edit_ui::TileDbEdit,
|
||||||
};
|
};
|
||||||
|
|
||||||
#[derive(Default, Debug, Inspect)]
|
#[derive(Default, Debug, Inspect)]
|
||||||
pub struct DebugState {
|
pub struct DebugState {
|
||||||
pub panel: bool,
|
pub panel: bool,
|
||||||
pub freecam: bool,
|
pub freecam: bool,
|
||||||
pub tiledb_edit: bool,
|
pub tiledb_edit: TileDbEdit,
|
||||||
pub show_atlas: bool,
|
pub show_atlas: bool,
|
||||||
pub console: Console,
|
pub console: Console,
|
||||||
}
|
}
|
||||||
|
|
@ -120,9 +120,7 @@ pub(crate) fn do_debug_ui(
|
||||||
if debug.panel {
|
if debug.panel {
|
||||||
debug_panel_ui(debug, game, ctx, res, scale);
|
debug_panel_ui(debug, game, ctx, res, scale);
|
||||||
}
|
}
|
||||||
if debug.tiledb_edit {
|
debug.tiledb_edit.ui(ctx, &mut game.tile_db);
|
||||||
tiledb_edit_ui(ctx, &mut game.tile_db);
|
|
||||||
}
|
|
||||||
if debug.console.show {
|
if debug.console.show {
|
||||||
console_ui(ctx, debug, cmd);
|
console_ui(ctx, debug, cmd);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,29 +1,55 @@
|
||||||
use std::fmt::Debug;
|
use std::fmt::Debug;
|
||||||
|
|
||||||
use egui_inspect::Inspect;
|
use egui_inspect::{derive::Inspect, Inspect};
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
graphics::{ScreenSc, ScreenVec},
|
graphics::{ScreenSc, ScreenVec},
|
||||||
math::TILE_SIZE,
|
math::TILE_SIZE,
|
||||||
};
|
};
|
||||||
|
|
||||||
use super::{Bg, Fg, Mid, TileDb, TileDef, TileLayer, DEFAULT_TILE_BB};
|
#[derive(Debug, Default, Inspect)]
|
||||||
|
pub struct TileDbEdit {
|
||||||
pub fn tiledb_edit_ui(ctx: &egui::Context, tile_db: &mut TileDb) {
|
open: bool,
|
||||||
egui::Window::new("Tiledb editor").show(ctx, |ui| {
|
#[opaque]
|
||||||
ui.separator();
|
layer: Layer,
|
||||||
egui::ScrollArea::vertical()
|
|
||||||
.max_height(400.0)
|
|
||||||
.show(ui, |ui| {
|
|
||||||
ui.heading("Bg");
|
|
||||||
db_ui(&mut tile_db.bg, ui);
|
|
||||||
ui.heading("Mid");
|
|
||||||
db_ui(&mut tile_db.mid, ui);
|
|
||||||
ui.heading("Fg");
|
|
||||||
db_ui(&mut tile_db.fg, ui);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
impl TileDbEdit {
|
||||||
|
pub(crate) fn ui(&mut self, ctx: &egui::Context, tile_db: &mut TileDb) {
|
||||||
|
if !self.open {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
egui::Window::new("Tiledb editor").show(ctx, |ui| {
|
||||||
|
ui.horizontal(|ui| {
|
||||||
|
ui.selectable_value(&mut self.layer, Layer::Bg, "Bg");
|
||||||
|
ui.selectable_value(&mut self.layer, Layer::Mid, "Mid");
|
||||||
|
ui.selectable_value(&mut self.layer, Layer::Fg, "Fg");
|
||||||
|
});
|
||||||
|
ui.separator();
|
||||||
|
egui::ScrollArea::vertical()
|
||||||
|
.max_height(400.0)
|
||||||
|
.show(ui, |ui| match self.layer {
|
||||||
|
Layer::Bg => db_ui(&mut tile_db.bg, ui),
|
||||||
|
Layer::Fg => db_ui(&mut tile_db.fg, ui),
|
||||||
|
Layer::Mid => db_ui(&mut tile_db.mid, ui),
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, PartialEq, Eq)]
|
||||||
|
enum Layer {
|
||||||
|
Bg,
|
||||||
|
Fg,
|
||||||
|
Mid,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Default for Layer {
|
||||||
|
fn default() -> Self {
|
||||||
|
Self::Bg
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
use super::{Bg, Fg, Mid, TileDb, TileDef, TileLayer, DEFAULT_TILE_BB};
|
||||||
|
|
||||||
trait SpecialUi {
|
trait SpecialUi {
|
||||||
fn special_ui(&mut self, ui: &mut egui::Ui);
|
fn special_ui(&mut self, ui: &mut egui::Ui);
|
||||||
|
|
@ -33,14 +59,16 @@ impl SpecialUi for TileDef<Mid> {
|
||||||
fn special_ui(&mut self, ui: &mut egui::Ui) {
|
fn special_ui(&mut self, ui: &mut egui::Ui) {
|
||||||
match &mut self.layer.bb {
|
match &mut self.layer.bb {
|
||||||
Some(bb) => {
|
Some(bb) => {
|
||||||
ui.label("x");
|
ui.horizontal(|ui| {
|
||||||
ui.add(egui::DragValue::new(&mut bb.x));
|
ui.label("x");
|
||||||
ui.label("y");
|
ui.add(egui::DragValue::new(&mut bb.x));
|
||||||
ui.add(egui::DragValue::new(&mut bb.y));
|
ui.label("y");
|
||||||
ui.label("w");
|
ui.add(egui::DragValue::new(&mut bb.y));
|
||||||
ui.add(egui::DragValue::new(&mut bb.w));
|
ui.label("w");
|
||||||
ui.label("h");
|
ui.add(egui::DragValue::new(&mut bb.w));
|
||||||
ui.add(egui::DragValue::new(&mut bb.h));
|
ui.label("h");
|
||||||
|
ui.add(egui::DragValue::new(&mut bb.h));
|
||||||
|
});
|
||||||
}
|
}
|
||||||
None => {
|
None => {
|
||||||
if ui.button("Insert bb").clicked() {
|
if ui.button("Insert bb").clicked() {
|
||||||
|
|
@ -48,6 +76,7 @@ impl SpecialUi for TileDef<Mid> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
ui.checkbox(&mut self.layer.platform, "platform");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -66,12 +95,15 @@ where
|
||||||
{
|
{
|
||||||
for (i, def) in db.iter_mut().enumerate() {
|
for (i, def) in db.iter_mut().enumerate() {
|
||||||
ui.label(i.to_string());
|
ui.label(i.to_string());
|
||||||
|
ui.text_edit_singleline(&mut def.graphic_name);
|
||||||
match &mut def.light {
|
match &mut def.light {
|
||||||
Some(light) => {
|
Some(light) => {
|
||||||
ui.label("x");
|
ui.horizontal(|ui| {
|
||||||
ui.add(egui::DragValue::new(&mut light.x));
|
ui.label("x");
|
||||||
ui.label("y");
|
ui.add(egui::DragValue::new(&mut light.x));
|
||||||
ui.add(egui::DragValue::new(&mut light.y));
|
ui.label("y");
|
||||||
|
ui.add(egui::DragValue::new(&mut light.y));
|
||||||
|
});
|
||||||
}
|
}
|
||||||
None => {
|
None => {
|
||||||
if ui.button("Insert light emit").clicked() {
|
if ui.button("Insert light emit").clicked() {
|
||||||
|
|
@ -83,8 +115,8 @@ where
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
def.special_ui(ui);
|
def.special_ui(ui);
|
||||||
|
ui.separator();
|
||||||
}
|
}
|
||||||
ui.separator();
|
|
||||||
if ui.button("Add new default").clicked() {
|
if ui.button("Add new default").clicked() {
|
||||||
db.push(Default::default());
|
db.push(Default::default());
|
||||||
}
|
}
|
||||||
|
|
|
||||||
BIN
tiles.dat
BIN
tiles.dat
Binary file not shown.
Loading…
Add table
Add a link
Reference in a new issue