|
@@ -16,11 +16,14 @@
|
|
|
#include <QDragEnterEvent>
|
|
|
#include <QMimeData>
|
|
|
#include <QUrl>
|
|
|
+#include <QFormLayout>
|
|
|
|
|
|
MainWindow::MainWindow(QWidget *parent)
|
|
|
: QMainWindow(parent)
|
|
|
, ui(new Ui::MainWindow)
|
|
|
{
|
|
|
+ //TODO:把用到的默认本地文件变成项目资源文件
|
|
|
+ jsonTemp = new ReadJsonSrc("/Users/menglanluo/redFiles/template.json");
|
|
|
ui->setupUi(this);
|
|
|
QPixmap pix("/Users/menglanluo/pic.png");
|
|
|
ui->label_pic->setPixmap(pix.scaled(50,50,Qt::KeepAspectRatio));
|
|
@@ -28,14 +31,28 @@ MainWindow::MainWindow(QWidget *parent)
|
|
|
ui->tableWidget_animation->setHorizontalHeaderLabels({"名称","资源","时间线","z-Order"});
|
|
|
ui->tableWidget_containerPool->setHorizontalHeaderLabels({"键值","资源名","初始时间线","点击时间线","影响时间线","消失时间线","消失z-Order"});
|
|
|
ui->tableWidget_childElem->setHorizontalHeaderLabels({"名称","使用的池子"});
|
|
|
- ui->tableWidget_event->setHorizontalHeaderLabels({"事件名称","是否需要颜色一致","状态变化幅度","特效","根据格子数量消除","触发动作"});
|
|
|
+ ui->tableWidget_event->setHorizontalHeaderLabels({"事件名称","是否需要颜色一致","状态变化幅度","特效","根据格子数量消除","触发动作","触发动作设置"});
|
|
|
ui->tabWidget->setCurrentIndex(0);
|
|
|
ui->lineEdit_collectionType->setReadOnly(true);
|
|
|
+ updateTempRelatedUi();
|
|
|
}
|
|
|
|
|
|
MainWindow::~MainWindow()
|
|
|
{
|
|
|
delete ui;
|
|
|
+ delete jsonTemp;
|
|
|
+}
|
|
|
+
|
|
|
+///创建普通下拉选项
|
|
|
+QComboBox* MainWindow::createBox(QString choice,QStringList list)
|
|
|
+{
|
|
|
+ QComboBox* box = new QComboBox;
|
|
|
+ box->addItem("尚未选择");
|
|
|
+ box->addItems(list);
|
|
|
+ int index = box->findText(choice);
|
|
|
+ if(index == -1) index = 0;
|
|
|
+ box->setCurrentIndex(index);
|
|
|
+ return box;
|
|
|
}
|
|
|
|
|
|
///创建一个时间线下拉选项
|
|
@@ -44,11 +61,8 @@ QComboBox* MainWindow::createTimelineBox(QString chosenTimeline,QString fileName
|
|
|
ElemPropertyData* elem = elements[ui->listWidget_elem->currentItem()->text()];
|
|
|
QComboBox* timeLine = new QComboBox;
|
|
|
if(fileName == "双击添加资源文件") return timeLine;
|
|
|
- timeLine->addItems(elem->getTimelineList(fileName));
|
|
|
- int index;
|
|
|
- if(chosenTimeline.isEmpty()) index = -1;
|
|
|
- else index= timeLine->findText(chosenTimeline);
|
|
|
- timeLine->setCurrentIndex(index);
|
|
|
+ QStringList list = elem->getTimelineList(fileName);
|
|
|
+ timeLine = createBox(chosenTimeline,list);
|
|
|
if(type == TimelineType::Animation){
|
|
|
connect(timeLine,SIGNAL(currentTextChanged(QString)),this,SLOT(onTimelineTextChanged(QString)));
|
|
|
}
|
|
@@ -58,19 +72,23 @@ QComboBox* MainWindow::createTimelineBox(QString chosenTimeline,QString fileName
|
|
|
return timeLine;
|
|
|
}
|
|
|
|
|
|
+///创建事件下拉选项
|
|
|
+QComboBox* MainWindow::createEventBox(QString chosenEvent)
|
|
|
+{
|
|
|
+ QStringList list;
|
|
|
+ for(const auto &i:jsonTemp->templateMap["eventTemp"]) list.push_back(i.name);
|
|
|
+ QComboBox* event = createBox(chosenEvent,list);
|
|
|
+ connect(event,SIGNAL(currentTextChanged(QString)),this,SLOT(onEventBoxTextChanged(QString)));
|
|
|
+ return event;
|
|
|
+}
|
|
|
+
|
|
|
///创建一个使用池子下拉选项
|
|
|
QComboBox* MainWindow::createPoolBox(QString chosenPool)
|
|
|
{
|
|
|
ElemPropertyData* elem = elements[ui->listWidget_elem->currentItem()->text()];
|
|
|
- QComboBox* pools = new QComboBox;
|
|
|
- pools->addItem("尚未选择池子");
|
|
|
- for(const auto &i:elem->container){
|
|
|
- pools->addItem(i.poolName);
|
|
|
- }
|
|
|
- int index;
|
|
|
- if(chosenPool == "尚未选择池子") index = 0;
|
|
|
- else index= pools->findText(chosenPool);
|
|
|
- pools->setCurrentIndex(index);
|
|
|
+ QStringList list;
|
|
|
+ for(const auto &i:elem->container) list.push_back(i.poolName);
|
|
|
+ QComboBox* pools = createBox(chosenPool,list);
|
|
|
connect(pools,SIGNAL(currentTextChanged(QString)),this,SLOT(onPoolsTextChanged(QString)));
|
|
|
return pools;
|
|
|
}
|
|
@@ -89,31 +107,31 @@ QCheckBox* MainWindow::createCheckBox(bool chosen)
|
|
|
QComboBox* MainWindow::createEffectBox(QString chosenEffect)
|
|
|
{
|
|
|
ElemPropertyData* elem = elements[ui->listWidget_elem->currentItem()->text()];
|
|
|
- QComboBox* effect = new QComboBox;
|
|
|
- effect->addItem("尚未选择动画");
|
|
|
+ QStringList list;
|
|
|
for(const auto &i:elem->statusEffect){
|
|
|
- effect->addItem(i.name);
|
|
|
+ list.push_back(i.name);
|
|
|
}
|
|
|
- int index;
|
|
|
- if(chosenEffect == "尚未选择动画") index = 0;
|
|
|
- else index= effect->findText(chosenEffect);
|
|
|
- effect->setCurrentIndex(index);
|
|
|
- connect(effect,SIGNAL(currentTextChanged(QString)),this,SLOT(onEffectTextChanged(QString)));
|
|
|
+ QComboBox* effect = createBox(chosenEffect,list);
|
|
|
+ connect(effect,SIGNAL(currentTextChanged(QString)),this,SLOT(onEventBoxTextChanged(QString)));
|
|
|
return effect;
|
|
|
}
|
|
|
|
|
|
///创建一个触发动作
|
|
|
-QWidget* MainWindow::createTriggerAction()
|
|
|
+QComboBox* MainWindow::createTriggerAction(QString chosenAction)
|
|
|
+{
|
|
|
+ QStringList actionlist;
|
|
|
+ for(const auto &i:jsonTemp->templateMap["actionTemp"]) actionlist.push_back(i.name);
|
|
|
+ QComboBox* actions = createBox(chosenAction,actionlist);
|
|
|
+ connect(actions,SIGNAL(currentTextChanged(QString)),this,SLOT(onEventBoxTextChanged(QString)));
|
|
|
+ return actions;
|
|
|
+}
|
|
|
+
|
|
|
+///创建一个触发动作设置按钮
|
|
|
+QPushButton* MainWindow::createSetButton()
|
|
|
{
|
|
|
- QComboBox* actions = new QComboBox;
|
|
|
QPushButton* setAction = new QPushButton("设置");
|
|
|
- QHBoxLayout *layout = new QHBoxLayout();
|
|
|
- QWidget *triggerAction = new QWidget;
|
|
|
- layout->addWidget(actions);
|
|
|
- layout->addWidget(setAction);
|
|
|
- triggerAction->setLayout(layout);
|
|
|
- layout->setMargin(0);
|
|
|
- return triggerAction;
|
|
|
+ connect(setAction,SIGNAL(clicked()),this,SLOT(onSetActionButtonClicked()));
|
|
|
+ return setAction;
|
|
|
}
|
|
|
|
|
|
///动画删除或改名后其它下拉选项的更新
|
|
@@ -122,12 +140,12 @@ void MainWindow::updateAnimComboBox(QString changedAnim)
|
|
|
ElemPropertyData* elem = elements[ui->listWidget_elem->currentItem()->text()];
|
|
|
//收集动画界面
|
|
|
if(ui->listWidget_collectAnim->currentItem() != nullptr){
|
|
|
- int index = elem->getCollAnimIndex(ui->listWidget_collectAnim->currentItem()->text());
|
|
|
+ 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 = elem->getStatusValIndex(ui->listWidget_status->currentItem()->text());
|
|
|
+ int index = ui->listWidget_status->currentRow();
|
|
|
if(elem->statusConfig[index].initAnim == changedAnim) ui->comboBox_initAnim->setCurrentIndex(0);
|
|
|
if(elem->statusConfig[index].clickAnim == changedAnim) ui->comboBox_clickAnim->setCurrentIndex(0);
|
|
|
int rowNum = ui->tableWidget_event->rowCount();
|
|
@@ -145,12 +163,12 @@ void MainWindow::updateCollAnimComboBox(QString changedAnim)
|
|
|
ElemPropertyData* elem = elements[ui->listWidget_elem->currentItem()->text()];
|
|
|
//状态配置界面
|
|
|
if(ui->listWidget_status->currentItem() != nullptr){
|
|
|
- int index = elem->getStatusValIndex(ui->listWidget_status->currentItem()->text());
|
|
|
+ int index = ui->listWidget_status->currentRow();
|
|
|
if(elem->statusConfig[index].collAnim == changedAnim) ui->comboBox_collectAnimation->setCurrentIndex(0);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-//TODO: 设置ui所有数据
|
|
|
+///切换元素时重置界面数据
|
|
|
void MainWindow::setUi(ElemPropertyData *elem)
|
|
|
{
|
|
|
std::cout<<"切换元素,刷新界面"<<std::endl;
|
|
@@ -194,16 +212,21 @@ void MainWindow::setUi(ElemPropertyData *elem)
|
|
|
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("尚未选择动画");
|
|
|
+ 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);
|
|
@@ -234,15 +257,7 @@ void MainWindow::setUi(ElemPropertyData *elem)
|
|
|
int rowNum = ui->tableWidget_childElem->rowCount();
|
|
|
ui->tableWidget_childElem->insertRow(rowNum);
|
|
|
ui->tableWidget_childElem->setItem(rowNum,0,new QTableWidgetItem(i.name));
|
|
|
- //TODO: 根据记载的comboBox数据设置当前选中项
|
|
|
- QComboBox* containers = new QComboBox;
|
|
|
- for(const auto &i:elem->container){
|
|
|
- containers->addItem(i.poolName);
|
|
|
- }
|
|
|
- int index = containers->findText(i.container);
|
|
|
- containers->setCurrentIndex(index);
|
|
|
- containers->setCurrentIndex(0);
|
|
|
- ui->tableWidget_childElem->setCellWidget(rowNum,1,containers);
|
|
|
+ ui->tableWidget_childElem->setCellWidget(rowNum,1,createPoolBox(i.container));
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -396,6 +411,7 @@ void MainWindow::onTimelineTextChanged(const QString &arg1)
|
|
|
//修改数据
|
|
|
ElemPropertyData* elem = elements[ui->listWidget_elem->currentItem()->text()];
|
|
|
elem->statusEffect[row].timeline = timeline->currentText();
|
|
|
+ std::cout<<"row:"<<row<<std::endl;
|
|
|
}
|
|
|
|
|
|
///容器池区时间线数据发生改变
|
|
@@ -412,11 +428,12 @@ void MainWindow::onPoolTimelineTextChanged(const QString &arg1)
|
|
|
int column = index.column();
|
|
|
//修改数据
|
|
|
ElemPropertyData* elem = elements[ui->listWidget_elem->currentItem()->text()];
|
|
|
- int poolIndex = elem->getPoolIndex(ui->listWidget_pool->currentItem()->text());
|
|
|
+ int poolIndex = ui->listWidget_pool->currentRow();
|
|
|
if(column == 2) elem->container[poolIndex].table[row].initTimeline = timeline->currentText();
|
|
|
else if(column == 3) elem->container[poolIndex].table[row].clickTimeline = timeline->currentText();
|
|
|
else if(column == 4) elem->container[poolIndex].table[row].effectTimeline = timeline->currentText();
|
|
|
else if(column == 5) elem->container[poolIndex].table[row].vanishTimeline = timeline->currentText();
|
|
|
+ std::cout<<"row:"<<row<<"\tcolumn:"<<column<<std::endl;
|
|
|
}
|
|
|
|
|
|
///子元素使用池子数据发生改变
|
|
@@ -460,22 +477,74 @@ void MainWindow::onCheckBoxStateChanged(int state)
|
|
|
else eventData.elimATLattices = true;
|
|
|
std::cout<<"根据格子数量消除状态:"<<state<<std::endl;
|
|
|
}
|
|
|
+ std::cout<<"row:"<<row<<"\tcolumn:"<<column<<std::endl;
|
|
|
}
|
|
|
|
|
|
-///特效ComboBox选择发生改变
|
|
|
-void MainWindow::onEffectTextChanged(const QString &arg1)
|
|
|
+///事件配置ComboBox选择发生改变
|
|
|
+void MainWindow::onEventBoxTextChanged(const QString &arg1)
|
|
|
{
|
|
|
if(ui->listWidget_elem->currentItem() == nullptr || ui->listWidget_status->currentItem() == nullptr) return;
|
|
|
//获取特效列表所在位置
|
|
|
- QComboBox *effect = dynamic_cast<QComboBox*>(this->sender());
|
|
|
- int x = effect->frameGeometry().x();
|
|
|
- int y = effect->frameGeometry().y();
|
|
|
+ QComboBox *box = dynamic_cast<QComboBox*>(this->sender());
|
|
|
+ int x = box->frameGeometry().x();
|
|
|
+ int y = box->frameGeometry().y();
|
|
|
QModelIndex index = ui->tableWidget_event->indexAt(QPoint(x,y));
|
|
|
int row = index.row();
|
|
|
+ int column = index.column();
|
|
|
//修改数据
|
|
|
ElemPropertyData* elem = elements[ui->listWidget_elem->currentItem()->text()];
|
|
|
int statusIndex = elem->getStatusValIndex(ui->listWidget_status->currentItem()->text());
|
|
|
- elem->statusConfig[statusIndex].eventConfig[row].specialEffect = arg1;
|
|
|
+ QVector<ElemPropertyData::EventConfig> &eventTable = elem->statusConfig[statusIndex].eventConfig;
|
|
|
+ if(column == 0) eventTable[row].name = arg1;
|
|
|
+ else if(column == 3) eventTable[row].specialEffect = arg1;
|
|
|
+ else if(column == 5) eventTable[row].triggerAction = arg1;
|
|
|
+ std::cout<<"row:"<<row<<"\tcolumn:"<<column<<std::endl;
|
|
|
+}
|
|
|
+
|
|
|
+///动作配置中的设置点击后
|
|
|
+void MainWindow::onSetActionButtonClicked()
|
|
|
+{
|
|
|
+ if(ui->listWidget_elem->currentItem() == nullptr || ui->listWidget_status->currentItem() == nullptr) return;
|
|
|
+ //获取设置按钮所在位置
|
|
|
+ QPushButton *button = dynamic_cast<QPushButton*>(this->sender());
|
|
|
+ int x = button->frameGeometry().x();
|
|
|
+ int y = button->frameGeometry().y();
|
|
|
+ QModelIndex index = ui->tableWidget_event->indexAt(QPoint(x,y));
|
|
|
+ int row = index.row();
|
|
|
+ ElemPropertyData* elem = elements[ui->listWidget_elem->currentItem()->text()];
|
|
|
+ int statusIndex = elem->getStatusValIndex(ui->listWidget_status->currentItem()->text());
|
|
|
+ QVector<ElemPropertyData::EventConfig> &eventTable = elem->statusConfig[statusIndex].eventConfig;
|
|
|
+ QString action = eventTable[row].triggerAction;
|
|
|
+ std::cout<<"row:"<<row<<std::endl;
|
|
|
+ std::cout<<qPrintable(action)<<std::endl;
|
|
|
+}
|
|
|
+
|
|
|
+///点击动作配置的设置按钮后生成新窗口
|
|
|
+void MainWindow::createSetWindow(QString actionName)
|
|
|
+{
|
|
|
+ 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);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
void MainWindow::on_pushButton_addAnimation_clicked()
|
|
@@ -498,7 +567,7 @@ void MainWindow::on_pushButton_addAnimation_clicked()
|
|
|
// 此单元格不可编辑
|
|
|
res->setFlags(res->flags() & ~Qt::ItemIsEditable);
|
|
|
ui->tableWidget_animation->setItem(rowNum,1,res);
|
|
|
- ui->tableWidget_animation->setCellWidget(rowNum,2,new QComboBox);
|
|
|
+ ui->tableWidget_animation->setCellWidget(rowNum,2,createBox("",{}));
|
|
|
ui->tableWidget_animation->setItem(rowNum,3,new QTableWidgetItem("0"));
|
|
|
elem->statusEffect.push_back(ElemPropertyData::StatusEffect(animName));
|
|
|
//更新与动画相关的下拉选项
|
|
@@ -524,12 +593,7 @@ void MainWindow::on_pushButton_delAnimation_clicked()
|
|
|
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;
|
|
|
- for(int i=0;i<animVec.size();i++){
|
|
|
- if(animName == animVec[i].name){
|
|
|
- animVec.remove(i);
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
+ animVec.remove(curRow);
|
|
|
ui->tableWidget_animation->removeRow(curRow);
|
|
|
//更新动画相关的下拉选项
|
|
|
updateAnimComboBox(animName);
|
|
@@ -605,16 +669,12 @@ void MainWindow::on_pushButton_addCollectAnim_clicked()
|
|
|
void MainWindow::on_pushButton_delCollectAnim_clicked()
|
|
|
{
|
|
|
if(ui->listWidget_elem->currentItem() == nullptr || ui->listWidget_collectAnim->currentItem() == nullptr) return;
|
|
|
- QMessageBox::StandardButton reply = QMessageBox::question(this,"删除动画","确定要删除此收集动画吗?");
|
|
|
+ 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;
|
|
|
- for(int i=0;i<collAnimVec.size();i++){
|
|
|
- if(collAnimVec[i].name == delName){
|
|
|
- collAnimVec.remove(i);
|
|
|
- }
|
|
|
- }
|
|
|
+ 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));
|
|
@@ -642,20 +702,22 @@ void MainWindow::on_listWidget_collectAnim_itemDoubleClicked(QListWidgetItem *it
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+//TODO: 动画类型的修改伴随界面的更新
|
|
|
void MainWindow::on_comboBox_animationType_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 = elem->getCollAnimIndex(ui->listWidget_collectAnim->currentItem()->text());
|
|
|
+ int index = ui->listWidget_collectAnim->currentRow();
|
|
|
elem->collAnim[index].type = arg1;
|
|
|
+ std::cout<<"收集动画第"<<index<<"行动画类型改变:"<<qPrintable(arg1)<<std::endl;
|
|
|
}
|
|
|
|
|
|
|
|
|
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 = elem->getCollAnimIndex(ui->listWidget_collectAnim->currentItem()->text());
|
|
|
+ int index = ui->listWidget_collectAnim->currentRow();
|
|
|
elem->collAnim[index].anim = arg1;
|
|
|
}
|
|
|
|
|
@@ -663,7 +725,7 @@ void MainWindow::on_lineEdit_node_editingFinished()
|
|
|
{
|
|
|
if(ui->listWidget_elem->currentItem() == nullptr || ui->listWidget_collectAnim->currentItem() == nullptr) return;
|
|
|
ElemPropertyData* elem = elements[ui->listWidget_elem->currentItem()->text()];
|
|
|
- int index = elem->getCollAnimIndex(ui->listWidget_collectAnim->currentItem()->text());
|
|
|
+ int index = ui->listWidget_collectAnim->currentRow();
|
|
|
elem->collAnim[index].node = ui->lineEdit_node->text();
|
|
|
}
|
|
|
|
|
@@ -671,7 +733,7 @@ void MainWindow::on_lineEdit_shadow_editingFinished()
|
|
|
{
|
|
|
if(ui->listWidget_elem->currentItem() == nullptr || ui->listWidget_collectAnim->currentItem() == nullptr) return;
|
|
|
ElemPropertyData* elem = elements[ui->listWidget_elem->currentItem()->text()];
|
|
|
- int index = elem->getCollAnimIndex(ui->listWidget_collectAnim->currentItem()->text());
|
|
|
+ int index = ui->listWidget_collectAnim->currentRow();
|
|
|
elem->collAnim[index].shadow = ui->lineEdit_shadow->text();
|
|
|
}
|
|
|
|
|
@@ -679,15 +741,18 @@ void MainWindow::on_lineEdit_shadow_editingFinished()
|
|
|
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)];
|
|
|
ui->lineEdit_node->setText(collAnimData.node);
|
|
|
ui->lineEdit_shadow->setText(collAnimData.shadow);
|
|
|
- std::cout<<qPrintable(collAnimData.anim)<<"\t"<<qPrintable(collAnimData.type)<<std::endl;
|
|
|
- ui->comboBox_animationType->setCurrentIndex(1);
|
|
|
+ int typeIndex = ui->comboBox_animationType->findText(collAnimData.type);
|
|
|
+ if(typeIndex == -1) typeIndex = 0;
|
|
|
+ ui->comboBox_animationType->setCurrentIndex(typeIndex);
|
|
|
int index = ui->comboBox_animation->findText(collAnimData.anim);
|
|
|
if(index == -1) index = 0;
|
|
|
ui->comboBox_animation->setCurrentIndex(index);
|
|
|
+ isSetUi = false;
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -803,10 +868,10 @@ void MainWindow::on_pushButton_delContainer_clicked()
|
|
|
{
|
|
|
if(ui->listWidget_elem->currentItem() == nullptr || ui->listWidget_pool->currentItem() == nullptr) return;
|
|
|
ElemPropertyData* elem = elements[ui->listWidget_elem->currentItem()->text()];
|
|
|
- QMessageBox::StandardButton reply = QMessageBox::question(this,"删除状态","确定要删除此容器吗?");
|
|
|
+ QMessageBox::StandardButton reply = QMessageBox::question(this,"删除容器","确定要删除此容器吗?");
|
|
|
if(reply == QMessageBox::Yes){
|
|
|
QString delPoolName = ui->listWidget_pool->currentItem()->text();
|
|
|
- int index = elem->getPoolIndex(delPoolName);
|
|
|
+ int index = ui->listWidget_pool->currentRow();
|
|
|
elem->container.remove(index);
|
|
|
delete ui->listWidget_pool->takeItem(ui->listWidget_pool->currentRow());
|
|
|
//子元素下拉列表删除可选项
|
|
@@ -877,10 +942,10 @@ void MainWindow::on_pushButton_addKey_clicked()
|
|
|
res->setFlags(res->flags() & ~Qt::ItemIsEditable);
|
|
|
ui->tableWidget_containerPool->setItem(rowNum,1,res);
|
|
|
for(int i=2;i<=5;i++){
|
|
|
- ui->tableWidget_containerPool->setCellWidget(rowNum,i,new QComboBox);
|
|
|
+ ui->tableWidget_containerPool->setCellWidget(rowNum,i,createBox("",{}));
|
|
|
}
|
|
|
ui->tableWidget_containerPool->setItem(rowNum,3,new QTableWidgetItem("0"));
|
|
|
- int index = elem->getPoolIndex(ui->listWidget_pool->currentItem()->text());
|
|
|
+ int index = ui->listWidget_pool->currentRow();
|
|
|
ElemPropertyData::ContainTable containTable(keyName);
|
|
|
elem->container[index].table.push_back(containTable);
|
|
|
}
|
|
@@ -889,19 +954,14 @@ void MainWindow::on_pushButton_addKey_clicked()
|
|
|
void MainWindow::on_pushButton_delKey_clicked()
|
|
|
{
|
|
|
if(ui->listWidget_elem->currentItem() == nullptr || ui->listWidget_pool->currentItem() == nullptr || ui->tableWidget_containerPool->currentRow() == -1) return;
|
|
|
- QMessageBox::StandardButton reply = QMessageBox::question(this,"删除容器","确定要删除此容器吗?");
|
|
|
+ QMessageBox::StandardButton reply = QMessageBox::question(this,"删除键值","确定要删除此键值吗?");
|
|
|
if(reply == QMessageBox::Yes){
|
|
|
int curRow = ui->tableWidget_containerPool->currentRow();
|
|
|
QString containerName = ui->tableWidget_containerPool->item(curRow,0)->text();
|
|
|
ElemPropertyData* elem =elements[ui->listWidget_elem->currentItem()->text()];
|
|
|
- int index = elem->getPoolIndex(ui->listWidget_pool->currentItem()->text());
|
|
|
+ int index = ui->listWidget_pool->currentRow();
|
|
|
QVector<ElemPropertyData::ContainTable> &containerTable = elem->container[index].table;
|
|
|
- for(int i=0;i<containerTable.size();i++){
|
|
|
- if(containerName == containerTable[i].key){
|
|
|
- containerTable.remove(i);
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
+ containerTable.remove(curRow);
|
|
|
ui->tableWidget_containerPool->removeRow(curRow);
|
|
|
}
|
|
|
}
|
|
@@ -909,8 +969,12 @@ void MainWindow::on_pushButton_delKey_clicked()
|
|
|
void MainWindow::setPoolUi(QString poolName)
|
|
|
{
|
|
|
if(ui->listWidget_elem->currentItem() == nullptr) return;
|
|
|
+ isSetUi = true;
|
|
|
ElemPropertyData* elem = elements[ui->listWidget_elem->currentItem()->text()];
|
|
|
ElemPropertyData::ContainerConfig poolData = elem->container[elem->getPoolIndex(poolName)];
|
|
|
+ int contIndex = ui->comboBox_container->findText(poolData.type);
|
|
|
+ if(contIndex == -1) contIndex=0;
|
|
|
+ ui->comboBox_container->setCurrentIndex(contIndex);
|
|
|
int rowNum = ui->tableWidget_containerPool->rowCount();
|
|
|
for(int i=0;i<rowNum;i++){
|
|
|
ui->tableWidget_containerPool->removeRow(0);
|
|
@@ -929,6 +993,7 @@ void MainWindow::setPoolUi(QString poolName)
|
|
|
ui->tableWidget_containerPool->setCellWidget(rowNum,5,createTimelineBox(i.vanishTimeline,i.res,TimelineType::Pool));
|
|
|
ui->tableWidget_containerPool->setItem(rowNum,6,new QTableWidgetItem(i.zOrder));
|
|
|
}
|
|
|
+ isSetUi = false;
|
|
|
}
|
|
|
|
|
|
void MainWindow::on_tableWidget_containerPool_cellDoubleClicked(int row, int column)
|
|
@@ -942,10 +1007,9 @@ void MainWindow::on_tableWidget_containerPool_cellDoubleClicked(int row, int col
|
|
|
res.exec();
|
|
|
QString fileName = res.getResName();
|
|
|
if(!fileName.isEmpty()){
|
|
|
- //TODO: 加载comboBox,随后文件名去除路径
|
|
|
ui->tableWidget_containerPool->setItem(row,column,new QTableWidgetItem(getFileName(fileName)));
|
|
|
ElemPropertyData* elem = elements[ui->listWidget_elem->currentItem()->text()];
|
|
|
- int index = elem->getPoolIndex(ui->listWidget_pool->currentItem()->text());
|
|
|
+ int index = ui->listWidget_pool->currentRow();
|
|
|
elem->container[index].table[row].res = fileName;
|
|
|
//加载时间线下拉列表
|
|
|
for(int i=2;i<=5;i++){
|
|
@@ -965,7 +1029,7 @@ void MainWindow::on_tableWidget_containerPool_itemChanged(QTableWidgetItem *item
|
|
|
int column = item->column();
|
|
|
int row = item->row();
|
|
|
ElemPropertyData* elem = elements[ui->listWidget_elem->currentItem()->text()];
|
|
|
- int index = elem->getPoolIndex(ui->listWidget_pool->currentItem()->text());
|
|
|
+ int index = ui->listWidget_pool->currentRow();
|
|
|
QVector<ElemPropertyData::ContainTable> &containerVec = elem->container[index].table;
|
|
|
if(column == 0){
|
|
|
bool isNum;double tmp = item->text().toDouble(&isNum);
|
|
@@ -994,34 +1058,6 @@ void MainWindow::on_tableWidget_containerPool_itemChanged(QTableWidgetItem *item
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-////切换tab时更新comboBox(或者每一次添加删除动画就更新一下该元素的comboBox?这样也更方便进行逻辑检查)
|
|
|
-//void MainWindow::on_tabWidget_currentChanged(int index)
|
|
|
-//{
|
|
|
-// if(ui->listWidget_elem->currentItem() == nullptr) return;
|
|
|
-// QVector<ElemPropertyData::StatusEffect> &animVec = elements[ui->listWidget_elem->currentItem()->text()]->statusEffect;
|
|
|
-// //如果目前展示的是收集动画,加载状态与效果配置中的动画到收集动画的动画下拉列表中
|
|
|
-// //目前这种方法较为暴力,后期可以视动画数量进行优化
|
|
|
-// if(index == 1){
|
|
|
-// ui->comboBox_animation->clear();
|
|
|
-// for(const auto &i:animVec){
|
|
|
-// ui->comboBox_animation->addItem(i.name);
|
|
|
-// }
|
|
|
-// }
|
|
|
-// //如果目前展示的是状态配置,加载相应状态效果配置动画和收集动画
|
|
|
-// else if(index == 2){
|
|
|
-// ui->comboBox_initAnim->clear();
|
|
|
-// ui->comboBox_clickAnim->clear();
|
|
|
-// ui->comboBox_collectAnimation->clear();
|
|
|
-// for(const auto &i:animVec){
|
|
|
-// ui->comboBox_initAnim->addItem(i.name);
|
|
|
-// ui->comboBox_clickAnim->addItem(i.name);
|
|
|
-// }
|
|
|
-// for(auto i:elements[ui->listWidget_elem->currentItem()->text()]->collAnim){
|
|
|
-// ui->comboBox_collectAnimation->addItem(i.name);
|
|
|
-// }
|
|
|
-// }
|
|
|
-//}
|
|
|
-
|
|
|
void MainWindow::on_pushButton_addChildElem_clicked()
|
|
|
{
|
|
|
if(ui->listWidget_elem->currentItem() == nullptr) return;
|
|
@@ -1037,7 +1073,7 @@ void MainWindow::on_pushButton_addChildElem_clicked()
|
|
|
childElemName = "item" + QString::number(id++);
|
|
|
}
|
|
|
ui->tableWidget_childElem->setItem(rowNum,0,new QTableWidgetItem(childElemName));
|
|
|
- ui->tableWidget_childElem->setCellWidget(rowNum,1,createPoolBox("尚未选择池子"));
|
|
|
+ ui->tableWidget_childElem->setCellWidget(rowNum,1,createPoolBox("尚未选择"));
|
|
|
elem->childElem.push_back(ElemPropertyData::ChildElem(childElemName));
|
|
|
}
|
|
|
|
|
@@ -1049,12 +1085,7 @@ void MainWindow::on_pushButton_delChildElem_clicked()
|
|
|
int curRow = ui->tableWidget_childElem->currentRow();
|
|
|
QString childElemName = ui->tableWidget_childElem->item(curRow,0)->text();
|
|
|
QVector<ElemPropertyData::ChildElem> &childElemVec = elements[ui->listWidget_elem->currentItem()->text()]->childElem;
|
|
|
- for(int i=0;i<childElemVec.size();i++){
|
|
|
- if(childElemName == childElemVec[i].name){
|
|
|
- childElemVec.remove(i);
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
+ childElemVec.remove(curRow);
|
|
|
ui->tableWidget_childElem->removeRow(curRow);
|
|
|
}
|
|
|
}
|
|
@@ -1090,14 +1121,13 @@ void MainWindow::on_tableWidget_childElem_cellDoubleClicked(int row, int column)
|
|
|
|
|
|
void MainWindow::on_checkBox_multiHit_stateChanged(int arg1)
|
|
|
{
|
|
|
- if(ui->listWidget_elem->currentItem() == nullptr || ui->listWidget_status->currentItem() == nullptr) return;
|
|
|
+ if(ui->listWidget_elem->currentItem() == nullptr || ui->listWidget_status->currentItem() == nullptr || isSetUi) return;
|
|
|
ElemPropertyData* elem = elements[ui->listWidget_elem->currentItem()->text()];
|
|
|
+ int index = ui->listWidget_status->currentRow();
|
|
|
if(arg1){
|
|
|
- int index = elem->getStatusValIndex(ui->listWidget_status->currentItem()->text());
|
|
|
elem->statusConfig[index].multiHit = true;
|
|
|
}
|
|
|
else{
|
|
|
- int index = elem->getStatusValIndex(ui->listWidget_status->currentItem()->text());
|
|
|
elem->statusConfig[index].multiHit = false;
|
|
|
}
|
|
|
}
|
|
@@ -1105,14 +1135,13 @@ void MainWindow::on_checkBox_multiHit_stateChanged(int arg1)
|
|
|
|
|
|
void MainWindow::on_checkBox_dropable_stateChanged(int arg1)
|
|
|
{
|
|
|
- if(ui->listWidget_elem->currentItem() == nullptr || ui->listWidget_status->currentItem() == nullptr) return;
|
|
|
+ if(ui->listWidget_elem->currentItem() == nullptr || ui->listWidget_status->currentItem() == nullptr || isSetUi) return;
|
|
|
ElemPropertyData* elem = elements[ui->listWidget_elem->currentItem()->text()];
|
|
|
+ int index = ui->listWidget_status->currentRow();
|
|
|
if(arg1){
|
|
|
- int index = elem->getStatusValIndex(ui->listWidget_status->currentItem()->text());
|
|
|
elem->statusConfig[index].dropable = true;
|
|
|
}
|
|
|
else{
|
|
|
- int index = elem->getStatusValIndex(ui->listWidget_status->currentItem()->text());
|
|
|
elem->statusConfig[index].dropable = false;
|
|
|
}
|
|
|
}
|
|
@@ -1120,15 +1149,14 @@ void MainWindow::on_checkBox_dropable_stateChanged(int arg1)
|
|
|
|
|
|
void MainWindow::on_checkBox_needCollect_stateChanged(int arg1)
|
|
|
{
|
|
|
- if(ui->listWidget_elem->currentItem() == nullptr || ui->listWidget_status->currentItem() == nullptr) return;
|
|
|
+ if(ui->listWidget_elem->currentItem() == nullptr || ui->listWidget_status->currentItem() == nullptr || isSetUi) return;
|
|
|
ElemPropertyData* elem = elements[ui->listWidget_elem->currentItem()->text()];
|
|
|
+ int index = ui->listWidget_status->currentRow();
|
|
|
if(arg1){
|
|
|
- int index = elem->getStatusValIndex(ui->listWidget_status->currentItem()->text());
|
|
|
elem->statusConfig[index].needCollect = true;
|
|
|
ui->lineEdit_collectionType->setReadOnly(false);
|
|
|
}
|
|
|
else{
|
|
|
- int index = elem->getStatusValIndex(ui->listWidget_status->currentItem()->text());
|
|
|
elem->statusConfig[index].needCollect = false;
|
|
|
ui->lineEdit_collectionType->setReadOnly(true);
|
|
|
}
|
|
@@ -1139,7 +1167,7 @@ void MainWindow::on_lineEdit_collectionType_editingFinished()
|
|
|
{
|
|
|
if(ui->listWidget_elem->currentItem() == nullptr || ui->listWidget_status->currentItem() == nullptr) return;
|
|
|
ElemPropertyData* elem = elements[ui->listWidget_elem->currentItem()->text()];
|
|
|
- int index = elem->getStatusValIndex(ui->listWidget_status->currentItem()->text());
|
|
|
+ int index = ui->listWidget_status->currentRow();
|
|
|
ElemPropertyData::StatusConfig &data = elem->statusConfig[index];
|
|
|
data.collTargetType = ui->lineEdit_collectionType->text();
|
|
|
std::cout<<"收集的目标类型"<<qPrintable(data.collTargetType)<<std::endl;
|
|
@@ -1154,14 +1182,14 @@ void MainWindow::on_pushButton_addEvent_clicked()
|
|
|
ui->tableWidget_event->insertRow(rowNum);
|
|
|
ElemPropertyData* elem = elements[ui->listWidget_elem->currentItem()->text()];
|
|
|
ElemPropertyData::EventConfig event;
|
|
|
- int index = elem->getStatusValIndex(ui->listWidget_status->currentItem()->text());
|
|
|
+ int index = ui->listWidget_status->currentRow();
|
|
|
elem->statusConfig[index].eventConfig.push_back(event);
|
|
|
- ui->tableWidget_event->setCellWidget(rowNum,0,new QComboBox);
|
|
|
+ ui->tableWidget_event->setCellWidget(rowNum,0,createEventBox("尚未选择"));
|
|
|
ui->tableWidget_event->setCellWidget(rowNum,1,createCheckBox(false));
|
|
|
- ui->tableWidget_event->setCellWidget(rowNum,3,createEffectBox("尚未选择动画"));
|
|
|
+ ui->tableWidget_event->setCellWidget(rowNum,3,createEffectBox("尚未选择"));
|
|
|
ui->tableWidget_event->setCellWidget(rowNum,4,createCheckBox(false));
|
|
|
- //设置触发动作
|
|
|
- ui->tableWidget_event->setCellWidget(rowNum,5,createTriggerAction());
|
|
|
+ ui->tableWidget_event->setCellWidget(rowNum,5,createTriggerAction("尚未选择"));
|
|
|
+ ui->tableWidget_event->setCellWidget(rowNum,6,createSetButton());
|
|
|
}
|
|
|
|
|
|
QString MainWindow::getFileName(QString filePath)
|
|
@@ -1185,6 +1213,7 @@ QString MainWindow::getFileName(QString filePath)
|
|
|
void MainWindow::on_listWidget_status_currentItemChanged(QListWidgetItem *current, QListWidgetItem *previous)
|
|
|
{
|
|
|
if(ui->listWidget_elem->currentItem() == nullptr || current == nullptr) return;
|
|
|
+ isSetUi = true;
|
|
|
ElemPropertyData* elem = elements[ui->listWidget_elem->currentItem()->text()];
|
|
|
int index = elem->getStatusValIndex(current->text());
|
|
|
ElemPropertyData::StatusConfig statusData = elem->statusConfig[index];
|
|
@@ -1208,7 +1237,6 @@ void MainWindow::on_listWidget_status_currentItemChanged(QListWidgetItem *curren
|
|
|
if(statusData.dropable) ui->checkBox_multiHit->setCheckState(Qt::Checked);
|
|
|
else ui->checkBox_dropable->setCheckState(Qt::Unchecked);
|
|
|
//是否需要收集
|
|
|
- //TODO: 加载收集动画数据
|
|
|
ui->lineEdit_collectionType->clear();
|
|
|
if(statusData.needCollect){
|
|
|
ui->checkBox_needCollect->setCheckState(Qt::Checked);
|
|
@@ -1221,16 +1249,16 @@ void MainWindow::on_listWidget_status_currentItemChanged(QListWidgetItem *curren
|
|
|
ui->lineEdit_collectionType->setReadOnly(true);
|
|
|
}
|
|
|
//事件配置
|
|
|
- //TODO:设置事件表格下拉项
|
|
|
int rowNum = ui->tableWidget_event->rowCount();
|
|
|
for(int i=0;i<rowNum;i++){
|
|
|
ui->tableWidget_event->removeRow(0);
|
|
|
}
|
|
|
for(const auto &i:statusData.eventConfig){
|
|
|
- int rowNum = ui->tableWidget_event->rowCount();
|
|
|
+ rowNum = ui->tableWidget_event->rowCount();
|
|
|
ui->tableWidget_event->insertRow(rowNum);
|
|
|
//事件名称
|
|
|
- ui->tableWidget_event->setCellWidget(rowNum,0,new QComboBox);
|
|
|
+ ui->tableWidget_event->setCellWidget(rowNum,0,createEventBox(i.name));
|
|
|
+ std::cout<<"重置状态配置ui:事件名称:"<<qPrintable(i.name)<<std::endl;
|
|
|
//是否需要颜色一致
|
|
|
ui->tableWidget_event->setCellWidget(rowNum,1,createCheckBox(i.consisColor));
|
|
|
//tableWidget_event
|
|
@@ -1240,8 +1268,11 @@ void MainWindow::on_listWidget_status_currentItemChanged(QListWidgetItem *curren
|
|
|
//根据格子数量消除
|
|
|
ui->tableWidget_event->setCellWidget(rowNum,4,createCheckBox(i.elimATLattices));
|
|
|
//触发动作
|
|
|
- ui->tableWidget_event->setCellWidget(rowNum,5,createTriggerAction());
|
|
|
+ ui->tableWidget_event->setCellWidget(rowNum,5,createTriggerAction(i.triggerAction));
|
|
|
+ //触发动作设置
|
|
|
+ ui->tableWidget_event->setCellWidget(rowNum,6,createSetButton());
|
|
|
}
|
|
|
+ isSetUi = false;
|
|
|
}
|
|
|
|
|
|
void MainWindow::on_tableWidget_event_cellDoubleClicked(int row, int column)
|
|
@@ -1259,7 +1290,7 @@ void MainWindow::on_tableWidget_event_itemChanged(QTableWidgetItem *item)
|
|
|
int column = item->column();
|
|
|
int row = item->row();
|
|
|
ElemPropertyData* elem = elements[ui->listWidget_elem->currentItem()->text()];
|
|
|
- int index = elem->getStatusValIndex(ui->listWidget_status->currentItem()->text());
|
|
|
+ int index = ui->listWidget_status->currentRow();
|
|
|
QVector<ElemPropertyData::EventConfig> &eventVec = elem->statusConfig[index].eventConfig;
|
|
|
if(column == 2){
|
|
|
bool ok;double a = item->text().toDouble(&ok);
|
|
@@ -1277,28 +1308,120 @@ void MainWindow::on_tableWidget_event_itemChanged(QTableWidgetItem *item)
|
|
|
|
|
|
void MainWindow::on_comboBox_initAnim_currentTextChanged(const QString &arg1)
|
|
|
{
|
|
|
- if(ui->listWidget_elem->currentItem() == nullptr || ui->listWidget_status->currentItem() == nullptr) return;
|
|
|
+ if(ui->listWidget_elem->currentItem() == nullptr || ui->listWidget_status->currentItem() == nullptr || isSetUi) return;
|
|
|
std::cout<<"初始化动画:"<<qPrintable(arg1)<<std::endl;
|
|
|
ElemPropertyData* elem = elements[ui->listWidget_elem->currentItem()->text()];
|
|
|
- int index = elem->getStatusValIndex(ui->listWidget_status->currentItem()->text());
|
|
|
+ int index = ui->listWidget_status->currentRow();
|
|
|
elem->statusConfig[index].initAnim = arg1;
|
|
|
}
|
|
|
|
|
|
|
|
|
void MainWindow::on_comboBox_clickAnim_currentTextChanged(const QString &arg1)
|
|
|
{
|
|
|
- if(ui->listWidget_elem->currentItem() == nullptr || ui->listWidget_status->currentItem() == nullptr) return;
|
|
|
+ if(ui->listWidget_elem->currentItem() == nullptr || ui->listWidget_status->currentItem() == nullptr || isSetUi) return;
|
|
|
ElemPropertyData* elem = elements[ui->listWidget_elem->currentItem()->text()];
|
|
|
- int index = elem->getStatusValIndex(ui->listWidget_status->currentItem()->text());
|
|
|
+ int index = ui->listWidget_status->currentRow();
|
|
|
elem->statusConfig[index].clickAnim = arg1;
|
|
|
}
|
|
|
|
|
|
|
|
|
void MainWindow::on_comboBox_collectAnimation_currentTextChanged(const QString &arg1)
|
|
|
{
|
|
|
- if(ui->listWidget_elem->currentItem() == nullptr || ui->listWidget_status->currentItem() == nullptr) return;
|
|
|
+ if(ui->listWidget_elem->currentItem() == nullptr || ui->listWidget_status->currentItem() == nullptr || isSetUi) return;
|
|
|
ElemPropertyData* elem = elements[ui->listWidget_elem->currentItem()->text()];
|
|
|
- int index = elem->getStatusValIndex(ui->listWidget_status->currentItem()->text());
|
|
|
+ int index = ui->listWidget_status->currentRow();
|
|
|
elem->statusConfig[index].collAnim = arg1;
|
|
|
}
|
|
|
|
|
|
+///模板更新后更新与模板配置相关的界面显示
|
|
|
+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;
|
|
|
+ }
|
|
|
+ //容器池
|
|
|
+ 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("/Users/menglanluo/redFiles/template.json");
|
|
|
+ delete tmp;
|
|
|
+ updateTempRelatedUi();
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+void MainWindow::on_comboBox_container_currentTextChanged(const QString &arg1)
|
|
|
+{
|
|
|
+ if(ui->listWidget_elem->currentItem() == nullptr || ui->listWidget_pool->currentItem() == nullptr || isSetUi) return;
|
|
|
+ ElemPropertyData* elem = elements[ui->listWidget_elem->currentItem()->text()];
|
|
|
+ int poolIndex = ui->listWidget_pool->currentRow();
|
|
|
+ elem->container[poolIndex].type = arg1;
|
|
|
+ std::cout<<"容器池第"<<poolIndex<<"行容器类型改变:"<<qPrintable(arg1)<<std::endl;
|
|
|
+}
|
|
|
+
|
|
|
+///删除事件
|
|
|
+void MainWindow::on_pushButton_delEvent_clicked()
|
|
|
+{
|
|
|
+ if(ui->listWidget_elem->currentItem() == nullptr || ui->listWidget_status->currentItem() == nullptr) return;
|
|
|
+ if(ui->tableWidget_event->currentRow() == -1) return;
|
|
|
+ ElemPropertyData* elem = elements[ui->listWidget_elem->currentItem()->text()];
|
|
|
+ QMessageBox::StandardButton reply = QMessageBox::question(this,"删除事件","确定要删除此事件吗?");
|
|
|
+ if(reply == QMessageBox::Yes){
|
|
|
+ int curRow = ui->tableWidget_event->currentRow();
|
|
|
+ QVector<ElemPropertyData::EventConfig> &eventTable = elem->statusConfig[ui->listWidget_status->currentRow()].eventConfig;
|
|
|
+ eventTable.remove(curRow);
|
|
|
+ ui->tableWidget_event->removeRow(curRow);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|