mirror of
https://github.com/arabine/open-story-teller.git
synced 2025-12-07 01:15:14 +01:00
fix load out nodes count
This commit is contained in:
parent
843fa7aeba
commit
f495e5d944
8 changed files with 40 additions and 15 deletions
BIN
art/pack/dragon.kra
Normal file
BIN
art/pack/dragon.kra
Normal file
Binary file not shown.
BIN
art/pack/fairy.kra
Normal file
BIN
art/pack/fairy.kra
Normal file
Binary file not shown.
BIN
art/pack/fairy.png
Normal file
BIN
art/pack/fairy.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 79 KiB |
|
|
@ -549,7 +549,7 @@ void MainWindow::BuildScript()
|
||||||
chip32_initialize(&m_chip32_ctx);
|
chip32_initialize(&m_chip32_ctx);
|
||||||
m_dbg.run_result = VM_OK;
|
m_dbg.run_result = VM_OK;
|
||||||
updateAll();
|
updateAll();
|
||||||
DebugContext::DumpCodeAssembler(m_assembler);
|
// DebugContext::DumpCodeAssembler(m_assembler);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,8 @@ MediaNodeModel::MediaNodeModel(StoryGraphModel &model)
|
||||||
m_ui.image->setMinimumSize(320, 240);
|
m_ui.image->setMinimumSize(320, 240);
|
||||||
m_ui.image->installEventFilter(this);
|
m_ui.image->installEventFilter(this);
|
||||||
|
|
||||||
connect(m_ui.spinBox, &QSpinBox::valueChanged, [&](int i) {
|
connect(m_ui.spinBox, QOverload<int>::of(&QSpinBox::valueChanged), [&](int i) {
|
||||||
|
|
||||||
bool addAction = false;
|
bool addAction = false;
|
||||||
if (m_ports < i) {
|
if (m_ports < i) {
|
||||||
addAction = true;
|
addAction = true;
|
||||||
|
|
@ -88,16 +89,14 @@ void MediaNodeModel::setImage(const QString &fileName)
|
||||||
{
|
{
|
||||||
QPixmap pix(m_model.BuildFullImagePath(fileName));
|
QPixmap pix(m_model.BuildFullImagePath(fileName));
|
||||||
|
|
||||||
if (pix.isNull())
|
if (!pix.isNull())
|
||||||
{
|
{
|
||||||
qCritical() << "Can't find image: " << fileName;
|
int w = m_ui.image->width();
|
||||||
|
int h = m_ui.image->height();
|
||||||
|
pix.scaled(w, h, Qt::KeepAspectRatio);
|
||||||
|
m_ui.image->setPixmap(pix);
|
||||||
|
m_ui.imageName->setText(fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
int w = m_ui.image->width();
|
|
||||||
int h = m_ui.image->height();
|
|
||||||
pix.scaled(w, h, Qt::KeepAspectRatio);
|
|
||||||
m_ui.image->setPixmap(pix);
|
|
||||||
m_ui.imageName->setText(fileName);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void MediaNodeModel::setInternalData(const nlohmann::json &j)
|
void MediaNodeModel::setInternalData(const nlohmann::json &j)
|
||||||
|
|
@ -133,6 +132,17 @@ std::string MediaNodeModel::GenerateConstants()
|
||||||
}
|
}
|
||||||
|
|
||||||
// FIXME: Generate choice table if needed (out ports > 1)
|
// FIXME: Generate choice table if needed (out ports > 1)
|
||||||
|
std::unordered_set<ConnectionId> conns = m_model.allConnectionIds(getNodeId());
|
||||||
|
|
||||||
|
int nb_out_ports = 0;
|
||||||
|
|
||||||
|
for (auto & c : conns)
|
||||||
|
{
|
||||||
|
if (c.outNodeId > 0)
|
||||||
|
{
|
||||||
|
nb_out_ports++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
@ -164,14 +174,14 @@ std::string MediaNodeModel::Build()
|
||||||
// Call the media executor (image, sound)
|
// Call the media executor (image, sound)
|
||||||
ss << "syscall 1\n";
|
ss << "syscall 1\n";
|
||||||
|
|
||||||
|
NodeId id = getNodeId();
|
||||||
std::unordered_set<ConnectionId> conns = m_model.allConnectionIds(getNodeId());
|
std::unordered_set<ConnectionId> conns = m_model.allConnectionIds(id);
|
||||||
|
|
||||||
int nb_out_ports = 0;
|
int nb_out_ports = 0;
|
||||||
|
|
||||||
for (auto & c : conns)
|
for (auto & c : conns)
|
||||||
{
|
{
|
||||||
if (c.outNodeId > 0)
|
if (c.inNodeId == id)
|
||||||
{
|
{
|
||||||
nb_out_ports++;
|
nb_out_ports++;
|
||||||
}
|
}
|
||||||
|
|
@ -206,6 +216,13 @@ std::string MediaNodeModel::Build()
|
||||||
return ss.str();
|
return ss.str();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MediaNodeModel::SetOutPortCount(int count) {
|
||||||
|
|
||||||
|
// m_ui.spinBox->blockSignals(true);
|
||||||
|
m_ui.spinBox->setValue(count);
|
||||||
|
// m_ui.spinBox->blockSignals(true);
|
||||||
|
}
|
||||||
|
|
||||||
unsigned int MediaNodeModel::nPorts(PortType portType) const
|
unsigned int MediaNodeModel::nPorts(PortType portType) const
|
||||||
{
|
{
|
||||||
unsigned int result = 1;
|
unsigned int result = 1;
|
||||||
|
|
|
||||||
|
|
@ -46,6 +46,8 @@ public:
|
||||||
virtual std::string GenerateConstants() override;
|
virtual std::string GenerateConstants() override;
|
||||||
virtual std::string Build() override;
|
virtual std::string Build() override;
|
||||||
|
|
||||||
|
virtual void SetOutPortCount(int count) override;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
virtual QString modelName() const { return QString("MediaNode"); }
|
virtual QString modelName() const { return QString("MediaNode"); }
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -210,6 +210,8 @@ bool StoryGraphModel::setNodeData(NodeId nodeId, NodeRole role, QVariant value)
|
||||||
auto &model = it->second;
|
auto &model = it->second;
|
||||||
|
|
||||||
switch (role) {
|
switch (role) {
|
||||||
|
case NodeRole::Id:
|
||||||
|
break;
|
||||||
case NodeRole::Type:
|
case NodeRole::Type:
|
||||||
break;
|
break;
|
||||||
case NodeRole::Position: {
|
case NodeRole::Position: {
|
||||||
|
|
@ -460,6 +462,7 @@ void StoryGraphModel::LoadNode(const nlohmann::json &nodeJson)
|
||||||
QPointF const pos(posJson["x"].get<double>(), posJson["y"].get<double>());
|
QPointF const pos(posJson["x"].get<double>(), posJson["y"].get<double>());
|
||||||
|
|
||||||
setNodeData(restoredNodeId, NodeRole::Position, pos);
|
setNodeData(restoredNodeId, NodeRole::Position, pos);
|
||||||
|
model->SetOutPortCount(nodeJson["outPortCount"].get<int>());
|
||||||
|
|
||||||
_models[restoredNodeId]->FromJson(internalDataJson);
|
_models[restoredNodeId]->FromJson(internalDataJson);
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -478,11 +481,10 @@ NodeId StoryGraphModel::FindFirstNode() const
|
||||||
bool foundConnection{false};
|
bool foundConnection{false};
|
||||||
for (auto& c : _connectivity)
|
for (auto& c : _connectivity)
|
||||||
{
|
{
|
||||||
if (c.outNodeId == nodeId)
|
if (c.inNodeId == nodeId)
|
||||||
{
|
{
|
||||||
foundConnection = true;
|
foundConnection = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!foundConnection)
|
if (!foundConnection)
|
||||||
|
|
|
||||||
|
|
@ -33,6 +33,10 @@ public:
|
||||||
void setNodeId(NodeId id) { m_nodeId = id; }
|
void setNodeId(NodeId id) { m_nodeId = id; }
|
||||||
NodeId getNodeId() const { return m_nodeId; }
|
NodeId getNodeId() const { return m_nodeId; }
|
||||||
|
|
||||||
|
virtual void SetOutPortCount(int count) {
|
||||||
|
// default implementation does nothing
|
||||||
|
}
|
||||||
|
|
||||||
virtual nlohmann::json ToJson() const {
|
virtual nlohmann::json ToJson() const {
|
||||||
nlohmann::json j;
|
nlohmann::json j;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue