|
@@ -22,23 +22,16 @@ MainWindow::MainWindow(QWidget *parent)
|
|
|
: QMainWindow(parent)
|
|
|
, ui(new Ui::MainWindow)
|
|
|
{
|
|
|
- jsonTemp = new ReadJsonSrc(":/file/file/template.json");
|
|
|
ui->setupUi(this);
|
|
|
QPixmap pix(":/icon/icon/pic.png");
|
|
|
ui->label_pic->setPixmap(pix.scaled(50,50,Qt::KeepAspectRatio));
|
|
|
this->setAcceptDrops(true);
|
|
|
- ui->tableWidget_containerPool->setHorizontalHeaderLabels({"键值","资源名","初始时间线","点击时间线","影响时间线","消失时间线","消失z-Order"});
|
|
|
- ui->tableWidget_childElem->setHorizontalHeaderLabels({"名称","使用的池子"});
|
|
|
- ui->tableWidget_event->setHorizontalHeaderLabels({"事件名称","是否需要颜色一致","状态变化幅度","特效","根据格子数量消除","触发动作","触发动作设置"});
|
|
|
ui->tabWidget->setCurrentIndex(0);
|
|
|
- ui->lineEdit_collectionType->setReadOnly(true);
|
|
|
-// updateTempRelatedUi();
|
|
|
}
|
|
|
|
|
|
MainWindow::~MainWindow()
|
|
|
{
|
|
|
delete ui;
|
|
|
- delete jsonTemp;
|
|
|
}
|
|
|
|
|
|
///创建普通下拉选项
|
|
@@ -70,16 +63,6 @@ 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)
|
|
|
{
|
|
@@ -91,76 +74,6 @@ QComboBox* MainWindow::createPoolBox(QString chosenPool)
|
|
|
return pools;
|
|
|
}
|
|
|
|
|
|
-///创建一个checkBox
|
|
|
-QCheckBox* MainWindow::createCheckBox(bool chosen)
|
|
|
-{
|
|
|
- QCheckBox* check = new QCheckBox;
|
|
|
- if(chosen) check->setCheckState(Qt::Checked);
|
|
|
- else check->setCheckState(Qt::Unchecked);
|
|
|
- connect(check,SIGNAL(stateChanged(int)),this,SLOT(onCheckBoxStateChanged(int)));
|
|
|
- return check;
|
|
|
-}
|
|
|
-
|
|
|
-///创建一个特效下拉选项
|
|
|
-QComboBox* MainWindow::createEffectBox(QString chosenEffect)
|
|
|
-{
|
|
|
- ElemPropertyData* elem = elements[ui->listWidget_elem->currentItem()->text()];
|
|
|
- QStringList list;
|
|
|
- for(const auto &i:elem->statusEffect){
|
|
|
- list.push_back(i.name);
|
|
|
- }
|
|
|
- QComboBox* effect = createBox(chosenEffect,list);
|
|
|
- connect(effect,SIGNAL(currentTextChanged(QString)),this,SLOT(onEventBoxTextChanged(QString)));
|
|
|
- return effect;
|
|
|
-}
|
|
|
-
|
|
|
-///创建一个触发动作
|
|
|
-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()
|
|
|
-{
|
|
|
- QPushButton* setAction = new QPushButton("设置");
|
|
|
- connect(setAction,SIGNAL(clicked()),this,SLOT(onSetActionButtonClicked()));
|
|
|
- return setAction;
|
|
|
-}
|
|
|
-
|
|
|
-///动画删除或改名后其它下拉选项的更新
|
|
|
-void MainWindow::updateAnimComboBox(QString changedAnim)
|
|
|
-{
|
|
|
- ElemPropertyData* elem = elements[ui->listWidget_elem->currentItem()->text()];
|
|
|
- //状态配置界面
|
|
|
- if(ui->listWidget_status->currentItem() != nullptr){
|
|
|
- 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();
|
|
|
- for(int i=0;i<rowNum;i++){
|
|
|
- QComboBox *effect = qobject_cast<QComboBox*>(ui->tableWidget_event->cellWidget(i,3));
|
|
|
- if(effect->currentText() == changedAnim) effect->setCurrentIndex(0);
|
|
|
- }
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-///收集动画删除或改名后下拉选项更新
|
|
|
-void MainWindow::updateCollAnimComboBox(QString changedAnim)
|
|
|
-{
|
|
|
- std::cout<<"收集动画改变,更新下拉选项"<<std::endl;
|
|
|
- ElemPropertyData* elem = elements[ui->listWidget_elem->currentItem()->text()];
|
|
|
- //状态配置界面
|
|
|
- if(ui->listWidget_status->currentItem() != nullptr){
|
|
|
- int index = ui->listWidget_status->currentRow();
|
|
|
- if(elem->statusConfig[index].collAnim == changedAnim) ui->comboBox_collectAnimation->setCurrentIndex(0);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
///切换元素时重置界面数据
|
|
|
void MainWindow::setUi(QString elem)
|
|
|
{
|
|
@@ -170,6 +83,10 @@ void MainWindow::setUi(QString elem)
|
|
|
ui->tabWidget->addTab(animUi,"状态与效果动画");
|
|
|
collAnimUi = new CollAnim();
|
|
|
ui->tabWidget->addTab(collAnimUi,"收集动画");
|
|
|
+ statusConfigUi = new StatusConfig();
|
|
|
+ ui->tabWidget->addTab(statusConfigUi,"状态配置");
|
|
|
+ poolUi = new Pool();
|
|
|
+ ui->tabWidget->addTab(poolUi,"容器");
|
|
|
firstSelectElem = false;
|
|
|
}
|
|
|
//基础元素区域的设置
|
|
@@ -185,49 +102,10 @@ void MainWindow::setUi(QString elem)
|
|
|
//设置状态与效果动画表格显示
|
|
|
animUi->setUi(elem);
|
|
|
collAnimUi->setUi(elem);
|
|
|
+ statusConfigUi->setUi(elem);
|
|
|
+ poolUi->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++){
|
|
@@ -382,172 +260,6 @@ void MainWindow::onPoolsTextChanged(const QString &arg1)
|
|
|
elem->childElem[row].container = arg1;
|
|
|
}
|
|
|
|
|
|
-///事件配置checkBox状态发生改变
|
|
|
-void MainWindow::onCheckBoxStateChanged(int state)
|
|
|
-{
|
|
|
- if(ui->listWidget_elem->currentItem() == nullptr || ui->listWidget_status->currentItem() == nullptr) return;
|
|
|
- //获取checkBox所在位置
|
|
|
- QCheckBox *check = dynamic_cast<QCheckBox*>(this->sender());
|
|
|
- int x = check->frameGeometry().x();
|
|
|
- int y = check->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());
|
|
|
- ElemPropertyData::EventConfig &eventData = elem->statusConfig[statusIndex].eventConfig[row];
|
|
|
- //是否需要颜色一致
|
|
|
- if(column == 1){
|
|
|
- if(state == 0) eventData.consisColor = false;
|
|
|
- else eventData.consisColor = true;
|
|
|
- std::cout<<"颜色是否需要一致状态:"<<state<<std::endl;
|
|
|
- }
|
|
|
- else if(column == 4){
|
|
|
- if(state == 0) eventData.elimATLattices = false;
|
|
|
- else eventData.elimATLattices = true;
|
|
|
- std::cout<<"根据格子数量消除状态:"<<state<<std::endl;
|
|
|
- }
|
|
|
- std::cout<<"row:"<<row<<"\tcolumn:"<<column<<std::endl;
|
|
|
-}
|
|
|
-
|
|
|
-///事件配置ComboBox选择发生改变
|
|
|
-void MainWindow::onEventBoxTextChanged(const QString &arg1)
|
|
|
-{
|
|
|
- if(ui->listWidget_elem->currentItem() == nullptr || ui->listWidget_status->currentItem() == nullptr) return;
|
|
|
- //获取特效列表所在位置
|
|
|
- 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());
|
|
|
- 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;
|
|
|
- createSetWindow(action,row);
|
|
|
-}
|
|
|
-
|
|
|
-///点击动作配置的设置按钮后生成新窗口
|
|
|
-void MainWindow::createSetWindow(QString actionName,int row)
|
|
|
-{
|
|
|
- QVector<ReadJsonSrc::Template> tempVec = jsonTemp->templateMap["actionTemp"];
|
|
|
- int index = jsonTemp->getTemplateIndex("actionTemp",actionName);
|
|
|
- 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_genTemp_clicked()
|
|
|
-{
|
|
|
- if(ui->listWidget_elem->currentItem() == nullptr || ui->listWidget_status->count() > 0) return;
|
|
|
- ElemPropertyData* elem = elements[ui->listWidget_elem->currentItem()->text()];
|
|
|
- for(int i=0;i<elem->maxLayer.toInt();i++){
|
|
|
- ui->listWidget_status->addItem(QString::number(i));
|
|
|
- ElemPropertyData::StatusConfig status(QString::number(i));
|
|
|
- elem->statusConfig.push_back(status);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-//添加状态,若已经生成最大层数全部状态则按钮无效
|
|
|
-void MainWindow::on_pushButton_addStatus_clicked()
|
|
|
-{
|
|
|
- if(ui->listWidget_elem->currentItem() == nullptr) return;
|
|
|
- ElemPropertyData* elem = elements[ui->listWidget_elem->currentItem()->text()];
|
|
|
- QString statusName;
|
|
|
- for(int i=0;i<elem->maxLayer.toInt();i++){
|
|
|
- if(elem->getStatusValIndex(QString::number(i)) == -1){
|
|
|
- statusName = QString::number(i);
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- if(!statusName.isEmpty()){
|
|
|
- ui->listWidget_status->addItem(statusName);
|
|
|
- ElemPropertyData::StatusConfig status(statusName);
|
|
|
- elem->statusConfig.push_back(status);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-//TODO: 删除状态值对应的数据
|
|
|
-void MainWindow::on_pushButton_delStatus_clicked()
|
|
|
-{
|
|
|
- if(ui->listWidget_elem->currentItem() == nullptr || ui->listWidget_status->currentItem() == nullptr) return;
|
|
|
- QMessageBox::StandardButton reply = QMessageBox::question(this,"删除状态","确定要删除此状态吗?");
|
|
|
- ElemPropertyData* elem = elements[ui->listWidget_elem->currentItem()->text()];
|
|
|
- if(reply == QMessageBox::Yes){
|
|
|
- for(int i=0;i<elem->statusConfig.size();i++){
|
|
|
- if(elem->statusConfig[i].statusValue == ui->listWidget_status->currentItem()->text()){
|
|
|
- elem->statusConfig.remove(i);
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- delete ui->listWidget_status->takeItem(ui->listWidget_status->currentRow());
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-//修改状态值,检查修改后的状态值是否合法,并转移数据
|
|
|
-void MainWindow::on_listWidget_status_itemDoubleClicked(QListWidgetItem *item)
|
|
|
-{
|
|
|
- ChangeNameDialog newName;
|
|
|
- newName.setModal(true);
|
|
|
- newName.exec();
|
|
|
- QString name = newName.getNewName();
|
|
|
- ElemPropertyData* elem = elements[ui->listWidget_elem->currentItem()->text()];
|
|
|
- if(!name.isEmpty()){
|
|
|
- //TODO: 检查状态值合法性并转移数据
|
|
|
- bool isNum;double tmp = name.toDouble(&isNum);
|
|
|
- int maxlayer = ui->lineEdit_maxlayer->text().toInt();
|
|
|
- int statusNum = name.toInt();
|
|
|
- if(!isNum ||statusNum < 0 || statusNum >= maxlayer){
|
|
|
- QMessageBox::critical(this,"错误","状态值必须是大于等于0且小于最大层数的数字");
|
|
|
- return;
|
|
|
- }
|
|
|
- if(elem->getStatusValIndex(name) == -1){
|
|
|
- QMessageBox::critical(this,"警告","该状态值已存在");
|
|
|
- return;
|
|
|
- }
|
|
|
- int index = elem->getStatusValIndex(item->text());
|
|
|
- elem->statusConfig[index].statusValue = name;
|
|
|
- item->setText(name);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
|
|
|
void MainWindow::on_pushButton_addContainer_clicked()
|
|
|
{
|
|
@@ -675,36 +387,6 @@ 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);
|
|
|
- }
|
|
|
- for(const auto &i:poolData.table){
|
|
|
- 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(i.res);
|
|
|
- // 此单元格不可编辑
|
|
|
- res->setFlags(res->flags() & ~Qt::ItemIsEditable);
|
|
|
- ui->tableWidget_containerPool->setItem(rowNum,1,res);
|
|
|
- ui->tableWidget_containerPool->setCellWidget(rowNum,2,createTimelineBox(i.initTimeline,i.res,TimelineType::Pool));
|
|
|
- ui->tableWidget_containerPool->setCellWidget(rowNum,3,createTimelineBox(i.clickTimeline,i.res,TimelineType::Pool));
|
|
|
- ui->tableWidget_containerPool->setCellWidget(rowNum,4,createTimelineBox(i.effectTimeline,i.res,TimelineType::Pool));
|
|
|
- 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)
|
|
|
{
|
|
|
if(ui->listWidget_elem->currentItem() == nullptr || ui->listWidget_pool->currentItem() == nullptr) return;
|
|
@@ -828,208 +510,14 @@ void MainWindow::on_tableWidget_childElem_cellDoubleClicked(int row, int column)
|
|
|
childElemTableItemChanged = true;
|
|
|
}
|
|
|
|
|
|
-void MainWindow::on_checkBox_multiHit_stateChanged(int arg1)
|
|
|
-{
|
|
|
- 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){
|
|
|
- elem->statusConfig[index].multiHit = true;
|
|
|
- }
|
|
|
- else{
|
|
|
- elem->statusConfig[index].multiHit = false;
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
-void MainWindow::on_checkBox_dropable_stateChanged(int arg1)
|
|
|
-{
|
|
|
- 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){
|
|
|
- elem->statusConfig[index].dropable = true;
|
|
|
- }
|
|
|
- else{
|
|
|
- elem->statusConfig[index].dropable = false;
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
-void MainWindow::on_checkBox_needCollect_stateChanged(int arg1)
|
|
|
-{
|
|
|
- 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){
|
|
|
- elem->statusConfig[index].needCollect = true;
|
|
|
- ui->lineEdit_collectionType->setReadOnly(false);
|
|
|
- }
|
|
|
- else{
|
|
|
- elem->statusConfig[index].needCollect = false;
|
|
|
- ui->lineEdit_collectionType->setReadOnly(true);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
-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 = ui->listWidget_status->currentRow();
|
|
|
- ElemPropertyData::StatusConfig &data = elem->statusConfig[index];
|
|
|
- data.collTargetType = ui->lineEdit_collectionType->text();
|
|
|
- std::cout<<"收集的目标类型"<<qPrintable(data.collTargetType)<<std::endl;
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-void MainWindow::on_pushButton_addEvent_clicked()
|
|
|
-{
|
|
|
- if(ui->listWidget_elem->currentItem()==nullptr || ui->listWidget_status->currentItem() == nullptr) return;
|
|
|
- int rowNum = ui->tableWidget_event->rowCount();
|
|
|
- ui->tableWidget_event->insertRow(rowNum);
|
|
|
- ElemPropertyData* elem = elements[ui->listWidget_elem->currentItem()->text()];
|
|
|
- ElemPropertyData::EventConfig event;
|
|
|
- int index = ui->listWidget_status->currentRow();
|
|
|
- elem->statusConfig[index].eventConfig.push_back(event);
|
|
|
- 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,4,createCheckBox(false));
|
|
|
- ui->tableWidget_event->setCellWidget(rowNum,5,createTriggerAction("尚未选择"));
|
|
|
- ui->tableWidget_event->setCellWidget(rowNum,6,createSetButton());
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
-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];
|
|
|
- int comboIndex;
|
|
|
- //初始化动画
|
|
|
- comboIndex = ui->comboBox_initAnim->findText(statusData.initAnim);
|
|
|
- if(comboIndex == -1) comboIndex = 0;
|
|
|
- ui->comboBox_initAnim->setCurrentIndex(comboIndex);
|
|
|
- //点击动画
|
|
|
- comboIndex = ui->comboBox_clickAnim->findText(statusData.clickAnim);
|
|
|
- if(comboIndex == -1) comboIndex = 0;
|
|
|
- ui->comboBox_clickAnim->setCurrentIndex(comboIndex);
|
|
|
- //收集动画
|
|
|
- comboIndex = ui->comboBox_collectAnimation->findText(statusData.collAnim);
|
|
|
- if(comboIndex == -1) comboIndex = 0;
|
|
|
- ui->comboBox_collectAnimation->setCurrentIndex(comboIndex);
|
|
|
- //多重打击
|
|
|
- if(statusData.multiHit) ui->checkBox_multiHit->setCheckState(Qt::Checked);
|
|
|
- else ui->checkBox_multiHit->setCheckState(Qt::Unchecked);
|
|
|
- //可掉落
|
|
|
- if(statusData.dropable) ui->checkBox_multiHit->setCheckState(Qt::Checked);
|
|
|
- else ui->checkBox_dropable->setCheckState(Qt::Unchecked);
|
|
|
- //是否需要收集
|
|
|
- ui->lineEdit_collectionType->clear();
|
|
|
- if(statusData.needCollect){
|
|
|
- ui->checkBox_needCollect->setCheckState(Qt::Checked);
|
|
|
- ui->lineEdit_collectionType->setReadOnly(false);
|
|
|
- std::cout<<"收集的目标类型"<<qPrintable(statusData.collTargetType)<<std::endl;
|
|
|
- ui->lineEdit_collectionType->setText(statusData.collTargetType);
|
|
|
- }
|
|
|
- else{
|
|
|
- ui->checkBox_needCollect->setCheckState(Qt::Unchecked);
|
|
|
- ui->lineEdit_collectionType->setReadOnly(true);
|
|
|
- }
|
|
|
- //事件配置
|
|
|
- int rowNum = ui->tableWidget_event->rowCount();
|
|
|
- for(int i=0;i<rowNum;i++){
|
|
|
- ui->tableWidget_event->removeRow(0);
|
|
|
- }
|
|
|
- for(const auto &i:statusData.eventConfig){
|
|
|
- rowNum = ui->tableWidget_event->rowCount();
|
|
|
- ui->tableWidget_event->insertRow(rowNum);
|
|
|
- //事件名称
|
|
|
- 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
|
|
|
- ui->tableWidget_event->setItem(rowNum,2,new QTableWidgetItem(i.changeMagnitude));
|
|
|
- //特效
|
|
|
- ui->tableWidget_event->setCellWidget(rowNum,3,createEffectBox(i.specialEffect));
|
|
|
- //根据格子数量消除
|
|
|
- ui->tableWidget_event->setCellWidget(rowNum,4,createCheckBox(i.elimATLattices));
|
|
|
- //触发动作
|
|
|
- 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)
|
|
|
-{
|
|
|
- if(ui->listWidget_elem->currentItem() == nullptr || ui->listWidget_status->currentItem() == nullptr) return;
|
|
|
- if(column == 2) eventTableItemChanged = true;
|
|
|
-}
|
|
|
-
|
|
|
-//状态变化幅度合法性检查及数据保存
|
|
|
-void MainWindow::on_tableWidget_event_itemChanged(QTableWidgetItem *item)
|
|
|
-{
|
|
|
- if(ui->listWidget_elem->currentItem() == nullptr || ui->listWidget_status->currentItem() == nullptr) return;
|
|
|
- if(!eventTableItemChanged) return;
|
|
|
- eventTableItemChanged = false;
|
|
|
- int column = item->column();
|
|
|
- int row = item->row();
|
|
|
- ElemPropertyData* elem = elements[ui->listWidget_elem->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);
|
|
|
- int val = item->text().toInt();
|
|
|
- if(!ok || val<0){
|
|
|
- QMessageBox::critical(this,"警告","状态变化幅度是大于0的数字");
|
|
|
- ui->tableWidget_event->item(row,2)->setText(QString::number(eventVec[row].changeMagnitude));
|
|
|
- return;
|
|
|
- }
|
|
|
- std::cout<<"状态变化幅度发生改变,新值为:"<<val<<std::endl;
|
|
|
- eventVec[row].changeMagnitude = val;
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
-void MainWindow::on_comboBox_initAnim_currentTextChanged(const QString &arg1)
|
|
|
-{
|
|
|
- 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 = 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 || isSetUi) return;
|
|
|
- ElemPropertyData* elem = elements[ui->listWidget_elem->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 || isSetUi) return;
|
|
|
- ElemPropertyData* elem = elements[ui->listWidget_elem->currentItem()->text()];
|
|
|
- int index = ui->listWidget_status->currentRow();
|
|
|
- elem->statusConfig[index].collAnim = arg1;
|
|
|
-}
|
|
|
|
|
|
///模板更新后更新与模板配置相关的界面显示
|
|
|
void MainWindow::updateTempRelatedUi()
|
|
|
{
|
|
|
//重新设置收集动画界面
|
|
|
collAnimUi->setCollectAnimUi();
|
|
|
+ //重置状态配置的模板相关界面
|
|
|
+ statusConfigUi->setAnimComboBox();
|
|
|
|
|
|
// //状态配置
|
|
|
// int rowNum = ui->tableWidget_event->rowCount();
|
|
@@ -1102,27 +590,17 @@ void MainWindow::on_comboBox_container_currentTextChanged(const QString &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);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
|
|
|
void MainWindow::on_tabWidget_currentChanged(int index)
|
|
|
{
|
|
|
//更新下拉选项
|
|
|
- if(index == 3){
|
|
|
+ if(index == 2){
|
|
|
collAnimUi->setCollAnimWidget();
|
|
|
}
|
|
|
+ else if(index == 3){
|
|
|
+ statusConfigUi->setAnimComboBox();
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+
|