From fdf1559f090fd88a598a86885e25537364fa90a9 Mon Sep 17 00:00:00 2001 From: = Date: Thu, 10 Jul 2025 00:09:18 -0400 Subject: [PATCH] Tried making magic asset parser. To be contondered. --- tools/asset_assess/asset_assess.ico | Bin 0 -> 1486 bytes tools/asset_assess/asset_assess.pro | 22 ++++++++ tools/asset_assess/main.cpp | 11 ++++ tools/asset_assess/mainwindow.cpp | 83 ++++++++++++++++++++++++++++ tools/asset_assess/mainwindow.h | 36 ++++++++++++ 5 files changed, 152 insertions(+) create mode 100644 tools/asset_assess/asset_assess.ico create mode 100644 tools/asset_assess/asset_assess.pro create mode 100644 tools/asset_assess/main.cpp create mode 100644 tools/asset_assess/mainwindow.cpp create mode 100644 tools/asset_assess/mainwindow.h diff --git a/tools/asset_assess/asset_assess.ico b/tools/asset_assess/asset_assess.ico new file mode 100644 index 0000000000000000000000000000000000000000..68c58cd1077db18572af8d3d5a6ebd61de6509b9 GIT binary patch literal 1486 zcmV;<1u^;n0096206;(h0096X0JsGJ02TlM0EtjeM-2)Z3IG5A4M|8uQUCw|KmY&$ zKnMl^0063Kaozv`1%F9IK~#90?VCMp97PnzpHKKhHcsRYk%G7g2~HFVT9gKXA`2S& z2%5ktT?iO_mx%Uv~tjyTlR8@wyx5aBwOLjRodFH z5e6h^r5{q1)q)m2qYO&WE3K9;)^&z;XR#H&!N-9(#YdE{B)#Y3T6al#Md@|xYpnFL zuBDu|!p9?ViYJwu85J7JN=ex#t!;!})=^@ed2GE&U+d)iCX_x<{!%8C=aoK(P8;c? z?g`fQAg8Tm`dTM{D|d4$HNy+a&nkzN9%rrxx(-u!S+WoPFn8%|o!o0uakzys#GV#6 zi((gbO-lX|TH8_g;wox(1Q-yKeoTuEXh8y&?PF|ECmv&j1X>sJ~ z!%D%z`2x$H6L%vr+$oFnwNCn#cO*zHT~>;`{I&%1_$j43!TD~Mnc+Pfj%`_`kNu4d zz~%z^GB!Kb5kb4F@}}~cqFcwxCyLfmd1k8&=I9D9}X%Choph!tKB8H(YDo#mMFf<)JZUS1nx znfs<;FHl!l_cC?wO?Mo&V;U{fr-Nb{ns+O&D;JeNC1Erii*Y_|=y9cctNcS{O&M1X zC{K_Bytc+N)q9So=suR->#%)Jc}*;z2N=OZgdvH%dqNTxquB-q8WxmMWhmM!zbezp z9x}~q)zLP@dlpi3&n7oOnYQnvFS(Mk)Nr(vVkEevyrm3o-DlQ>&&i`XKghC|Ec7nL zJKjwAjg`cNWY)q^%;7~kHWW4V4yiWm5X&q|{k*pv0WK1-SZSD&p0qS}g}sWQ-Cb{Z z_1Y-Q*y=l3-}A0g@K}l6lpsvSMS(`>M!s@X83-9az-uK-9VQBd!mOF|E;nJZQoAj! zCMpP5MM+<@OwY}+d_O7jnoZB6j<+QeUN@w5+wfR14qXG( zFz9t6H_ABuYWSR8TnaeFaR$kG6h)2p$I z^kuh=<4#|W;>G4RzZ~794_D~ZNLm9pc|DH5E?JLuB_Urr|K8@JgYL3og#YOHMK01s4v3Gw-5{6P6#T=deNLi5R o(ODe(#h&7238qa)I#MJ510sPAg_C``PXGV_07*qoM6N<$f*y#*$^ZZW literal 0 HcmV?d00001 diff --git a/tools/asset_assess/asset_assess.pro b/tools/asset_assess/asset_assess.pro new file mode 100644 index 0000000..cb80a65 --- /dev/null +++ b/tools/asset_assess/asset_assess.pro @@ -0,0 +1,22 @@ +QT += core widgets gui multimedia + +RC_ICONS = asset_assess.ico + +CONFIG += c++17 + +SOURCES += \ + main.cpp \ + mainwindow.cpp + +HEADERS += \ + mainwindow.h + +LIBS += \ + -L$$OUT_PWD/../../libs -lassets + +INCLUDEPATH += \ + $$PWD/../../libs/assets + +DEPENDPATH += \ + $$PWD/../../libs/assets + diff --git a/tools/asset_assess/main.cpp b/tools/asset_assess/main.cpp new file mode 100644 index 0000000..fd3e533 --- /dev/null +++ b/tools/asset_assess/main.cpp @@ -0,0 +1,11 @@ +#include "mainwindow.h" + +#include + +int main(int argc, char *argv[]) +{ + QApplication a(argc, argv); + MainWindow w; + w.show(); + return a.exec(); +} diff --git a/tools/asset_assess/mainwindow.cpp b/tools/asset_assess/mainwindow.cpp new file mode 100644 index 0000000..ca838d0 --- /dev/null +++ b/tools/asset_assess/mainwindow.cpp @@ -0,0 +1,83 @@ +#include "mainwindow.h" +#include "animparts.h" + +#include +#include +#include +#include +#include + +MainWindow::MainWindow(QWidget *parent) + : QMainWindow{parent} { + setWindowTitle("Asset Assess"); + setMinimumSize(250, 150); + + mTextEdit = new QPlainTextEdit(this); + mTextEdit->setAcceptDrops(false); + mTextEdit->setPlaceholderText("Drag .*_raw file here..."); + + setCentralWidget(mTextEdit); +} + +MainWindow::~MainWindow() { + +} + +void MainWindow::LogLine(const QString &aLogText) +{ + if (mTextEdit->toPlainText().isEmpty()) { + mTextEdit->setPlainText(aLogText); + } else { + mTextEdit->setPlainText(mTextEdit->toPlainText() + "\r\n" + aLogText); + } +} + +void MainWindow::dragEnterEvent(QDragEnterEvent *event) { + const QMimeData *mimeData = event->mimeData(); + bool goodDrag = true; + if (mimeData->hasUrls()) { + qDebug() << mimeData->urls(); + } else { + goodDrag = false; + } + if (goodDrag) { + event->acceptProposedAction(); + } +} + +void MainWindow::dragMoveEvent(QDragMoveEvent *event) { + Q_UNUSED(event); +} + +void MainWindow::dragLeaveEvent(QDragLeaveEvent *event) { + Q_UNUSED(event); +} + +void MainWindow::dropEvent(QDropEvent *event) { + const QMimeData *mimeData = event->mimeData(); + if (mimeData->hasUrls()) { + foreach (const QUrl &url, mimeData->urls()) { + const QString fileName = url.toString().split('/').last(); + LogLine(QString("Processing %1").arg(fileName)); + + QFile file(url.toLocalFile()); + if (!file.open(QIODevice::ReadOnly)) { + LogLine(QString("Failed to open %1").arg(fileName)); + continue; + } + LogLine(QString("Opened %1").arg(fileName)); + + QDataStream dataStream(file.readAll()); + dataStream.setByteOrder(QDataStream::LittleEndian); + LogLine(QString("Created data stream")); + + if (fileName.contains(".xanim_raw")) { + LogLine(QString("Opening XANIM raw file")); + + XAnimParts animParts; + dataStream >> animParts; + LogLine(XAnimPartsToString(animParts)); + } + } + } +} diff --git a/tools/asset_assess/mainwindow.h b/tools/asset_assess/mainwindow.h new file mode 100644 index 0000000..26386bf --- /dev/null +++ b/tools/asset_assess/mainwindow.h @@ -0,0 +1,36 @@ +#ifndef MAINWINDOW_H +#define MAINWINDOW_H + +#include +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE +namespace Ui { +class MainWindow; +} +QT_END_NAMESPACE + +class MainWindow : public QMainWindow +{ + Q_OBJECT + +public: + MainWindow(QWidget *parent = nullptr); + ~MainWindow(); + + void LogLine(const QString &aLogText); + +protected: + void dragEnterEvent(QDragEnterEvent *event) override; + void dragMoveEvent(QDragMoveEvent *event) override; + void dragLeaveEvent(QDragLeaveEvent *event) override; + void dropEvent(QDropEvent *event) override; + +private: + Ui::MainWindow *ui; + QPlainTextEdit *mTextEdit; +}; +#endif // MAINWINDOW_H