|
@@ -1,11 +1,9 @@
|
|
|
#include "mainwindow.h"
|
|
|
#include "ui_mainwindow.h"
|
|
|
-#include "basicproperty.h"
|
|
|
#include "changenamedialog.h"
|
|
|
#include "collectionwindow.h"
|
|
|
-#include "statusconfiguration.h"
|
|
|
-#include "containerpool.h"
|
|
|
#include "resfiledialog.h"
|
|
|
+#include "actionSettingDialog.h"
|
|
|
#include <QListWidgetItem>
|
|
|
#include <QListWidget>
|
|
|
#include <QLabel>
|
|
@@ -17,6 +15,7 @@
|
|
|
#include <QMimeData>
|
|
|
#include <QUrl>
|
|
|
#include <QFormLayout>
|
|
|
+#include <QDialogButtonBox>
|
|
|
|
|
|
MainWindow::MainWindow(QWidget *parent)
|
|
|
: QMainWindow(parent)
|
|
@@ -34,6 +33,7 @@ MainWindow::MainWindow(QWidget *parent)
|
|
|
ui->tableWidget_event->setHorizontalHeaderLabels({"事件名称","是否需要颜色一致","状态变化幅度","特效","根据格子数量消除","触发动作","触发动作设置"});
|
|
|
ui->tabWidget->setCurrentIndex(0);
|
|
|
ui->lineEdit_collectionType->setReadOnly(true);
|
|
|
+ ui->widget_dynamic->setLayout(new QFormLayout);
|
|
|
updateTempRelatedUi();
|
|
|
}
|
|
|
|
|
@@ -517,34 +517,28 @@ void MainWindow::onSetActionButtonClicked()
|
|
|
QString action = eventTable[row].triggerAction;
|
|
|
std::cout<<"row:"<<row<<std::endl;
|
|
|
std::cout<<qPrintable(action)<<std::endl;
|
|
|
+ createSetWindow(action,row);
|
|
|
}
|
|
|
|
|
|
///点击动作配置的设置按钮后生成新窗口
|
|
|
-void MainWindow::createSetWindow(QString actionName)
|
|
|
+void MainWindow::createSetWindow(QString actionName,int row)
|
|
|
{
|
|
|
- QWidget w;
|
|
|
- w.setWindowTitle("设置触发动作属性");
|
|
|
QVector<ReadJsonSrc::Template> tempVec = jsonTemp->templateMap["actionTemp"];
|
|
|
int index = jsonTemp->getTemplateIndex("actionTemp",actionName);
|
|
|
- QVector<ReadJsonSrc::Fields> fields = tempVec[index].fields;
|
|
|
- QVBoxLayout *vlayout = new QVBoxLayout();
|
|
|
- QFormLayout* formlayout = new QFormLayout();
|
|
|
- for(const auto &i:fields){
|
|
|
-// QHBoxLayout *hlayout = new QHBoxLayout();
|
|
|
- QWidget *widget = new QWidget;
|
|
|
- if(i.type == "list"){
|
|
|
- if(i.src == "animations"){
|
|
|
- ElemPropertyData* elem = elements[ui->listWidget_elem->currentItem()->text()];
|
|
|
- QStringList list;
|
|
|
- for(const auto &i:elem->statusEffect) list.push_back(i.name);
|
|
|
- widget = createBox(i.defaultVal,list);
|
|
|
- }
|
|
|
- }
|
|
|
- else if(i.type == "input"){
|
|
|
- widget = new QLineEdit(i.defaultVal);
|
|
|
- }
|
|
|
- formlayout->addRow(i.name,widget);
|
|
|
+ if(index == -1){
|
|
|
+ std::cout<<"未找到"<<qPrintable(actionName)<<"该动作配置模板"<<std::endl;
|
|
|
+ return;
|
|
|
}
|
|
|
+ QVector<ReadJsonSrc::Fields> fields = tempVec[index].fields;
|
|
|
+ ElemPropertyData* elem = elements[ui->listWidget_elem->currentItem()->text()];
|
|
|
+ //由于目前list只有动画,所以只做了一种情况;后期如果有多种list,可以将函数参数改为map
|
|
|
+ QStringList list;
|
|
|
+ for(const auto &i:elem->statusEffect) list.push_back(i.name);
|
|
|
+ ActionSettingDialog setDialog;
|
|
|
+ QMap<QString,QString> &dataMap = elem->statusConfig[ui->listWidget_status->currentRow()].eventConfig[row].actionConfig;
|
|
|
+ setDialog.setDialogUi(fields,dataMap,list);
|
|
|
+ setDialog.exec();
|
|
|
+ if(!setDialog.dataMap.empty()) dataMap = setDialog.dataMap;
|
|
|
}
|
|
|
|
|
|
void MainWindow::on_pushButton_addAnimation_clicked()
|
|
@@ -710,31 +704,82 @@ void MainWindow::on_comboBox_animationType_currentTextChanged(const QString &arg
|
|
|
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::on_comboBox_animation_currentTextChanged(const QString &arg1)
|
|
|
+///收集动画动态界面下拉选项数据变化时
|
|
|
+void MainWindow::onComboBoxTextChanged(QString arg)
|
|
|
{
|
|
|
- if(ui->listWidget_elem->currentItem() == nullptr || ui->listWidget_collectAnim->currentItem() == nullptr || isSetUi) return;
|
|
|
+ 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()];
|
|
|
- int index = ui->listWidget_collectAnim->currentRow();
|
|
|
- elem->collAnim[index].anim = arg1;
|
|
|
+ elem->collAnim[ui->listWidget_collectAnim->currentRow()].dataMap[label->text()] = arg;
|
|
|
}
|
|
|
|
|
|
-void MainWindow::on_lineEdit_node_editingFinished()
|
|
|
+///收集动画动态界面单行编辑数据变化时
|
|
|
+void MainWindow::onLineEditTextChanged()
|
|
|
{
|
|
|
- if(ui->listWidget_elem->currentItem() == nullptr || ui->listWidget_collectAnim->currentItem() == nullptr) return;
|
|
|
+ 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()];
|
|
|
- int index = ui->listWidget_collectAnim->currentRow();
|
|
|
- elem->collAnim[index].node = ui->lineEdit_node->text();
|
|
|
+ elem->collAnim[ui->listWidget_collectAnim->currentRow()].dataMap[label->text()] = edit->text();
|
|
|
}
|
|
|
|
|
|
-void MainWindow::on_lineEdit_shadow_editingFinished()
|
|
|
+
|
|
|
+void MainWindow::on_comboBox_animation_currentTextChanged(const QString &arg1)
|
|
|
{
|
|
|
- if(ui->listWidget_elem->currentItem() == nullptr || ui->listWidget_collectAnim->currentItem() == nullptr) return;
|
|
|
+ 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].shadow = ui->lineEdit_shadow->text();
|
|
|
+ elem->collAnim[index].anim = arg1;
|
|
|
}
|
|
|
|
|
|
//设置收集动画显示
|
|
@@ -744,11 +789,13 @@ void MainWindow::setCollectAnimUi(QString collectAnimName)
|
|
|
isSetUi = true;
|
|
|
ElemPropertyData* elem = elements[ui->listWidget_elem->currentItem()->text()];
|
|
|
ElemPropertyData::CollAnim collAnimData = elem->collAnim[elem->getCollAnimIndex(collectAnimName)];
|
|
|
- ui->lineEdit_node->setText(collAnimData.node);
|
|
|
- ui->lineEdit_shadow->setText(collAnimData.shadow);
|
|
|
int typeIndex = ui->comboBox_animationType->findText(collAnimData.type);
|
|
|
- if(typeIndex == -1) typeIndex = 0;
|
|
|
+ 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);
|
|
@@ -1362,7 +1409,11 @@ void MainWindow::updateTempRelatedUi()
|
|
|
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;
|
|
|
+ if(animIndex == -1){
|
|
|
+ animIndex = 0;
|
|
|
+ elem->collAnim[ui->listWidget_collectAnim->currentRow()].type = "尚未选择";
|
|
|
+ }
|
|
|
+ setCollAnimWidget();
|
|
|
}
|
|
|
//容器池
|
|
|
if(ui->listWidget_pool->currentItem() != nullptr){
|
|
@@ -1425,3 +1476,11 @@ void MainWindow::on_pushButton_delEvent_clicked()
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+void MainWindow::on_tabWidget_currentChanged(int index)
|
|
|
+{
|
|
|
+ if(index==1 && ui->listWidget_collectAnim->currentItem()!=nullptr){
|
|
|
+ setCollAnimWidget();
|
|
|
+ }
|
|
|
+}
|
|
|
+
|