Moved edit mode buttons onto a toolbar, fixed a couple bugs

This commit is contained in:
Aruki 2017-02-12 14:19:51 -07:00
parent 4d87ef0312
commit 009c42f281
9 changed files with 93 additions and 152 deletions

View File

@ -67,7 +67,7 @@ void CAnimEventLoader::LoadEvents(IInputStream& rEVNT, bool IsEchoes)
if (SoundID != 0xFFFF) if (SoundID != 0xFFFF)
{ {
SSoundInfo SoundInfo = mpEventData->Entry()->Project()->AudioManager()->GetSoundInfo(SoundID); SSoundInfo SoundInfo = gpResourceStore->Project()->AudioManager()->GetSoundInfo(SoundID);
if (SoundInfo.pAudioGroup) if (SoundInfo.pAudioGroup)
mpEventData->AddEvent(CharIndex, SoundInfo.pAudioGroup->ID()); mpEventData->AddEvent(CharIndex, SoundInfo.pAudioGroup->ID());

View File

@ -24,6 +24,7 @@ CProjectOverviewDialog::CProjectOverviewDialog(QWidget *pParent)
connect(mpUI->CookPackageButton, SIGNAL(clicked()), this, SLOT(CookPackage())); connect(mpUI->CookPackageButton, SIGNAL(clicked()), this, SLOT(CookPackage()));
connect(mpUI->CookAllDirtyPackagesButton, SIGNAL(clicked(bool)), this, SLOT(CookAllDirtyPackages())); connect(mpUI->CookAllDirtyPackagesButton, SIGNAL(clicked(bool)), this, SLOT(CookAllDirtyPackages()));
connect(gpEdApp, SIGNAL(ActiveProjectChanged(CGameProject*)), this, SLOT(ActiveProjectChanged(CGameProject*)));
connect(gpEdApp, SIGNAL(AssetsModified()), this, SLOT(SetupPackagesList())); connect(gpEdApp, SIGNAL(AssetsModified()), this, SLOT(SetupPackagesList()));
} }
@ -32,6 +33,13 @@ CProjectOverviewDialog::~CProjectOverviewDialog()
delete mpUI; delete mpUI;
} }
void CProjectOverviewDialog::ActiveProjectChanged(CGameProject *pProj)
{
mpProject = pProj;
SetupWorldsList();
SetupPackagesList();
}
void CProjectOverviewDialog::ExportGame() void CProjectOverviewDialog::ExportGame()
{ {
QString IsoPath = UICommon::OpenFileDialog(this, "Select ISO", "*.iso *.gcm *.tgc *.wbfs"); QString IsoPath = UICommon::OpenFileDialog(this, "Select ISO", "*.iso *.gcm *.tgc *.wbfs");

View File

@ -25,6 +25,7 @@ public:
~CProjectOverviewDialog(); ~CProjectOverviewDialog();
public slots: public slots:
void ActiveProjectChanged(CGameProject *pProj);
void ExportGame(); void ExportGame();
void LoadWorld(); void LoadWorld();
void LaunchEditor(); void LaunchEditor();
@ -34,9 +35,6 @@ public slots:
void SetupWorldsList(); void SetupWorldsList();
void SetupPackagesList(); void SetupPackagesList();
signals:
void ActiveProjectChanged(CGameProject *pNewProj);
}; };
#endif // CPROJECTOVERVIEWDIALOG_H #endif // CPROJECTOVERVIEWDIALOG_H

View File

@ -62,12 +62,15 @@ public:
mpMaster = pMaster; mpMaster = pMaster;
mTemplates.clear(); mTemplates.clear();
for (u32 iTemp = 0; iTemp < mpMaster->NumScriptTemplates(); iTemp++) if (mpMaster)
mTemplates << mpMaster->TemplateByIndex(iTemp); {
for (u32 iTemp = 0; iTemp < mpMaster->NumScriptTemplates(); iTemp++)
mTemplates << mpMaster->TemplateByIndex(iTemp);
qSort(mTemplates.begin(), mTemplates.end(), [](CScriptTemplate *pLeft, CScriptTemplate *pRight) -> bool { qSort(mTemplates.begin(), mTemplates.end(), [](CScriptTemplate *pLeft, CScriptTemplate *pRight) -> bool {
return pLeft->Name() < pRight->Name(); return pLeft->Name() < pRight->Name();
}); });
}
endResetModel(); endResetModel();
} }

View File

