Пример #1
0
void PasPlay::Update(){
// 更新処理
	int i;
	for(i=0;i<MaxSE;i++){ mSE[i]->Initialize(); }
	mBackground->Update();					// 背景

	if(flgStart)	{ UpdateStart();	}	// ミッションスタート
	if(flgClear)	{ UpdateClear();	}	// ミッションクリア
	if(flgGameOver)	{ UpdateGameOver(); }	// ゲームオーバー
	if(flgResult)	{ UpdateResult();	}	// リザルト
	if(flgWarning)	{ UpdateWarning();	}	// ワーニング

	if(!flgStart && !flgClear && !flgResult){				// スタート且つクリアフラグが立っていなければ
		/*== 更新 ================*/
		mUnitAdmin->Update();								// ゲームオブジェクト
		mStage->HiScoreUpdate(mUnitAdmin->GetScore());		// ハイスコア更新
		mStage->HiDestroyUpdate(mUnitAdmin->GetDestroy());	// 破壊数記録更新

		if(!flgGameOver && FlagGameOver()){					// 失敗条件を満たしてしまうとクリアしててもゲームオーバー
			GoToGameOver();
		}
		if(!flgGameOver && !flgClear && FlagClear()){		// ゲームオーバーではなく、クリア条件を満たしているとクリア
			//GoToClear();
		}
		if(!flgWarning && mUnitAdmin->GetBossReadyFlag()){ GoToWarning(); }// ボスの条件が整ったか否か
		if(flgBoss){										// ボスフラグが立っている状態で
			if(!mUnitAdmin->GetBossFlg()){					// ボスが消えると
				GoToClear();								// クリア
				flgBoss = false;
			}
		}
	} //if(!flgStart && !flgClear && !flgResult)

	for(i=0;i<MaxSE;i++){ mSE[i]->Update();	}				// 再生するオーディオを再生
}
Пример #2
0
void FieldEditPanel::OnBitRangeEdited(const QString& input)
{
    const SocBitRangeValidator *validator = 
        dynamic_cast< const SocBitRangeValidator *>(m_bitrange_edit->validator());
    int first, last;
    QValidator::State state = validator->parse(input, last, first);
    if(state != QValidator::Acceptable)
        return;
    m_ref.GetField().first_bit = first;
    m_ref.GetField().last_bit = last;
    // update all warning signs
    for(size_t row = 0; row < m_ref.GetField().value.size(); row++)
        UpdateWarning(row);
    // also updates delegates because they now have the wrong view of the field
    UpdateDelegates();
    emit OnModified(true);
}
Пример #3
0
void FieldEditPanel::FillRow(int row, const soc_reg_field_value_t& val)
{
    QTableWidgetItem *item = new QTableWidgetItem(QString::fromStdString(val.name));
    item->setTextAlignment(Qt::AlignVCenter | Qt::AlignHCenter);
    item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsEditable);
    m_value_table->setItem(row, FieldValueNameColumn, item);
    item = new QTableWidgetItem();
    item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsEditable);
    item->setData(Qt::DisplayRole, QVariant(val.value));
    m_value_table->setItem(row, FieldValueValueColumn, item);
    item = new QTableWidgetItem(QString::fromStdString(val.desc));
    item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsEditable);
    m_value_table->setItem(row, FieldValueDescColumn, item);
    item = new QTableWidgetItem(QIcon::fromTheme("list-remove"), "", FieldValueDeleteType);
    item->setToolTip("Remove?");
    item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
    m_value_table->setItem(row, FieldValueIconColumn, item);
    UpdateWarning(row);
}
Пример #4
0
void FieldEditPanel::OnValueChanged(int row, int column)
{
    /* ignore extra row for addition */
    if(row >= (int)m_ref.GetField().value.size())
        return;
    QTableWidgetItem *item = m_value_table->item(row, column);
    if(column == FieldValueNameColumn)
        m_ref.GetField().value[row].name = item->text().toStdString();
    else if(column == FieldValueValueColumn)
    {
        soc_word_t& fval = m_ref.GetField().value[row].value;
        soc_word_t new_val = item->data(Qt::DisplayRole).toUInt();
        /* avoid infinite recursion by calling UpdateWarning() when
         * only the icon changes which would trigger this callback again */
        if(fval != new_val)
        {
            fval = new_val;
            UpdateWarning(row);
        }
    }
    else if(column == FieldValueDescColumn)
        m_ref.GetField().value[row].desc = item->text().toStdString();
    emit OnModified(true);
}
Пример #5
0
RegEditPanel::RegEditPanel(SocRegRef ref, QWidget *parent)
    :QWidget(parent), m_ref(ref), m_reg_font(font())
{
    m_reg_font.setWeight(100);
    m_reg_font.setKerning(false);

    m_name_group = new QGroupBox("Name", this);
    m_name_edit = new QLineEdit(this);
    m_name_edit->setText(QString::fromStdString(ref.GetReg().name));
    QVBoxLayout *name_group_layout = new QVBoxLayout;
    name_group_layout->addWidget(m_name_edit);
    m_name_group->setLayout(name_group_layout);

    m_instances_table = new QTableWidget(this);
    m_instances_table->setRowCount(ref.GetReg().addr.size() + 1);
    m_instances_table->setColumnCount(RegInstNrColumns);
    for(size_t row = 0; row < ref.GetReg().addr.size(); row++)
        FillRow(row, ref.GetReg().addr[row]);
    CreateNewAddrRow(ref.GetReg().addr.size());
    m_instances_table->setHorizontalHeaderItem(RegInstIconColumn, new QTableWidgetItem(""));
    m_instances_table->setHorizontalHeaderItem(RegInstNameColumn, new QTableWidgetItem("Name"));
    m_instances_table->setHorizontalHeaderItem(RegInstAddrColumn, new QTableWidgetItem("Address"));
    m_instances_table->verticalHeader()->setVisible(false);
    m_instances_table->resizeColumnsToContents();
    m_instances_table->horizontalHeader()->setStretchLastSection(true);
    m_instances_table->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
    m_instances_group = new QGroupBox("Instances", this);
    QHBoxLayout *instances_group_layout = new QHBoxLayout;
    instances_group_layout->addWidget(m_instances_table);
    m_instances_group->setLayout(instances_group_layout);

    m_desc_group = new QGroupBox("Description", this);
    QHBoxLayout *group_layout = new QHBoxLayout;
    m_desc_edit = new MyTextEditor(this);
    m_desc_edit->SetTextHtml(QString::fromStdString(ref.GetReg().desc));
    group_layout->addWidget(m_desc_edit);
    m_desc_group->setLayout(group_layout);

    bool has_sct = m_ref.GetReg().flags & REG_HAS_SCT;
    m_sct_check = new QCheckBox("Set/Clear/Toggle", this);
    m_sct_check->setCheckState(has_sct ? Qt::Checked : Qt::Unchecked);
    QHBoxLayout *flags_layout = new QHBoxLayout;
    flags_layout->addWidget(m_sct_check);
    flags_layout->addStretch();
    m_flags_group = new QGroupBox("Flags", this);
    m_flags_group->setLayout(flags_layout);

    m_formula_combo = new QComboBox(this);
    m_formula_combo->addItem("None", QVariant(REG_FORMULA_NONE));
    m_formula_combo->addItem("String", QVariant(REG_FORMULA_STRING));
    m_formula_combo->setCurrentIndex(m_formula_combo->findData(QVariant(m_ref.GetReg().formula.type)));
    m_formula_type_label = new QLabel("Type:", this);
    QHBoxLayout *formula_top_layout = new QHBoxLayout;
    formula_top_layout->addWidget(m_formula_type_label);
    formula_top_layout->addWidget(m_formula_combo);
    m_formula_string_edit = new QLineEdit(QString::fromStdString(ref.GetReg().formula.string), this);
    QVBoxLayout *formula_layout = new QVBoxLayout;
    formula_layout->addLayout(formula_top_layout);
    formula_layout->addWidget(m_formula_string_edit);
    m_formula_string_gen = new QPushButton("Generate", this);
    formula_layout->addWidget(m_formula_string_gen);
    m_formula_group = new QGroupBox("Formula", this);
    m_formula_group->setLayout(formula_layout);

    QVBoxLayout *name_layout = new QVBoxLayout;
    name_layout->addWidget(m_name_group);
    name_layout->addWidget(m_flags_group);
    name_layout->addWidget(m_formula_group);
    name_layout->addStretch();

    QHBoxLayout *top_layout = new QHBoxLayout;
    top_layout->addWidget(m_instances_group);
    top_layout->addLayout(name_layout);
    top_layout->addWidget(m_desc_group, 1);

    m_sexy_display = new RegSexyDisplay(m_ref, this);
    m_sexy_display->setFont(m_reg_font);

    m_field_table = new QTableWidget;
    m_field_table->setRowCount(m_ref.GetReg().field.size());
    m_field_table->setColumnCount(4);
    for(size_t row = 0; row < m_ref.GetReg().field.size(); row++)
    {
        const soc_reg_field_t& field = m_ref.GetReg().field[row];
        QString bits_str;
        if(field.first_bit == field.last_bit)
            bits_str.sprintf("%d", field.first_bit);
        else
            bits_str.sprintf("%d:%d", field.last_bit, field.first_bit);
        QTableWidgetItem *item = new QTableWidgetItem(bits_str);
        item->setTextAlignment(Qt::AlignVCenter | Qt::AlignHCenter);
        item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
        m_field_table->setItem(row, 1, item);
        item = new QTableWidgetItem(QString(field.name.c_str()));
        item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
        m_field_table->setItem(row, 2, item);
        item = new QTableWidgetItem(QString(field.desc.c_str()));
        item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
        m_field_table->setItem(row, 3, item);
        UpdateWarning(row);
    }
    m_field_table->setHorizontalHeaderItem(0, new QTableWidgetItem(""));
    m_field_table->setHorizontalHeaderItem(1, new QTableWidgetItem("Bits"));
    m_field_table->setHorizontalHeaderItem(2, new QTableWidgetItem("Name"));
    m_field_table->setHorizontalHeaderItem(3, new QTableWidgetItem("Description"));
    m_field_table->verticalHeader()->setVisible(false);
    m_field_table->resizeColumnsToContents();
    m_field_table->horizontalHeader()->setStretchLastSection(true);
    QHBoxLayout *field_layout = new QHBoxLayout;
    field_layout->addWidget(m_field_table);
    m_field_group = new QGroupBox("Flags", this);
    m_field_group->setLayout(field_layout);

    QVBoxLayout *layout = new QVBoxLayout;
    layout->addLayout(top_layout, 0);
    layout->addWidget(m_sexy_display, 0);
    layout->addWidget(m_field_group);

    UpdateFormula();

    setLayout(layout);

    SocFieldItemDelegate *m_table_delegate = new SocFieldItemDelegate(this);
    QItemEditorFactory *m_table_edit_factory = new QItemEditorFactory();
    SocFieldEditorCreator *m_table_edit_creator = new SocFieldEditorCreator();
    m_table_edit_factory->registerEditor(QVariant::UInt, m_table_edit_creator);
    m_table_delegate->setItemEditorFactory(m_table_edit_factory);
    m_instances_table->setItemDelegate(m_table_delegate);

    connect(m_instances_table, SIGNAL(cellActivated(int,int)), this, SLOT(OnInstActivated(int,int)));
    connect(m_instances_table, SIGNAL(cellChanged(int,int)), this, SLOT(OnInstChanged(int,int)));
    connect(m_name_edit, SIGNAL(textChanged(const QString&)), this, SLOT(OnNameEdited(const QString&)));
    connect(m_desc_edit, SIGNAL(OnTextChanged()), this, SLOT(OnDescEdited()));
    connect(m_sct_check, SIGNAL(stateChanged(int)), this, SLOT(OnSctEdited(int)));
    connect(m_formula_combo, SIGNAL(currentIndexChanged(int)), this, SLOT(OnFormulaChanged(int)));
    connect(m_formula_string_edit, SIGNAL(textChanged(const QString&)), this, 
        SLOT(OnFormulaStringChanged(const QString&)));
    connect(m_formula_string_gen, SIGNAL(clicked(bool)), this, SLOT(OnFormulaGenerate(bool)));
}