|
@@ -1,9 +1,9 @@
|
|
|
#include "mainwindow.h"
|
|
|
#include "ui_mainwindow.h"
|
|
|
#include "changenamedialog.h"
|
|
|
-#include "collectionwindow.h"
|
|
|
#include "resfiledialog.h"
|
|
|
#include "actionSettingDialog.h"
|
|
|
+#include "statusEffectAnim.h"
|
|
|
#include <QListWidgetItem>
|
|
|
#include <QListWidget>
|
|
|
#include <QLabel>
|
|
@@ -27,14 +27,12 @@ MainWindow::MainWindow(QWidget *parent)
|
|
|
QPixmap pix(":/icon/icon/pic.png");
|
|
|
ui->label_pic->setPixmap(pix.scaled(50,50,Qt::KeepAspectRatio));
|
|
|
this->setAcceptDrops(true);
|
|
|
- ui->tableWidget_animation->setHorizontalHeaderLabels({"名称","资源","时间线","z-Order"});
|
|
|
ui->tableWidget_containerPool->setHorizontalHeaderLabels({"键值","资源名","初始时间线","点击时间线","影响时间线","消失时间线","消失z-Order"});
|
|
|
ui->tableWidget_childElem->setHorizontalHeaderLabels({"名称","使用的池子"});
|
|
|
ui->tableWidget_event->setHorizontalHeaderLabels({"事件名称","是否需要颜色一致","状态变化幅度","特效","根据格子数量消除","触发动作","触发动作设置"});
|
|
|
ui->tabWidget->setCurrentIndex(0);
|
|
|
ui->lineEdit_collectionType->setReadOnly(true);
|
|
|
- ui->widget_dynamic->setLayout(new QFormLayout);
|
|
|
- updateTempRelatedUi();
|
|
|
+// updateTempRelatedUi();
|
|
|
}
|
|
|
|
|
|
MainWindow::~MainWindow()
|
|
@@ -138,11 +136,6 @@ QPushButton* MainWindow::createSetButton()
|
|
|
void MainWindow::updateAnimComboBox(QString changedAnim)
|
|
|
{
|
|
|
ElemPropertyData* elem = elements[ui->listWidget_elem->currentItem()->text()];
|
|
|
- //收集动画界面
|
|
|
- if(ui->listWidget_collectAnim->currentItem() != nullptr){
|
|
|
- int index = ui->listWidget_collectAnim->currentRow();
|
|
|
- if(elem->collAnim[index].anim == changedAnim) ui->comboBox_animation->setCurrentIndex(0);
|
|
|
- }
|
|
|
//状态配置界面
|
|
|
if(ui->listWidget_status->currentItem() != nullptr){
|
|
|
int index = ui->listWidget_status->currentRow();
|
|
@@ -172,6 +165,13 @@ void MainWindow::updateCollAnimComboBox(QString changedAnim)
|
|
|
void MainWindow::setUi(QString elem)
|
|
|
{
|
|
|
std::cout<<"切换成元素"<<qPrintable(elem)<<",刷新界面"<<std::endl;
|
|
|
+ if(firstSelectElem){
|
|
|
+ animUi = new StatusEffectAnim();
|
|
|
+ ui->tabWidget->addTab(animUi,"状态与效果动画");
|
|
|
+ collAnimUi = new CollAnim();
|
|
|
+ ui->tabWidget->addTab(collAnimUi,"收集动画");
|
|
|
+ firstSelectElem = false;
|
|
|
+ }
|
|
|
//基础元素区域的设置
|
|
|
QPixmap pix(DataManager::getInstance()->getIconPath(elem));
|
|
|
ui->label_pic->setPixmap(pix.scaled(50,50,Qt::KeepAspectRatio));
|
|
@@ -183,67 +183,62 @@ void MainWindow::setUi(QString elem)
|
|
|
|
|
|
//TODO:调用各个界面的刷新显示
|
|
|
//设置状态与效果动画表格显示
|
|
|
-
|
|
|
-
|
|
|
- //设置收集动画的显示并聚焦到收集动画列表的最后一个元素
|
|
|
- ui->listWidget_collectAnim->clear();
|
|
|
- for(const auto &i:elem->collAnim){
|
|
|
- ui->listWidget_collectAnim->addItem(i.name);
|
|
|
- }
|
|
|
-// ui->listWidget_collectAnim->item(0)->setSelected(true); // 设置选中
|
|
|
-
|
|
|
- //设置状态配置界面
|
|
|
- ui->listWidget_status->clear();
|
|
|
- for(const auto &i:elem->statusConfig){
|
|
|
- ui->listWidget_status->addItem(i.statusValue);
|
|
|
- }
|
|
|
- //切换元素时状态尚未选中,先清除事件表格内容
|
|
|
- rowCnt = ui->tableWidget_event->rowCount();
|
|
|
- for(int i=0;i<rowCnt;i++){
|
|
|
- ui->tableWidget_event->removeRow(0);
|
|
|
- }
|
|
|
-
|
|
|
- //设置收集动画和状态配置的comboBox
|
|
|
- ui->comboBox_initAnim->clear();
|
|
|
- ui->comboBox_clickAnim->clear();
|
|
|
- ui->comboBox_collectAnimation->clear();
|
|
|
- ui->comboBox_animation->clear();
|
|
|
- ui->comboBox_initAnim->addItem("尚未选择");
|
|
|
- ui->comboBox_clickAnim->addItem("尚未选择");
|
|
|
- ui->comboBox_collectAnimation->addItem("尚未选择");
|
|
|
- ui->comboBox_animation->addItem("尚未选择");
|
|
|
- for(const auto &i:elem->statusEffect){
|
|
|
- ui->comboBox_clickAnim->addItem(i.name);
|
|
|
- ui->comboBox_animation->addItem(i.name);
|
|
|
- ui->comboBox_initAnim->addItem(i.name);
|
|
|
- }
|
|
|
- for(const auto &i:elem->collAnim){
|
|
|
- ui->comboBox_collectAnimation->addItem(i.name);
|
|
|
- }
|
|
|
-
|
|
|
- //设置容器池界面
|
|
|
- ui->listWidget_pool->clear();
|
|
|
- for(const auto &i:elem->container){
|
|
|
- ui->listWidget_pool->addItem(i.poolName);
|
|
|
- }
|
|
|
-
|
|
|
- //切换元素时容器尚未选中,先清除表格内容
|
|
|
- int rowNum = ui->tableWidget_containerPool->rowCount();
|
|
|
- for(int i=0;i<rowNum;i++){
|
|
|
- ui->tableWidget_containerPool->removeRow(0);
|
|
|
- }
|
|
|
-
|
|
|
- //设置子元素界面
|
|
|
- rowCnt = ui->tableWidget_childElem->rowCount();
|
|
|
- for(int i=0;i<rowCnt;i++){
|
|
|
- ui->tableWidget_childElem->removeRow(0);
|
|
|
- }
|
|
|
- for(const auto &i:elem->childElem){
|
|
|
- int rowNum = ui->tableWidget_childElem->rowCount();
|
|
|
- ui->tableWidget_childElem->insertRow(rowNum);
|
|
|
- ui->tableWidget_childElem->setItem(rowNum,0,new QTableWidgetItem(i.name));
|
|
|
- ui->tableWidget_childElem->setCellWidget(rowNum,1,createPoolBox(i.container));
|
|
|
- }
|
|
|
+ animUi->setUi(elem);
|
|
|
+ collAnimUi->setUi(elem);
|
|
|
+
|
|
|
+
|
|
|
+// //设置状态配置界面
|
|
|
+// ui->listWidget_status->clear();
|
|
|
+// for(const auto &i:elem->statusConfig){
|
|
|
+// ui->listWidget_status->addItem(i.statusValue);
|
|
|
+// }
|
|
|
+// //切换元素时状态尚未选中,先清除事件表格内容
|
|
|
+// rowCnt = ui->tableWidget_event->rowCount();
|
|
|
+// for(int i=0;i<rowCnt;i++){
|
|
|
+// ui->tableWidget_event->removeRow(0);
|
|
|
+// }
|
|
|
+
|
|
|
+// //设置收集动画和状态配置的comboBox
|
|
|
+// ui->comboBox_initAnim->clear();
|
|
|
+// ui->comboBox_clickAnim->clear();
|
|
|
+// ui->comboBox_collectAnimation->clear();
|
|
|
+// ui->comboBox_animation->clear();
|
|
|
+// ui->comboBox_initAnim->addItem("尚未选择");
|
|
|
+// ui->comboBox_clickAnim->addItem("尚未选择");
|
|
|
+// ui->comboBox_collectAnimation->addItem("尚未选择");
|
|
|
+// ui->comboBox_animation->addItem("尚未选择");
|
|
|
+// for(const auto &i:elem->statusEffect){
|
|
|
+// ui->comboBox_clickAnim->addItem(i.name);
|
|
|
+// ui->comboBox_animation->addItem(i.name);
|
|
|
+// ui->comboBox_initAnim->addItem(i.name);
|
|
|
+// }
|
|
|
+// for(const auto &i:elem->collAnim){
|
|
|
+// ui->comboBox_collectAnimation->addItem(i.name);
|
|
|
+// }
|
|
|
+
|
|
|
+// //设置容器池界面
|
|
|
+// ui->listWidget_pool->clear();
|
|
|
+// for(const auto &i:elem->container){
|
|
|
+// ui->listWidget_pool->addItem(i.poolName);
|
|
|
+// }
|
|
|
+
|
|
|
+// //切换元素时容器尚未选中,先清除表格内容
|
|
|
+// int rowNum = ui->tableWidget_containerPool->rowCount();
|
|
|
+// for(int i=0;i<rowNum;i++){
|
|
|
+// ui->tableWidget_containerPool->removeRow(0);
|
|
|
+// }
|
|
|
+
|
|
|
+// //设置子元素界面
|
|
|
+// rowCnt = ui->tableWidget_childElem->rowCount();
|
|
|
+// for(int i=0;i<rowCnt;i++){
|
|
|
+// ui->tableWidget_childElem->removeRow(0);
|
|
|
+// }
|
|
|
+// for(const auto &i:elem->childElem){
|
|
|
+// int rowNum = ui->tableWidget_childElem->rowCount();
|
|
|
+// ui->tableWidget_childElem->insertRow(rowNum);
|
|
|
+// ui->tableWidget_childElem->setItem(rowNum,0,new QTableWidgetItem(i.name));
|
|
|
+// ui->tableWidget_childElem->setCellWidget(rowNum,1,createPoolBox(i.container));
|
|
|
+// }
|
|
|
}
|
|
|
|
|
|
void MainWindow::on_pushButton_chooseFile_clicked()
|
|
@@ -350,48 +345,6 @@ void MainWindow::on_listWidget_elem_currentItemChanged(QListWidgetItem *current,
|
|
|
setUi(current->text());
|
|
|
}
|
|
|
|
|
|
-//替换资源文件
|
|
|
-void MainWindow::on_tableWidget_animation_cellDoubleClicked(int row, int column)
|
|
|
-{
|
|
|
- if(ui->listWidget_elem->currentItem()==nullptr) return;
|
|
|
- ElemPropertyData* elem = elements[ui->listWidget_elem->currentItem()->text()];
|
|
|
- //表格内容修改flag
|
|
|
- animTableItemChanged = true;
|
|
|
- if(column == 1){
|
|
|
- ResFileDialog res;
|
|
|
- res.setModal(true);
|
|
|
- res.exec();
|
|
|
- QString fileName = res.getResName();
|
|
|
- if(!fileName.isEmpty()){
|
|
|
- QTableWidgetItem* res = new QTableWidgetItem(getFileName(fileName));
|
|
|
- // 此单元格不可编辑
|
|
|
- res->setFlags(res->flags() & ~Qt::ItemIsEditable);
|
|
|
- ui->tableWidget_animation->setItem(row,1,res);
|
|
|
- QComboBox* timeLine = createTimelineBox("",fileName,TimelineType::Animation);
|
|
|
- ui->tableWidget_animation->setCellWidget(row,column+1,timeLine);
|
|
|
- //保存当前数据
|
|
|
- elem->statusEffect[row].res = fileName;
|
|
|
- }
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-///动画区时间线数据发生改变
|
|
|
-void MainWindow::onTimelineTextChanged(const QString &arg1)
|
|
|
-{
|
|
|
- if(ui->listWidget_elem->currentItem() == nullptr) return;
|
|
|
- //获取时间线列表所在位置
|
|
|
- std::cout<<"current timeline is:"<<qPrintable(arg1)<<std::endl;
|
|
|
- QComboBox *timeline = dynamic_cast<QComboBox*>(this->sender());
|
|
|
- int x = timeline->frameGeometry().x();
|
|
|
- int y = timeline->frameGeometry().y();
|
|
|
- QModelIndex index = ui->tableWidget_animation->indexAt(QPoint(x,y));
|
|
|
- int row = index.row();
|
|
|
- //修改数据
|
|
|
- ElemPropertyData* elem = elements[ui->listWidget_elem->currentItem()->text()];
|
|
|
- elem->statusEffect[row].timeline = timeline->currentText();
|
|
|
- std::cout<<"row:"<<row<<std::endl;
|
|
|
-}
|
|
|
-
|
|
|
///容器池区时间线数据发生改变
|
|
|
void MainWindow::onPoolTimelineTextChanged(const QString &arg1)
|
|
|
{
|
|
@@ -519,274 +472,6 @@ void MainWindow::createSetWindow(QString actionName,int row)
|
|
|
if(!setDialog.dataMap.empty()) dataMap = setDialog.dataMap;
|
|
|
}
|
|
|
|
|
|
-void MainWindow::on_pushButton_addAnimation_clicked()
|
|
|
-{
|
|
|
- if(ui->listWidget_elem->currentItem()==nullptr) return;
|
|
|
- int rowNum = ui->tableWidget_animation->rowCount();
|
|
|
- ui->tableWidget_animation->insertRow(rowNum);
|
|
|
- QString elemName = ui->listWidget_elem->currentItem()->text();
|
|
|
- ElemPropertyData* elem = elements[elemName];
|
|
|
- QString animName = "anim";
|
|
|
- int id = 1;
|
|
|
- while(1){
|
|
|
- if(elem->isSingleAnimName(animName)){
|
|
|
- break;
|
|
|
- }
|
|
|
- animName = "anim" + QString::number(id++);
|
|
|
- }
|
|
|
- ui->tableWidget_animation->setItem(rowNum,0,new QTableWidgetItem(animName));
|
|
|
- QTableWidgetItem* res = new QTableWidgetItem("双击添加资源文件");
|
|
|
- // 此单元格不可编辑
|
|
|
- res->setFlags(res->flags() & ~Qt::ItemIsEditable);
|
|
|
- ui->tableWidget_animation->setItem(rowNum,1,res);
|
|
|
- ui->tableWidget_animation->setCellWidget(rowNum,2,createBox("",{}));
|
|
|
- ui->tableWidget_animation->setItem(rowNum,3,new QTableWidgetItem("0"));
|
|
|
- elem->statusEffect.push_back(ElemPropertyData::StatusEffect(animName));
|
|
|
- //更新与动画相关的下拉选项
|
|
|
- ui->comboBox_initAnim->addItem(animName);
|
|
|
- ui->comboBox_clickAnim->addItem(animName);
|
|
|
- ui->comboBox_animation->addItem(animName);
|
|
|
- //更新状态配置表格当前状态的特效下拉选项
|
|
|
- if(ui->listWidget_status->currentItem() != nullptr){
|
|
|
- int rowNum = ui->tableWidget_event->rowCount();
|
|
|
- for(int i=0;i<rowNum;i++){
|
|
|
- QComboBox *effect = qobject_cast<QComboBox*>(ui->tableWidget_event->cellWidget(i,3));
|
|
|
- effect->addItem(animName);
|
|
|
- }
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
-void MainWindow::on_pushButton_delAnimation_clicked()
|
|
|
-{
|
|
|
- if(ui->listWidget_elem->currentItem() == nullptr || ui->tableWidget_animation->currentRow() == -1) return;
|
|
|
- QMessageBox::StandardButton reply = QMessageBox::question(this,"删除动画","确定要删除此动画吗?");
|
|
|
- if(reply == QMessageBox::Yes){
|
|
|
- int curRow = ui->tableWidget_animation->currentRow();
|
|
|
- QString animName = ui->tableWidget_animation->item(curRow,0)->text();
|
|
|
- QVector<ElemPropertyData::StatusEffect> &animVec = elements[ui->listWidget_elem->currentItem()->text()]->statusEffect;
|
|
|
- animVec.remove(curRow);
|
|
|
- ui->tableWidget_animation->removeRow(curRow);
|
|
|
- //更新动画相关的下拉选项
|
|
|
- updateAnimComboBox(animName);
|
|
|
- ui->comboBox_initAnim->removeItem(ui->comboBox_initAnim->findText(animName));
|
|
|
- ui->comboBox_clickAnim->removeItem(ui->comboBox_clickAnim->findText(animName));
|
|
|
- ui->comboBox_animation->removeItem(ui->comboBox_animation->findText(animName));
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-void MainWindow::on_tableWidget_animation_itemChanged(QTableWidgetItem *item)
|
|
|
-{
|
|
|
- if(!animTableItemChanged) return;
|
|
|
- animTableItemChanged = false;
|
|
|
- int column = item->column();
|
|
|
- int row = item->row();
|
|
|
- ElemPropertyData* elem = elements[ui->listWidget_elem->currentItem()->text()];
|
|
|
- QVector<ElemPropertyData::StatusEffect> &animVec = elem->statusEffect;
|
|
|
- if(column == 0){
|
|
|
- QString newName = ui->tableWidget_animation->item(row,0)->text();
|
|
|
- if(!elem->isSingleAnimName(newName)){
|
|
|
- QMessageBox::critical(this,"警告","该动画名已存在!");
|
|
|
- ui->tableWidget_animation->item(row,0)->setText(animVec[row].name);
|
|
|
- return;
|
|
|
- }
|
|
|
- std::cout<<"名字发生改变,新名字:"<<qPrintable(newName)<<std::endl;
|
|
|
- //更新动画相关的下拉选项
|
|
|
- updateAnimComboBox(animVec[row].name);
|
|
|
- ui->comboBox_initAnim->removeItem(ui->comboBox_initAnim->findText(animVec[row].name));
|
|
|
- ui->comboBox_clickAnim->removeItem(ui->comboBox_clickAnim->findText(animVec[row].name));
|
|
|
- ui->comboBox_animation->removeItem(ui->comboBox_animation->findText(animVec[row].name));
|
|
|
- ui->comboBox_initAnim->addItem(newName);
|
|
|
- ui->comboBox_clickAnim->addItem(newName);
|
|
|
- ui->comboBox_animation->addItem(newName);
|
|
|
- animVec[row].name = newName;
|
|
|
- }
|
|
|
- //资源名发生修改
|
|
|
- else if(column == 1){
|
|
|
- std::cout<<"动画资源发生改变,新资源名:"<<qPrintable(ui->tableWidget_animation->item(row,1)->text())<<std::endl;
|
|
|
- }
|
|
|
- else{
|
|
|
- bool ok;double a = ui->tableWidget_animation->item(row,3)->text().toDouble(&ok);
|
|
|
- int zOrder = ui->tableWidget_animation->item(row,3)->text().toInt();
|
|
|
- if(!ok || zOrder<0 || zOrder>100000){
|
|
|
- QMessageBox::critical(this,"警告","z-Order值超出范围!");
|
|
|
- ui->tableWidget_animation->item(row,3)->setText(animVec[row].zOrder);
|
|
|
- return;
|
|
|
- }
|
|
|
- std::cout<<"z-Order值发生改变,新值为:"<<zOrder<<std::endl;
|
|
|
- animVec[row].zOrder = item->text();
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-void MainWindow::on_pushButton_addCollectAnim_clicked()
|
|
|
-{
|
|
|
- if(ui->listWidget_elem->currentItem() == nullptr) return;
|
|
|
- QString collAnimName = "collAnim";
|
|
|
- ElemPropertyData* elem = elements[ui->listWidget_elem->currentItem()->text()];
|
|
|
- int id = 1;
|
|
|
- while(1){
|
|
|
- if(elem->getCollAnimIndex(collAnimName) == -1){
|
|
|
- break;
|
|
|
- }
|
|
|
- collAnimName = "collAnim" + QString::number(id++);
|
|
|
- }
|
|
|
- ui->listWidget_collectAnim->addItem(new QListWidgetItem(collAnimName));
|
|
|
- ElemPropertyData::CollAnim collAnim(collAnimName);
|
|
|
- elem->collAnim.push_back(collAnim);
|
|
|
- ui->comboBox_collectAnimation->addItem(collAnimName);
|
|
|
-// ui->listWidget_collectAnim->item(ui->listWidget_collectAnim->count() - 1)->setSelected(true); // 设置选中
|
|
|
-// ui->listWidget_collectAnim->scrollToBottom();
|
|
|
-}
|
|
|
-
|
|
|
-void MainWindow::on_pushButton_delCollectAnim_clicked()
|
|
|
-{
|
|
|
- if(ui->listWidget_elem->currentItem() == nullptr || ui->listWidget_collectAnim->currentItem() == nullptr) return;
|
|
|
- QMessageBox::StandardButton reply = QMessageBox::question(this,"删除收集动画","确定要删除此收集动画吗?");
|
|
|
- ElemPropertyData* elem = elements[ui->listWidget_elem->currentItem()->text()];
|
|
|
- if(reply == QMessageBox::Yes){
|
|
|
- QString delName = ui->listWidget_collectAnim->currentItem()->text();
|
|
|
- QVector<ElemPropertyData::CollAnim> &collAnimVec = elem->collAnim;
|
|
|
- collAnimVec.remove(ui->listWidget_collectAnim->currentRow());
|
|
|
- delete ui->listWidget_collectAnim->takeItem(ui->listWidget_collectAnim->currentRow());
|
|
|
- updateCollAnimComboBox(delName);
|
|
|
- ui->comboBox_collectAnimation->removeItem(ui->comboBox_collectAnimation->findText(delName));
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
-void MainWindow::on_listWidget_collectAnim_itemDoubleClicked(QListWidgetItem *item)
|
|
|
-{
|
|
|
- ChangeNameDialog newName;
|
|
|
- newName.setModal(true);
|
|
|
- newName.exec();
|
|
|
- ElemPropertyData* elem = elements[ui->listWidget_elem->currentItem()->text()];
|
|
|
- QString name = newName.getNewName();
|
|
|
- if(!name.isEmpty()){
|
|
|
- if(elem->getCollAnimIndex(name) != -1){
|
|
|
- QMessageBox::critical(this,"警告","该收集动画名已存在!");
|
|
|
- return;
|
|
|
- }
|
|
|
- updateCollAnimComboBox(item->text());
|
|
|
- ui->comboBox_collectAnimation->removeItem(ui->comboBox_collectAnimation->findText(item->text()));
|
|
|
- ui->comboBox_collectAnimation->addItem(name);
|
|
|
- elem->collAnim[elem->getCollAnimIndex(item->text())].name = name;
|
|
|
- item->setText(name);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-void MainWindow::on_comboBox_animationType_currentTextChanged(const QString &arg1)
|
|
|
-{
|
|
|
- if(ui->listWidget_elem->currentItem() == nullptr || ui->listWidget_collectAnim->currentItem() == nullptr || isSetUi) return;
|
|
|
- ElemPropertyData* elem = elements[ui->listWidget_elem->currentItem()->text()];
|
|
|
- int index = ui->listWidget_collectAnim->currentRow();
|
|
|
- elem->collAnim[index].type = arg1;
|
|
|
- std::cout<<"收集动画第"<<index<<"行动画类型改变:"<<qPrintable(arg1)<<std::endl;
|
|
|
- elem->collAnim[index].dataMap.clear();
|
|
|
- setCollAnimWidget();
|
|
|
-}
|
|
|
-
|
|
|
-///设置收集动画动态界面
|
|
|
-void MainWindow::setCollAnimWidget()
|
|
|
-{
|
|
|
- QString animType = ui->comboBox_animationType->currentText();
|
|
|
- QFormLayout* formlayout = dynamic_cast<QFormLayout*>(ui->widget_dynamic->layout());
|
|
|
- int rowCout = formlayout->rowCount();
|
|
|
- for(int i=0;i<rowCout;i++) formlayout->removeRow(0);
|
|
|
- if(animType == "尚未选择") return;
|
|
|
- int index = jsonTemp->getTemplateIndex("collAnimTemp",animType);
|
|
|
- if(index == -1) {
|
|
|
- std::cout<<"未找到"<<qPrintable(animType)<<"收集动画类型对应模板"<<std::endl;
|
|
|
- return;
|
|
|
- }
|
|
|
- QVector<ReadJsonSrc::Template> tempVec = jsonTemp->templateMap["collAnimTemp"];
|
|
|
- QVector<ReadJsonSrc::Fields> fields = tempVec[index].fields;
|
|
|
- ElemPropertyData* elem = elements[ui->listWidget_elem->currentItem()->text()];
|
|
|
- QMap<QString,QString> &data = elem->collAnim[ui->listWidget_collectAnim->currentRow()].dataMap;
|
|
|
- for(const auto &i:fields){
|
|
|
- if(i.type == "list"){
|
|
|
- QStringList list;
|
|
|
- if(i.src == "animations"){
|
|
|
- for(const auto &anim:elem->statusEffect) list.push_back(anim.name);
|
|
|
- }
|
|
|
- QString val;
|
|
|
- if(data.find(i.name) != data.end()) val = data[i.name];
|
|
|
- else val = i.defaultVal;
|
|
|
- QComboBox* combo = createBox(val,list);
|
|
|
- connect(combo,SIGNAL(currentTextChanged(QString)),this,SLOT(onComboBoxTextChanged(QString)));
|
|
|
- formlayout->addRow(i.name,combo);
|
|
|
- data[i.name] = val;
|
|
|
- }
|
|
|
- else if(i.type == "input"){
|
|
|
- QString val;
|
|
|
- if(data.find(i.name) != data.end()) val = data[i.name];
|
|
|
- else val = i.defaultVal;
|
|
|
- QLineEdit* edit = new QLineEdit(val);
|
|
|
- connect(edit,SIGNAL(editingFinished()),this,SLOT(onLineEditTextChanged()));
|
|
|
- formlayout->addRow(i.name,edit);
|
|
|
- data[i.name] = val;
|
|
|
- }
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-///收集动画动态界面下拉选项数据变化时
|
|
|
-void MainWindow::onComboBoxTextChanged(QString arg)
|
|
|
-{
|
|
|
- QComboBox *box = dynamic_cast<QComboBox*>(this->sender());
|
|
|
- QFormLayout* formlayout = dynamic_cast<QFormLayout*>(ui->widget_dynamic->layout());
|
|
|
- QLabel *label = dynamic_cast<QLabel*>(formlayout->labelForField(box));
|
|
|
- std::cout<<qPrintable(label->text())<<": "<<qPrintable(arg)<<std::endl;
|
|
|
- ElemPropertyData* elem = elements[ui->listWidget_elem->currentItem()->text()];
|
|
|
- elem->collAnim[ui->listWidget_collectAnim->currentRow()].dataMap[label->text()] = arg;
|
|
|
-}
|
|
|
-
|
|
|
-///收集动画动态界面单行编辑数据变化时
|
|
|
-void MainWindow::onLineEditTextChanged()
|
|
|
-{
|
|
|
- QLineEdit *edit = dynamic_cast<QLineEdit*>(this->sender());
|
|
|
- QFormLayout* formlayout = dynamic_cast<QFormLayout*>(ui->widget_dynamic->layout());
|
|
|
- QLabel *label = dynamic_cast<QLabel*>(formlayout->labelForField(edit));
|
|
|
- std::cout<<qPrintable(label->text())<<": "<<qPrintable(edit->text())<<std::endl;
|
|
|
- ElemPropertyData* elem = elements[ui->listWidget_elem->currentItem()->text()];
|
|
|
- elem->collAnim[ui->listWidget_collectAnim->currentRow()].dataMap[label->text()] = edit->text();
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
-void MainWindow::on_comboBox_animation_currentTextChanged(const QString &arg1)
|
|
|
-{
|
|
|
- if(ui->listWidget_elem->currentItem() == nullptr || ui->listWidget_collectAnim->currentItem() == nullptr || isSetUi) return;
|
|
|
- ElemPropertyData* elem = elements[ui->listWidget_elem->currentItem()->text()];
|
|
|
- int index = ui->listWidget_collectAnim->currentRow();
|
|
|
- elem->collAnim[index].anim = arg1;
|
|
|
-}
|
|
|
-
|
|
|
-//设置收集动画显示
|
|
|
-void MainWindow::setCollectAnimUi(QString collectAnimName)
|
|
|
-{
|
|
|
- if(ui->listWidget_collectAnim->currentItem() != nullptr){
|
|
|
- isSetUi = true;
|
|
|
- ElemPropertyData* elem = elements[ui->listWidget_elem->currentItem()->text()];
|
|
|
- ElemPropertyData::CollAnim collAnimData = elem->collAnim[elem->getCollAnimIndex(collectAnimName)];
|
|
|
- int typeIndex = ui->comboBox_animationType->findText(collAnimData.type);
|
|
|
- if(typeIndex == -1){
|
|
|
- typeIndex = 0;
|
|
|
- elem->collAnim[ui->listWidget_collectAnim->currentRow()].type = "尚未选择";
|
|
|
- }
|
|
|
- ui->comboBox_animationType->setCurrentIndex(typeIndex);
|
|
|
- setCollAnimWidget();
|
|
|
- int index = ui->comboBox_animation->findText(collAnimData.anim);
|
|
|
- if(index == -1) index = 0;
|
|
|
- ui->comboBox_animation->setCurrentIndex(index);
|
|
|
- isSetUi = false;
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-void MainWindow::on_listWidget_collectAnim_currentItemChanged(QListWidgetItem *current, QListWidgetItem *previous)
|
|
|
-{
|
|
|
- //TODO: 或许需要另外保存当前界面的数据
|
|
|
- if(current != nullptr){
|
|
|
- setCollectAnimUi(current->text());
|
|
|
- }
|
|
|
-}
|
|
|
|
|
|
//生成模板并更新状态配置的数据
|
|
|
void MainWindow::on_pushButton_genTemp_clicked()
|
|
@@ -1007,7 +692,7 @@ void MainWindow::setPoolUi(QString poolName)
|
|
|
int rowNum = ui->tableWidget_containerPool->rowCount();
|
|
|
ui->tableWidget_containerPool->insertRow(rowNum);
|
|
|
ui->tableWidget_containerPool->setItem(rowNum,0,new QTableWidgetItem(i.key));
|
|
|
- QTableWidgetItem* res = new QTableWidgetItem(getFileName(i.res));
|
|
|
+ QTableWidgetItem* res = new QTableWidgetItem(i.res);
|
|
|
// 此单元格不可编辑
|
|
|
res->setFlags(res->flags() & ~Qt::ItemIsEditable);
|
|
|
ui->tableWidget_containerPool->setItem(rowNum,1,res);
|
|
@@ -1031,7 +716,7 @@ void MainWindow::on_tableWidget_containerPool_cellDoubleClicked(int row, int col
|
|
|
res.exec();
|
|
|
QString fileName = res.getResName();
|
|
|
if(!fileName.isEmpty()){
|
|
|
- ui->tableWidget_containerPool->setItem(row,column,new QTableWidgetItem(getFileName(fileName)));
|
|
|
+ ui->tableWidget_containerPool->setItem(row,column,new QTableWidgetItem(fileName));
|
|
|
ElemPropertyData* elem = elements[ui->listWidget_elem->currentItem()->text()];
|
|
|
int index = ui->listWidget_pool->currentRow();
|
|
|
elem->container[index].table[row].res = fileName;
|
|
@@ -1343,71 +1028,67 @@ void MainWindow::on_comboBox_collectAnimation_currentTextChanged(const QString &
|
|
|
///模板更新后更新与模板配置相关的界面显示
|
|
|
void MainWindow::updateTempRelatedUi()
|
|
|
{
|
|
|
- isSetUi = true;
|
|
|
- //收集动画
|
|
|
- ui->comboBox_animationType->clear();
|
|
|
- ui->comboBox_animationType->addItem("尚未选择");
|
|
|
- for(const auto &i:jsonTemp->templateMap["collAnimTemp"]) ui->comboBox_animationType->addItem(i.name);
|
|
|
- //状态配置
|
|
|
- int rowNum = ui->tableWidget_event->rowCount();
|
|
|
- for(int i=0;i<rowNum;i++){
|
|
|
- //事件名称配置
|
|
|
- ui->tableWidget_event->setCellWidget(i,0,createEventBox("尚未选择"));
|
|
|
- ui->tableWidget_event->setCellWidget(i,5,createTriggerAction("尚未选择"));
|
|
|
- }
|
|
|
- //容器池
|
|
|
- ui->comboBox_container->clear();
|
|
|
- ui->comboBox_container->addItem("尚未选择");
|
|
|
- for(const auto &i:jsonTemp->templateMap["poolTemp"]) ui->comboBox_container->addItem(i.name);
|
|
|
- int animIndex = 0,poolIndex = 0;
|
|
|
-
|
|
|
- //若当前界面选择的选项没有被改变,仍然保持当前选项
|
|
|
- if(ui->listWidget_elem->currentItem() != nullptr){
|
|
|
- ElemPropertyData* elem = elements[ui->listWidget_elem->currentItem()->text()];
|
|
|
- //收集动画
|
|
|
- if(ui->listWidget_collectAnim->currentItem() != nullptr) {
|
|
|
- int index = ui->listWidget_collectAnim->currentRow();
|
|
|
- std::cout<<"当前选择的收集动画类型:"<<qPrintable(elem->collAnim[index].type)<<std::endl;
|
|
|
- animIndex = ui->comboBox_animationType->findText(elem->collAnim[index].type);
|
|
|
- if(animIndex == -1){
|
|
|
- animIndex = 0;
|
|
|
- elem->collAnim[ui->listWidget_collectAnim->currentRow()].type = "尚未选择";
|
|
|
- }
|
|
|
- setCollAnimWidget();
|
|
|
- }
|
|
|
- //容器池
|
|
|
- if(ui->listWidget_pool->currentItem() != nullptr){
|
|
|
- int index = ui->listWidget_pool->currentRow();
|
|
|
- std::cout<<"当前选择的容器类型:"<<qPrintable(elem->container[index].type)<<std::endl;
|
|
|
- poolIndex = ui->comboBox_container->findText(elem->container[index].type);
|
|
|
- if(poolIndex == -1) poolIndex = 0;
|
|
|
- }
|
|
|
- //事件配置
|
|
|
- if(ui->listWidget_status->currentItem() != nullptr){
|
|
|
- int index = ui->listWidget_status->currentRow();
|
|
|
- int rowNum = ui->tableWidget_event->rowCount();
|
|
|
- for(int i=0;i<rowNum;i++){
|
|
|
- //事件配置
|
|
|
- QComboBox* nameBox = dynamic_cast<QComboBox*>(ui->tableWidget_event->cellWidget(i,0));
|
|
|
- QComboBox* actionBox = dynamic_cast<QComboBox*>(ui->tableWidget_event->cellWidget(i,5));
|
|
|
- int eindex = nameBox->findText(elem->statusConfig[index].eventConfig[i].name);
|
|
|
- if(eindex != -1) nameBox->setCurrentIndex(eindex);
|
|
|
- std::cout<<"当前触发动作:"<<qPrintable(elem->statusConfig[index].eventConfig[i].triggerAction)<<std::endl;
|
|
|
- int aindex = actionBox->findText(elem->statusConfig[index].eventConfig[i].triggerAction);
|
|
|
- if(aindex != -1) actionBox->setCurrentIndex(aindex);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- ui->comboBox_animationType->setCurrentIndex(animIndex);
|
|
|
- ui->comboBox_container->setCurrentIndex(poolIndex);
|
|
|
- isSetUi = false;
|
|
|
+ //重新设置收集动画界面
|
|
|
+ collAnimUi->setCollectAnimUi();
|
|
|
+
|
|
|
+// //状态配置
|
|
|
+// int rowNum = ui->tableWidget_event->rowCount();
|
|
|
+// for(int i=0;i<rowNum;i++){
|
|
|
+// //事件名称配置
|
|
|
+// ui->tableWidget_event->setCellWidget(i,0,createEventBox("尚未选择"));
|
|
|
+// ui->tableWidget_event->setCellWidget(i,5,createTriggerAction("尚未选择"));
|
|
|
+// }
|
|
|
+// //容器池
|
|
|
+// ui->comboBox_container->clear();
|
|
|
+// ui->comboBox_container->addItem("尚未选择");
|
|
|
+// for(const auto &i:jsonTemp->templateMap["poolTemp"]) ui->comboBox_container->addItem(i.name);
|
|
|
+// int animIndex = 0,poolIndex = 0;
|
|
|
+
|
|
|
+// //若当前界面选择的选项没有被改变,仍然保持当前选项
|
|
|
+// if(ui->listWidget_elem->currentItem() != nullptr){
|
|
|
+// ElemPropertyData* elem = elements[ui->listWidget_elem->currentItem()->text()];
|
|
|
+// //收集动画
|
|
|
+// if(ui->listWidget_collectAnim->currentItem() != nullptr) {
|
|
|
+// int index = ui->listWidget_collectAnim->currentRow();
|
|
|
+// std::cout<<"当前选择的收集动画类型:"<<qPrintable(elem->collAnim[index].type)<<std::endl;
|
|
|
+// animIndex = ui->comboBox_animationType->findText(elem->collAnim[index].type);
|
|
|
+// if(animIndex == -1){
|
|
|
+// animIndex = 0;
|
|
|
+// elem->collAnim[ui->listWidget_collectAnim->currentRow()].type = "尚未选择";
|
|
|
+// }
|
|
|
+// setCollAnimWidget();
|
|
|
+// }
|
|
|
+// //容器池
|
|
|
+// if(ui->listWidget_pool->currentItem() != nullptr){
|
|
|
+// int index = ui->listWidget_pool->currentRow();
|
|
|
+// std::cout<<"当前选择的容器类型:"<<qPrintable(elem->container[index].type)<<std::endl;
|
|
|
+// poolIndex = ui->comboBox_container->findText(elem->container[index].type);
|
|
|
+// if(poolIndex == -1) poolIndex = 0;
|
|
|
+// }
|
|
|
+// //事件配置
|
|
|
+// if(ui->listWidget_status->currentItem() != nullptr){
|
|
|
+// int index = ui->listWidget_status->currentRow();
|
|
|
+// int rowNum = ui->tableWidget_event->rowCount();
|
|
|
+// for(int i=0;i<rowNum;i++){
|
|
|
+// //事件配置
|
|
|
+// QComboBox* nameBox = dynamic_cast<QComboBox*>(ui->tableWidget_event->cellWidget(i,0));
|
|
|
+// QComboBox* actionBox = dynamic_cast<QComboBox*>(ui->tableWidget_event->cellWidget(i,5));
|
|
|
+// int eindex = nameBox->findText(elem->statusConfig[index].eventConfig[i].name);
|
|
|
+// if(eindex != -1) nameBox->setCurrentIndex(eindex);
|
|
|
+// std::cout<<"当前触发动作:"<<qPrintable(elem->statusConfig[index].eventConfig[i].triggerAction)<<std::endl;
|
|
|
+// int aindex = actionBox->findText(elem->statusConfig[index].eventConfig[i].triggerAction);
|
|
|
+// if(aindex != -1) actionBox->setCurrentIndex(aindex);
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+// ui->comboBox_animationType->setCurrentIndex(animIndex);
|
|
|
+// ui->comboBox_container->setCurrentIndex(poolIndex);
|
|
|
+// isSetUi = false;
|
|
|
}
|
|
|
|
|
|
void MainWindow::on_reloadTempFile_triggered()
|
|
|
{
|
|
|
- ReadJsonSrc* tmp = jsonTemp;
|
|
|
- jsonTemp = new ReadJsonSrc(":/file/file/template.json");
|
|
|
- delete tmp;
|
|
|
+ DataManager::getInstance()->updateTempData();
|
|
|
updateTempRelatedUi();
|
|
|
}
|
|
|
|
|
@@ -1439,8 +1120,9 @@ void MainWindow::on_pushButton_delEvent_clicked()
|
|
|
|
|
|
void MainWindow::on_tabWidget_currentChanged(int index)
|
|
|
{
|
|
|
- if(index==1 && ui->listWidget_collectAnim->currentItem()!=nullptr){
|
|
|
- setCollAnimWidget();
|
|
|
+ //更新下拉选项
|
|
|
+ if(index == 3){
|
|
|
+ collAnimUi->setCollAnimWidget();
|
|
|
}
|
|
|
}
|
|
|
|