@ -76,13 +76,16 @@ CWorldEditor::CWorldEditor(QWidget *parent)
mpWorldInfoSidebar->setHidden(true); mpWorldInfoSidebar->setHidden(true);
mpScriptSidebar = new CScriptEditSidebar(this); mpScriptSidebar = new CScriptEditSidebar(this);
mpScriptSidebar->setHidden(true); mpScriptSidebar->setHidden(true);
SetSidebarWidget(mpWorldInfoSidebar);
// Initialize edit mode toolbar
mpEditModeButtonGroup = new QButtonGroup(this); mpEditModeButtonGroup = new QButtonGroup(this);
mpEditModeButtonGroup->addButton( ui->EditWorldInfoButton, eWEM_WorldInfo );
mpEditModeButtonGroup->addButton( ui->EditScriptButton, eWEM_EditScript );
connect(mpEditModeButtonGroup, SIGNAL(buttonClicked(int)), this, SLOT(ChangeEditMode(int))); connect(mpEditModeButtonGroup, SIGNAL(buttonClicked(int)), this, SLOT(ChangeEditMode(int)));
AddEditModeButton( QIcon(":/icons/World.png"), "Edit World Info",eWEM_EditWorldInfo );
AddEditModeButton( QIcon(":/icons/Modify.png"), "Edit Script", eWEM_EditScript );
ChangeEditMode(eWEM_EditWorldInfo);
// Initialize actions // Initialize actions
addAction(ui->ActionIncrementGizmo); addAction(ui->ActionIncrementGizmo);
addAction(ui->ActionDecrementGizmo); addAction(ui->ActionDecrementGizmo);
@ -449,6 +452,9 @@ void CWorldEditor::CloseProject()
bool CWorldEditor::Save() bool CWorldEditor::Save()
{ {
if (!mpArea)
return true;
bool SaveAreaSuccess = mpArea->Entry()->Save(); bool SaveAreaSuccess = mpArea->Entry()->Save();
bool SaveEGMCSuccess = mpArea->PoiToWorldMap() ? mpArea->PoiToWorldMap()->Entry()->Save() : true; bool SaveEGMCSuccess = mpArea->PoiToWorldMap() ? mpArea->PoiToWorldMap()->Entry()->Save() : true;
bool SaveWorldSuccess = mpWorld->Entry()->Save(); bool SaveWorldSuccess = mpWorld->Entry()->Save();
@ -478,6 +484,7 @@ bool CWorldEditor::SaveAndRepack()
void CWorldEditor::ChangeEditMode(int Mode) void CWorldEditor::ChangeEditMode(int Mode)
{ {
// This function is connected to the edit mode QButtonGroup.
ChangeEditMode((EWorldEditorMode) Mode); ChangeEditMode((EWorldEditorMode) Mode);
} }
@ -489,7 +496,7 @@ void CWorldEditor::ChangeEditMode(EWorldEditorMode Mode)
switch (Mode) switch (Mode)
{ {
case eWEM_WorldInfo: case eWEM_EditWorldInfo:
SetSidebarWidget(mpWorldInfoSidebar); SetSidebarWidget(mpWorldInfoSidebar);
break; break;
@ -525,7 +532,7 @@ void CWorldEditor::OnActiveProjectChanged(CGameProject *pProj)
Settings.setValue("WorldEditor/RecentProjectsList", RecentProjectsList); Settings.setValue("WorldEditor/RecentProjectsList", RecentProjectsList);
UpdateOpenRecentActions(); UpdateOpenRecentActions();
ChangeEditMode(eWEM_WorldInfo); ChangeEditMode(eWEM_EditWorldInfo);
} }
void CWorldEditor::OnLinksModified(const QList<CScriptObject*>& rkInstances) void CWorldEditor::OnLinksModified(const QList<CScriptObject*>& rkInstances)
@ -846,6 +853,19 @@ void CWorldEditor::UpdateNewLinkLine()
} }
// ************ PROTECTED ************ // ************ PROTECTED ************
void CWorldEditor::AddEditModeButton(QIcon Icon, QString ToolTip, EWorldEditorMode Mode)
{
ASSERT(mpEditModeButtonGroup->button(Mode) == nullptr);
QPushButton *pButton = new QPushButton(Icon, "", this);
pButton->setCheckable(true);
pButton->setToolTip(ToolTip);
pButton->setIconSize(QSize(24, 24));
ui->EditModeToolBar->addWidget(pButton);
mpEditModeButtonGroup->addButton(pButton, Mode);
}
void CWorldEditor::SetSidebarWidget(QWidget *pWidget) void CWorldEditor::SetSidebarWidget(QWidget *pWidget)
{ {
if (mpCurSidebarWidget) if (mpCurSidebarWidget)

View File

@ -35,7 +35,7 @@ class CWorldEditor;
enum EWorldEditorMode enum EWorldEditorMode
{ {
eWEM_WorldInfo, eWEM_EditWorldInfo,
eWEM_EditScript eWEM_EditScript
}; };
@ -125,6 +125,7 @@ public slots:
void UpdateNewLinkLine(); void UpdateNewLinkLine();
protected: protected:
void AddEditModeButton(QIcon Icon, QString ToolTip, EWorldEditorMode Mode);
void SetSidebarWidget(QWidget *pWidget); void SetSidebarWidget(QWidget *pWidget);
void GizmoModeChanged(CGizmo::EGizmoMode Mode); void GizmoModeChanged(CGizmo::EGizmoMode Mode);

View File

@ -234,140 +234,6 @@
</widget> </widget>
</widget> </widget>
</item> </item>
<item>
<widget class="QFrame" name="EditModeFrame">
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Sunken</enum>
</property>
<property name="lineWidth">
<number>1</number>
</property>
<layout class="QVBoxLayout" name="verticalLayout_5">
<property name="spacing">
<number>3</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QPushButton" name="EditWorldInfoButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
<property name="toolTip">
<string>World Edit Mode</string>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="../Icons.qrc">
<normaloff>:/icons/World.png</normaloff>:/icons/World.png</iconset>
</property>
<property name="iconSize">
<size>
<width>24</width>
<height>24</height>
</size>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>true</bool>
</property>
<property name="flat">
<bool>false</bool>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="EditScriptButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
<property name="toolTip">
<string>Script Edit Mode</string>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="../Icons.qrc">
<normaloff>:/icons/Modify.png</normaloff>:/icons/Modify.png</iconset>
</property>
<property name="iconSize">
<size>
<width>24</width>
<height>24</height>
</size>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<property name="flat">
<bool>false</bool>
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>546</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
</layout> </layout>
</widget> </widget>
<widget class="QStatusBar" name="statusbar"/> <widget class="QStatusBar" name="statusbar"/>
@ -482,6 +348,23 @@
<addaction name="menuTools"/> <addaction name="menuTools"/>
<addaction name="menuView"/> <addaction name="menuView"/>
</widget> </widget>
<widget class="QToolBar" name="EditModeToolBar">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="windowTitle">
<string>toolBar</string>
</property>
<attribute name="toolBarArea">
<enum>RightToolBarArea</enum>
</attribute>
<attribute name="toolBarBreak">
<bool>true</bool>
</attribute>
</widget>
<action name="ActionSave"> <action name="ActionSave">
<property name="icon"> <property name="icon">
<iconset resource="../Icons.qrc"> <iconset resource="../Icons.qrc">
@ -852,6 +735,33 @@
<string>Resource Browser</string> <string>Resource Browser</string>
</property> </property>
</action> </action>
<action name="ActionEditWorldInfoMode">
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>true</bool>
</property>
<property name="icon">
<iconset resource="../Icons.qrc">
<normaloff>:/icons/World.png</normaloff>:/icons/World.png</iconset>
</property>
<property name="text">
<string>Edit World Info</string>
</property>
</action>
<action name="ActionEditScriptMode">
<property name="checkable">
<bool>true</bool>
</property>
<property name="icon">
<iconset resource="../Icons.qrc">
<normaloff>:/icons/Modify.png</normaloff>:/icons/Modify.png</iconset>
</property>
<property name="text">
<string>Edit Script</string>
</property>
</action>
</widget> </widget>
<customwidgets> <customwidgets>
<customwidget> <customwidget>

View File

@ -15,6 +15,7 @@ WCreateTab::WCreateTab(CWorldEditor *pEditor, QWidget *pParent /*= 0*/)
mpEditor->Viewport()->installEventFilter(this); mpEditor->Viewport()->installEventFilter(this);
connect(mpEditor, SIGNAL(LayersModified()), this, SLOT(OnLayersChanged())); connect(mpEditor, SIGNAL(LayersModified()), this, SLOT(OnLayersChanged()));
connect(gpEdApp, SIGNAL(ActiveProjectChanged(CGameProject*)), this, SLOT(OnActiveProjectChanged(CGameProject*)));
connect(ui->SpawnLayerComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(OnSpawnLayerChanged(int))); connect(ui->SpawnLayerComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(OnSpawnLayerChanged(int)));
} }
@ -57,9 +58,9 @@ bool WCreateTab::eventFilter(QObject *pObj, QEvent *pEvent)
} }
// ************ PUBLIC SLOTS ************ // ************ PUBLIC SLOTS ************
void WCreateTab::OnMapChanged() void WCreateTab::OnActiveProjectChanged(CGameProject *pProj)
{ {
EGame Game = mpEditor->CurrentGame(); EGame Game = (pProj ? pProj->Game() : eUnknownGame);
CMasterTemplate *pMaster = CMasterTemplate::MasterForGame(Game); CMasterTemplate *pMaster = CMasterTemplate::MasterForGame(Game);
ui->TemplateView->SetMaster(pMaster); ui->TemplateView->SetMaster(pMaster);
} }

View File

@ -24,7 +24,7 @@ public:
inline CScriptLayer* SpawnLayer() const { return mpSpawnLayer; } inline CScriptLayer* SpawnLayer() const { return mpSpawnLayer; }
public slots: public slots:
void OnMapChanged(); void OnActiveProjectChanged(CGameProject *pProj);
void OnLayersChanged(); void OnLayersChanged();
void OnSpawnLayerChanged(int LayerIndex); void OnSpawnLayerChanged(int LayerIndex);