forked from mirror/openmw-tes3mp
Merge branch 'master' of git://github.com/zinnschlag/openmw
This commit is contained in:
commit
6c7dce1396
28 changed files with 265 additions and 111 deletions
|
@ -529,6 +529,8 @@ if (WIN32)
|
|||
set(WARNINGS "${WARNINGS} /wd${d}")
|
||||
endforeach(d)
|
||||
|
||||
set_target_properties(shiny PROPERTIES COMPILE_FLAGS ${WARNINGS})
|
||||
set_target_properties(shiny.OgrePlatform PROPERTIES COMPILE_FLAGS ${WARNINGS})
|
||||
set_target_properties(components PROPERTIES COMPILE_FLAGS ${WARNINGS})
|
||||
if (BUILD_LAUNCHER)
|
||||
set_target_properties(omwlauncher PROPERTIES COMPILE_FLAGS ${WARNINGS})
|
||||
|
|
|
@ -20,6 +20,7 @@ void CSMDoc::Document::load (const std::vector<boost::filesystem::path>::const_i
|
|||
getData().loadFile (*end2, false);
|
||||
|
||||
addOptionalGmsts();
|
||||
addOptionalGlobals();
|
||||
}
|
||||
|
||||
void CSMDoc::Document::addOptionalGmsts()
|
||||
|
@ -139,6 +140,26 @@ void CSMDoc::Document::addOptionalGmsts()
|
|||
}
|
||||
}
|
||||
|
||||
void CSMDoc::Document::addOptionalGlobals()
|
||||
{
|
||||
static const char *sGlobals[] =
|
||||
{
|
||||
"dayspassed",
|
||||
"pcwerewolf",
|
||||
"pcyear",
|
||||
0
|
||||
};
|
||||
|
||||
for (int i=0; sGlobals[i]; ++i)
|
||||
{
|
||||
ESM::Global global;
|
||||
global.mId = sGlobals[i];
|
||||
global.mType = ESM::VT_Int;
|
||||
global.mValue = 0;
|
||||
addOptionalGlobal (global);
|
||||
}
|
||||
}
|
||||
|
||||
void CSMDoc::Document::addOptionalGmst (const ESM::GameSetting& gmst)
|
||||
{
|
||||
if (getData().getGmsts().searchId (gmst.mId)==-1)
|
||||
|
@ -150,6 +171,17 @@ void CSMDoc::Document::addOptionalGmst (const ESM::GameSetting& gmst)
|
|||
}
|
||||
}
|
||||
|
||||
void CSMDoc::Document::addOptionalGlobal (const ESM::Global& global)
|
||||
{
|
||||
if (getData().getGlobals().searchId (global.mId)==-1)
|
||||
{
|
||||
CSMWorld::Record<ESM::Global> record;
|
||||
record.mBase = global;
|
||||
record.mState = CSMWorld::RecordBase::State_BaseOnly;
|
||||
getData().getGlobals().appendRecord (record);
|
||||
}
|
||||
}
|
||||
|
||||
void CSMDoc::Document::createBase()
|
||||
{
|
||||
static const char *sGlobals[] =
|
||||
|
@ -249,6 +281,7 @@ void CSMDoc::Document::abortOperation (int type)
|
|||
|
||||
if (type==State_Saving)
|
||||
{
|
||||
mSaveCount=0;
|
||||
mSaveTimer.stop();
|
||||
emit stateChanged (getState(), this);
|
||||
}
|
||||
|
@ -297,4 +330,4 @@ CSMTools::ReportModel *CSMDoc::Document::getReport (const CSMWorld::UniversalId&
|
|||
void CSMDoc::Document::progress (int current, int max, int type)
|
||||
{
|
||||
emit progress (current, max, type, 1, this);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -20,6 +20,7 @@ class QAbstractItemModel;
|
|||
namespace ESM
|
||||
{
|
||||
struct GameSetting;
|
||||
struct Global;
|
||||
}
|
||||
|
||||
namespace CSMDoc
|
||||
|
@ -53,8 +54,12 @@ namespace CSMDoc
|
|||
|
||||
void addOptionalGmsts();
|
||||
|
||||
void addOptionalGlobals();
|
||||
|
||||
void addOptionalGmst (const ESM::GameSetting& gmst);
|
||||
|
||||
void addOptionalGlobal (const ESM::Global& global);
|
||||
|
||||
public:
|
||||
|
||||
Document (const std::vector<boost::filesystem::path>& files, bool new_);
|
||||
|
|
|
@ -171,7 +171,7 @@ namespace CSMWorld
|
|||
record2.mModified = record;
|
||||
|
||||
mRecords.push_back (record2);
|
||||
mIndex.insert (std::make_pair (id, mRecords.size()-1));
|
||||
mIndex.insert (std::make_pair (Misc::StringUtils::lowerCase (id), mRecords.size()-1));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -306,7 +306,7 @@ namespace CSMWorld
|
|||
void IdCollection<ESXRecordT>::appendRecord (const RecordBase& record)
|
||||
{
|
||||
mRecords.push_back (dynamic_cast<const Record<ESXRecordT>&> (record));
|
||||
mIndex.insert (std::make_pair (getId (record), mRecords.size()-1));
|
||||
mIndex.insert (std::make_pair (Misc::StringUtils::lowerCase (getId (record)), mRecords.size()-1));
|
||||
}
|
||||
|
||||
template<typename ESXRecordT>
|
||||
|
|
|
@ -1,8 +1,11 @@
|
|||
|
||||
#include "operation.hpp"
|
||||
|
||||
#include <sstream>
|
||||
|
||||
#include <QProgressBar>
|
||||
#include <QPushButton>
|
||||
#include <QVBoxLayout>
|
||||
|
||||
#include "../../model/doc/document.hpp"
|
||||
|
||||
void CSVDoc::Operation::updateLabel (int threads)
|
||||
|
@ -28,24 +31,44 @@ void CSVDoc::Operation::updateLabel (int threads)
|
|||
stream << name << " (%p%)";
|
||||
}
|
||||
|
||||
setFormat (stream.str().c_str());
|
||||
mProgressBar->setFormat (stream.str().c_str());
|
||||
}
|
||||
}
|
||||
|
||||
CSVDoc::Operation::Operation (int type) : mType (type), mStalling (false)
|
||||
CSVDoc::Operation::Operation (int type, QWidget* parent) : mType (type), mStalling (false)
|
||||
{
|
||||
/// \todo Add a cancel button or a pop up menu with a cancel item
|
||||
initWidgets();
|
||||
setBarColor( type);
|
||||
updateLabel();
|
||||
|
||||
/// \todo assign different progress bar colours to allow the user to distinguish easily between operation types
|
||||
}
|
||||
|
||||
CSVDoc::Operation::~Operation()
|
||||
{
|
||||
delete mLayout;
|
||||
delete mProgressBar;
|
||||
delete mAbortButton;
|
||||
}
|
||||
|
||||
void CSVDoc::Operation::initWidgets()
|
||||
{
|
||||
mProgressBar = new QProgressBar ();
|
||||
mAbortButton = new QPushButton("Abort");
|
||||
mLayout = new QHBoxLayout();
|
||||
|
||||
mLayout->addWidget (mProgressBar);
|
||||
mLayout->addWidget (mAbortButton);
|
||||
|
||||
connect (mAbortButton, SIGNAL (clicked()), this, SLOT (abortOperation()));
|
||||
}
|
||||
|
||||
void CSVDoc::Operation::setProgress (int current, int max, int threads)
|
||||
{
|
||||
updateLabel (threads);
|
||||
setRange (0, max);
|
||||
setValue (current);
|
||||
mProgressBar->setRange (0, max);
|
||||
mProgressBar->setValue (current);
|
||||
}
|
||||
|
||||
int CSVDoc::Operation::getType() const
|
||||
|
@ -64,8 +87,6 @@ void CSVDoc::Operation::setBarColor (int type)
|
|||
"margin: 2px 1px 1p 2px;"
|
||||
"}";
|
||||
|
||||
// "QProgressBar::chunk {background-color: %1;}";
|
||||
|
||||
QString topColor = "#F2F6F8";
|
||||
QString bottomColor = "#E0EFF9";
|
||||
QString midTopColor = "#D8E1E7";
|
||||
|
@ -82,7 +103,7 @@ void CSVDoc::Operation::setBarColor (int type)
|
|||
midTopColor = "#F17432";
|
||||
midBottomColor = "#EA5507";
|
||||
bottomColor = "#FB955E"; // red gloss #2
|
||||
//break;
|
||||
break;
|
||||
|
||||
case CSMDoc::State_Searching:
|
||||
|
||||
|
@ -90,7 +111,7 @@ void CSVDoc::Operation::setBarColor (int type)
|
|||
midTopColor = "#ABD3EE";
|
||||
midBottomColor = "#89C3EB";
|
||||
bottomColor = "#D5EBFB"; //blue gloss #4
|
||||
//break;
|
||||
break;
|
||||
|
||||
case CSMDoc::State_Verifying:
|
||||
|
||||
|
@ -98,7 +119,7 @@ void CSVDoc::Operation::setBarColor (int type)
|
|||
midTopColor = "#8EB92A";
|
||||
midBottomColor = "#72AA00";
|
||||
bottomColor = "#9ECB2D"; //green gloss
|
||||
//break;
|
||||
break;
|
||||
|
||||
case CSMDoc::State_Compiling:
|
||||
|
||||
|
@ -106,7 +127,7 @@ void CSVDoc::Operation::setBarColor (int type)
|
|||
midTopColor = "#C19E67";
|
||||
midBottomColor = "#B68D4C";
|
||||
bottomColor = "#E9D4B3"; //l Brown 3D
|
||||
//break;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
|
@ -116,5 +137,15 @@ void CSVDoc::Operation::setBarColor (int type)
|
|||
midBottomColor = "#B5C6D0"; // gray gloss for undefined ops
|
||||
}
|
||||
|
||||
setStyleSheet(style.arg(topColor).arg(midTopColor).arg(midBottomColor).arg(bottomColor));
|
||||
mProgressBar->setStyleSheet(style.arg(topColor).arg(midTopColor).arg(midBottomColor).arg(bottomColor));
|
||||
}
|
||||
|
||||
QHBoxLayout *CSVDoc::Operation::getLayout() const
|
||||
{
|
||||
return mLayout;
|
||||
}
|
||||
|
||||
void CSVDoc::Operation::abortOperation()
|
||||
{
|
||||
emit abortOperation (mType);
|
||||
}
|
||||
|
|
|
@ -1,16 +1,23 @@
|
|||
#ifndef CSV_DOC_OPERATION_H
|
||||
#define CSV_DOC_OPERATION_H
|
||||
|
||||
#include <QProgressBar>
|
||||
#include <QObject>
|
||||
|
||||
class QHBoxLayout;
|
||||
class QPushButton;
|
||||
class QProgressBar;
|
||||
|
||||
namespace CSVDoc
|
||||
{
|
||||
class Operation : public QProgressBar
|
||||
class Operation : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
int mType;
|
||||
bool mStalling;
|
||||
QProgressBar *mProgressBar;
|
||||
QPushButton *mAbortButton;
|
||||
QHBoxLayout *mLayout;
|
||||
|
||||
// not implemented
|
||||
Operation (const Operation&);
|
||||
|
@ -20,15 +27,26 @@ namespace CSVDoc
|
|||
|
||||
public:
|
||||
|
||||
Operation (int type);
|
||||
Operation (int type, QWidget *parent);
|
||||
~Operation();
|
||||
|
||||
void setProgress (int current, int max, int threads);
|
||||
|
||||
int getType() const;
|
||||
QHBoxLayout *getLayout() const;
|
||||
|
||||
private:
|
||||
|
||||
void setBarColor (int type);
|
||||
void initWidgets();
|
||||
|
||||
signals:
|
||||
|
||||
void abortOperation (int type);
|
||||
|
||||
private slots:
|
||||
|
||||
void abortOperation();
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
|
||||
#include "operations.hpp"
|
||||
|
||||
#include <QVBoxLayout>
|
||||
#include <QHBoxLayout>
|
||||
|
||||
#include "operation.hpp"
|
||||
|
||||
|
@ -11,12 +11,14 @@ CSVDoc::Operations::Operations()
|
|||
|
||||
setFeatures (QDockWidget::NoDockWidgetFeatures);
|
||||
|
||||
QWidget *widget = new QWidget;
|
||||
setWidget (widget);
|
||||
|
||||
QWidget *widgetContainer = new QWidget (this);
|
||||
mLayout = new QVBoxLayout;
|
||||
|
||||
widget->setLayout (mLayout);
|
||||
widgetContainer->setLayout (mLayout);
|
||||
setWidget (widgetContainer);
|
||||
setVisible (false);
|
||||
setFixedHeight (widgetContainer->height());
|
||||
setTitleBarWidget (new QWidget (this));
|
||||
}
|
||||
|
||||
void CSVDoc::Operations::setProgress (int current, int max, int type, int threads)
|
||||
|
@ -28,11 +30,20 @@ void CSVDoc::Operations::setProgress (int current, int max, int type, int thread
|
|||
return;
|
||||
}
|
||||
|
||||
Operation *operation = new Operation (type);
|
||||
int oldCount = mOperations.size();
|
||||
int newCount = oldCount + 1;
|
||||
|
||||
mLayout->addWidget (operation);
|
||||
Operation *operation = new Operation (type, this);
|
||||
connect (operation, SIGNAL (abortOperation (int)), this, SIGNAL (abortOperation (int)));
|
||||
|
||||
mLayout->addLayout (operation->getLayout());
|
||||
mOperations.push_back (operation);
|
||||
operation->setProgress (current, max, threads);
|
||||
|
||||
if ( oldCount > 0)
|
||||
setFixedHeight (height()/oldCount * newCount);
|
||||
|
||||
setVisible (true);
|
||||
}
|
||||
|
||||
void CSVDoc::Operations::quitOperation (int type)
|
||||
|
@ -40,8 +51,19 @@ void CSVDoc::Operations::quitOperation (int type)
|
|||
for (std::vector<Operation *>::iterator iter (mOperations.begin()); iter!=mOperations.end(); ++iter)
|
||||
if ((*iter)->getType()==type)
|
||||
{
|
||||
int oldCount = mOperations.size();
|
||||
int newCount = oldCount - 1;
|
||||
|
||||
mLayout->removeItem ((*iter)->getLayout());
|
||||
|
||||
delete *iter;
|
||||
mOperations.erase (iter);
|
||||
|
||||
if (oldCount > 1)
|
||||
setFixedHeight (height() / oldCount * newCount);
|
||||
else
|
||||
setVisible (false);
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -31,7 +31,11 @@ namespace CSVDoc
|
|||
|
||||
void quitOperation (int type);
|
||||
///< Calling this function for an operation that is not running is a no-op.
|
||||
|
||||
signals:
|
||||
|
||||
void abortOperation (int type);
|
||||
};
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
#include "subview.hpp"
|
||||
|
||||
CSVDoc::SubView::SubView (const CSMWorld::UniversalId& id) : mUniversalId (id)
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
#include "view.hpp"
|
||||
|
||||
#include <sstream>
|
||||
|
@ -7,6 +6,7 @@
|
|||
#include <QCloseEvent>
|
||||
#include <QMenuBar>
|
||||
#include <QMdiArea>
|
||||
#include <QDockWidget>
|
||||
|
||||
#include "../../model/doc/document.hpp"
|
||||
|
||||
|
@ -117,13 +117,16 @@ void CSVDoc::View::updateActions()
|
|||
mVerify->setEnabled (!(mDocument->getState() & CSMDoc::State_Verifying));
|
||||
}
|
||||
|
||||
CSVDoc::View::View (ViewManager& viewManager, CSMDoc::Document *document, int totalViews)
|
||||
: mViewManager (viewManager), mDocument (document), mViewIndex (totalViews-1), mViewTotal (totalViews)
|
||||
CSVDoc::View::View (ViewManager& viewManager, CSMDoc::Document *document, int totalViews, QMainWindow *viewParent)
|
||||
: mViewManager (viewManager), mDocument (document), mViewIndex (totalViews-1), mViewTotal (totalViews), QMainWindow (viewParent)
|
||||
{
|
||||
setDockOptions (QMainWindow::AllowNestedDocks);
|
||||
|
||||
resize (300, 300); /// \todo get default size from settings and set reasonable minimal size
|
||||
|
||||
mSubViewWindow = new QMainWindow();
|
||||
setCentralWidget (mSubViewWindow);
|
||||
|
||||
mOperations = new Operations;
|
||||
addDockWidget (Qt::BottomDockWidgetArea, mOperations);
|
||||
|
||||
|
@ -133,6 +136,8 @@ CSVDoc::View::View (ViewManager& viewManager, CSMDoc::Document *document, int to
|
|||
|
||||
CSVWorld::addSubViewFactories (mSubViewFactory);
|
||||
CSVTools::addSubViewFactories (mSubViewFactory);
|
||||
|
||||
connect (mOperations, SIGNAL (abortOperation (int)), this, SLOT (abortOperation (int)));
|
||||
}
|
||||
|
||||
CSVDoc::View::~View()
|
||||
|
@ -171,7 +176,7 @@ void CSVDoc::View::updateDocumentState()
|
|||
|
||||
for (int i=0; operations[i]!=-1; ++i)
|
||||
if (!(state & operations[i]))
|
||||
mOperations->quitOperation (operations[i]);
|
||||
mOperations->quitOperation (operations[i]);
|
||||
|
||||
QList<CSVDoc::SubView *> subViews = findChildren<CSVDoc::SubView *>();
|
||||
|
||||
|
@ -195,7 +200,7 @@ void CSVDoc::View::addSubView (const CSMWorld::UniversalId& id)
|
|||
/// \todo add an user setting to reuse sub views (on a per document basis or on a per top level view basis)
|
||||
|
||||
SubView *view = mSubViewFactory.makeSubView (id, *mDocument);
|
||||
addDockWidget (Qt::TopDockWidgetArea, view);
|
||||
mSubViewWindow->addDockWidget (Qt::TopDockWidgetArea, view);
|
||||
|
||||
connect (view, SIGNAL (focusId (const CSMWorld::UniversalId&)), this,
|
||||
SLOT (addSubView (const CSMWorld::UniversalId&)));
|
||||
|
@ -226,4 +231,15 @@ void CSVDoc::View::addGlobalsSubView()
|
|||
void CSVDoc::View::addGmstsSubView()
|
||||
{
|
||||
addSubView (CSMWorld::UniversalId::Type_Gmsts);
|
||||
}
|
||||
}
|
||||
|
||||
void CSVDoc::View::abortOperation (int type)
|
||||
{
|
||||
mDocument->abortOperation (type);
|
||||
updateActions();
|
||||
}
|
||||
|
||||
QDockWidget *CSVDoc::View::getOperations() const
|
||||
{
|
||||
return mOperations;
|
||||
}
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
#include "subviewfactory.hpp"
|
||||
|
||||
class QAction;
|
||||
class QDockWidget;
|
||||
|
||||
namespace CSMDoc
|
||||
{
|
||||
|
@ -40,6 +41,7 @@ namespace CSVDoc
|
|||
std::vector<QAction *> mEditingActions;
|
||||
Operations *mOperations;
|
||||
SubViewFactoryManager mSubViewFactory;
|
||||
QMainWindow* mSubViewWindow;
|
||||
|
||||
// not implemented
|
||||
View (const View&);
|
||||
|
@ -65,7 +67,7 @@ namespace CSVDoc
|
|||
|
||||
public:
|
||||
|
||||
View (ViewManager& viewManager, CSMDoc::Document *document, int totalViews);
|
||||
View (ViewManager& viewManager, CSMDoc::Document *document, int totalViews, QMainWindow *viewParent);
|
||||
///< The ownership of \a document is not transferred to *this.
|
||||
|
||||
virtual ~View();
|
||||
|
@ -80,6 +82,8 @@ namespace CSVDoc
|
|||
|
||||
void updateProgress (int current, int max, int type, int threads);
|
||||
|
||||
QDockWidget *getOperations() const;
|
||||
|
||||
signals:
|
||||
|
||||
void newDocumentRequest();
|
||||
|
@ -101,7 +105,9 @@ namespace CSVDoc
|
|||
void addGlobalsSubView();
|
||||
|
||||
void addGmstsSubView();
|
||||
|
||||
void abortOperation (int type);
|
||||
};
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
|
|
@ -59,7 +59,9 @@ CSVDoc::View *CSVDoc::ViewManager::addView (CSMDoc::Document *document)
|
|||
this, SLOT (progress (int, int, int, int, CSMDoc::Document *)));
|
||||
}
|
||||
|
||||
View *view = new View (*this, document, countViews (document)+1);
|
||||
QMainWindow *mainWindow = new QMainWindow;
|
||||
|
||||
View *view = new View (*this, document, countViews (document)+1, mainWindow);
|
||||
|
||||
mViews.push_back (view);
|
||||
|
||||
|
@ -119,4 +121,4 @@ void CSVDoc::ViewManager::progress (int current, int max, int type, int threads,
|
|||
for (std::vector<View *>::const_iterator iter (mViews.begin()); iter!=mViews.end(); ++iter)
|
||||
if ((*iter)->getDocument()==document)
|
||||
(*iter)->updateProgress (current, max, type, threads);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,11 +19,11 @@
|
|||
|
||||
#include "inventorywindow.hpp"
|
||||
|
||||
static const float BALANCE_CHANGE_INITIAL_PAUSE = 0.5; // in seconds
|
||||
static const float BALANCE_CHANGE_INTERVAL = 0.1; // in seconds
|
||||
|
||||
namespace MWGui
|
||||
{
|
||||
const float TradeWindow::sBalanceChangeInitialPause = 0.5;
|
||||
const float TradeWindow::sBalanceChangeInterval = 0.1;
|
||||
|
||||
TradeWindow::TradeWindow(MWBase::WindowManager& parWindowManager) :
|
||||
WindowBase("openmw_trade_window.layout", parWindowManager)
|
||||
, ContainerBase(NULL) // no drag&drop
|
||||
|
@ -157,7 +157,7 @@ namespace MWGui
|
|||
|
||||
mBalanceChangePause -= frameDuration;
|
||||
if (mBalanceChangePause < 0.0) {
|
||||
mBalanceChangePause += BALANCE_CHANGE_INTERVAL;
|
||||
mBalanceChangePause += sBalanceChangeInterval;
|
||||
if (mBalanceButtonsState == BBS_Increase)
|
||||
onIncreaseButtonTriggered();
|
||||
else if (mBalanceButtonsState == BBS_Decrease)
|
||||
|
@ -296,14 +296,14 @@ namespace MWGui
|
|||
void TradeWindow::onIncreaseButtonPressed(MyGUI::Widget* _sender, int _left, int _top, MyGUI::MouseButton _id)
|
||||
{
|
||||
mBalanceButtonsState = BBS_Increase;
|
||||
mBalanceChangePause = BALANCE_CHANGE_INITIAL_PAUSE;
|
||||
mBalanceChangePause = sBalanceChangeInitialPause;
|
||||
onIncreaseButtonTriggered();
|
||||
}
|
||||
|
||||
void TradeWindow::onDecreaseButtonPressed(MyGUI::Widget* _sender, int _left, int _top, MyGUI::MouseButton _id)
|
||||
{
|
||||
mBalanceButtonsState = BBS_Decrease;
|
||||
mBalanceChangePause = BALANCE_CHANGE_INITIAL_PAUSE;
|
||||
mBalanceChangePause = sBalanceChangeInitialPause;
|
||||
onDecreaseButtonTriggered();
|
||||
}
|
||||
|
||||
|
|
|
@ -37,6 +37,9 @@ namespace MWGui
|
|||
void onFrame(float frameDuration);
|
||||
|
||||
protected:
|
||||
static const float sBalanceChangeInitialPause; // in seconds
|
||||
static const float sBalanceChangeInterval; // in seconds
|
||||
|
||||
MyGUI::Button* mFilterAll;
|
||||
MyGUI::Button* mFilterWeapon;
|
||||
MyGUI::Button* mFilterApparel;
|
||||
|
|
|
@ -163,7 +163,9 @@ void Actors::updateObjectCell(const MWWorld::Ptr &ptr)
|
|||
{
|
||||
/// \note Update key (Ptr's are compared only with refdata so mCell
|
||||
/// on key is outdated), maybe redundant
|
||||
Animation *anim = iter->second;
|
||||
NpcAnimation *anim = static_cast<NpcAnimation *>(iter->second);
|
||||
anim->updateParts(MWWorld::Class::get(ptr).getInventoryStore(ptr));
|
||||
|
||||
mAllActors.erase(iter);
|
||||
mAllActors[ptr] = anim;
|
||||
}
|
||||
|
|
|
@ -48,21 +48,21 @@ NpcAnimation::~NpcAnimation()
|
|||
NpcAnimation::NpcAnimation(const MWWorld::Ptr& ptr, Ogre::SceneNode* node, MWWorld::InventoryStore& inv, int visibilityFlags)
|
||||
: Animation(),
|
||||
mStateID(-1),
|
||||
mInv(inv),
|
||||
mInv(&inv),
|
||||
mTimeToChange(0),
|
||||
mVisibilityFlags(visibilityFlags),
|
||||
mRobe(mInv.end()),
|
||||
mHelmet(mInv.end()),
|
||||
mShirt(mInv.end()),
|
||||
mCuirass(mInv.end()),
|
||||
mGreaves(mInv.end()),
|
||||
mPauldronL(mInv.end()),
|
||||
mPauldronR(mInv.end()),
|
||||
mBoots(mInv.end()),
|
||||
mPants(mInv.end()),
|
||||
mGloveL(mInv.end()),
|
||||
mGloveR(mInv.end()),
|
||||
mSkirtIter(mInv.end())
|
||||
mRobe(mInv->end()),
|
||||
mHelmet(mInv->end()),
|
||||
mShirt(mInv->end()),
|
||||
mCuirass(mInv->end()),
|
||||
mGreaves(mInv->end()),
|
||||
mPauldronL(mInv->end()),
|
||||
mPauldronR(mInv->end()),
|
||||
mBoots(mInv->end()),
|
||||
mPants(mInv->end()),
|
||||
mGloveL(mInv->end()),
|
||||
mGloveR(mInv->end()),
|
||||
mSkirtIter(mInv->end())
|
||||
{
|
||||
mNpc = ptr.get<ESM::NPC>()->mBase;
|
||||
|
||||
|
@ -160,7 +160,7 @@ void NpcAnimation::updateParts()
|
|||
};
|
||||
for(size_t i = 0;i < sizeof(slotlist)/sizeof(slotlist[0]);i++)
|
||||
{
|
||||
MWWorld::ContainerStoreIterator iter = mInv.getSlot(slotlist[i].slot);
|
||||
MWWorld::ContainerStoreIterator iter = mInv->getSlot(slotlist[i].slot);
|
||||
if(*slotlist[i].iter != iter)
|
||||
{
|
||||
*slotlist[i].iter = iter;
|
||||
|
@ -171,7 +171,7 @@ void NpcAnimation::updateParts()
|
|||
|
||||
if(apparelChanged)
|
||||
{
|
||||
if(mRobe != mInv.end())
|
||||
if(mRobe != mInv->end())
|
||||
{
|
||||
MWWorld::Ptr ptr = *mRobe;
|
||||
|
||||
|
@ -191,7 +191,7 @@ void NpcAnimation::updateParts()
|
|||
reserveIndividualPart(ESM::PRT_RPauldron, MWWorld::InventoryStore::Slot_Robe, 5);
|
||||
reserveIndividualPart(ESM::PRT_LPauldron, MWWorld::InventoryStore::Slot_Robe, 5);
|
||||
}
|
||||
if(mSkirtIter != mInv.end())
|
||||
if(mSkirtIter != mInv->end())
|
||||
{
|
||||
MWWorld::Ptr ptr = *mSkirtIter;
|
||||
|
||||
|
@ -203,39 +203,39 @@ void NpcAnimation::updateParts()
|
|||
reserveIndividualPart(ESM::PRT_LLeg, MWWorld::InventoryStore::Slot_Skirt, 4);
|
||||
}
|
||||
|
||||
if(mHelmet != mInv.end())
|
||||
if(mHelmet != mInv->end())
|
||||
{
|
||||
removeIndividualPart(ESM::PRT_Hair);
|
||||
const ESM::Armor *armor = (mHelmet->get<ESM::Armor>())->mBase;
|
||||
std::vector<ESM::PartReference> parts = armor->mParts.mParts;
|
||||
addPartGroup(MWWorld::InventoryStore::Slot_Helmet, 3, parts);
|
||||
}
|
||||
if(mCuirass != mInv.end())
|
||||
if(mCuirass != mInv->end())
|
||||
{
|
||||
const ESM::Armor *armor = (mCuirass->get<ESM::Armor>())->mBase;
|
||||
std::vector<ESM::PartReference> parts = armor->mParts.mParts;
|
||||
addPartGroup(MWWorld::InventoryStore::Slot_Cuirass, 3, parts);
|
||||
}
|
||||
if(mGreaves != mInv.end())
|
||||
if(mGreaves != mInv->end())
|
||||
{
|
||||
const ESM::Armor *armor = (mGreaves->get<ESM::Armor>())->mBase;
|
||||
std::vector<ESM::PartReference> parts = armor->mParts.mParts;
|
||||
addPartGroup(MWWorld::InventoryStore::Slot_Greaves, 3, parts);
|
||||
}
|
||||
|
||||
if(mPauldronL != mInv.end())
|
||||
if(mPauldronL != mInv->end())
|
||||
{
|
||||
const ESM::Armor *armor = (mPauldronL->get<ESM::Armor>())->mBase;
|
||||
std::vector<ESM::PartReference> parts = armor->mParts.mParts;
|
||||
addPartGroup(MWWorld::InventoryStore::Slot_LeftPauldron, 3, parts);
|
||||
}
|
||||
if(mPauldronR != mInv.end())
|
||||
if(mPauldronR != mInv->end())
|
||||
{
|
||||
const ESM::Armor *armor = (mPauldronR->get<ESM::Armor>())->mBase;
|
||||
std::vector<ESM::PartReference> parts = armor->mParts.mParts;
|
||||
addPartGroup(MWWorld::InventoryStore::Slot_RightPauldron, 3, parts);
|
||||
}
|
||||
if(mBoots != mInv.end())
|
||||
if(mBoots != mInv->end())
|
||||
{
|
||||
if(mBoots->getTypeName() == typeid(ESM::Clothing).name())
|
||||
{
|
||||
|
@ -250,7 +250,7 @@ void NpcAnimation::updateParts()
|
|||
addPartGroup(MWWorld::InventoryStore::Slot_Boots, 3, parts);
|
||||
}
|
||||
}
|
||||
if(mGloveL != mInv.end())
|
||||
if(mGloveL != mInv->end())
|
||||
{
|
||||
if(mGloveL->getTypeName() == typeid(ESM::Clothing).name())
|
||||
{
|
||||
|
@ -265,7 +265,7 @@ void NpcAnimation::updateParts()
|
|||
addPartGroup(MWWorld::InventoryStore::Slot_LeftGauntlet, 3, parts);
|
||||
}
|
||||
}
|
||||
if(mGloveR != mInv.end())
|
||||
if(mGloveR != mInv->end())
|
||||
{
|
||||
if(mGloveR->getTypeName() == typeid(ESM::Clothing).name())
|
||||
{
|
||||
|
@ -282,13 +282,13 @@ void NpcAnimation::updateParts()
|
|||
|
||||
}
|
||||
|
||||
if(mShirt != mInv.end())
|
||||
if(mShirt != mInv->end())
|
||||
{
|
||||
const ESM::Clothing *clothes = (mShirt->get<ESM::Clothing>())->mBase;
|
||||
std::vector<ESM::PartReference> parts = clothes->mParts.mParts;
|
||||
addPartGroup(MWWorld::InventoryStore::Slot_Shirt, 2, parts);
|
||||
}
|
||||
if(mPants != mInv.end())
|
||||
if(mPants != mInv->end())
|
||||
{
|
||||
const ESM::Clothing *clothes = (mPants->get<ESM::Clothing>())->mBase;
|
||||
std::vector<ESM::PartReference> parts = clothes->mParts.mParts;
|
||||
|
|
|
@ -17,7 +17,7 @@ namespace MWRender{
|
|||
|
||||
class NpcAnimation: public Animation{
|
||||
private:
|
||||
MWWorld::InventoryStore& mInv;
|
||||
MWWorld::InventoryStore *mInv;
|
||||
int mStateID;
|
||||
|
||||
int mPartslots[27]; //Each part slot is taken by clothing, armor, or is empty
|
||||
|
@ -78,7 +78,13 @@ public:
|
|||
virtual ~NpcAnimation();
|
||||
NifOgre::EntityList insertBoundedPart(const std::string &mesh, int group, const std::string &bonename);
|
||||
virtual void runAnimation(float timepassed);
|
||||
|
||||
void updateParts();
|
||||
void updateParts(MWWorld::InventoryStore &inventory) {
|
||||
mInv = &inventory;
|
||||
updateParts();
|
||||
}
|
||||
|
||||
void removeEntities(NifOgre::EntityList &entities);
|
||||
void removeIndividualPart(int type);
|
||||
void reserveIndividualPart(int type, int group, int priority);
|
||||
|
|
|
@ -514,9 +514,5 @@ void Objects::updateObjectCell(const MWWorld::Ptr &ptr)
|
|||
node = mCellSceneNodes[newCell];
|
||||
}
|
||||
node->addChild(ptr.getRefData().getBaseNode());
|
||||
|
||||
/// \note Still unaware how to move aabb and static w/o full rebuild,
|
||||
/// moving static objects may cause problems
|
||||
insertMesh(ptr, MWWorld::Class::get(ptr).getModel(ptr));
|
||||
}
|
||||
|
||||
|
|
|
@ -25,7 +25,7 @@ namespace
|
|||
const MWWorld::Class& class_ =
|
||||
MWWorld::Class::get (MWWorld::Ptr (&*cellRefList.mList.begin(), &cell));
|
||||
|
||||
int numRefs = cellRefList.mList.size();
|
||||
size_t numRefs = cellRefList.mList.size();
|
||||
int current = 0;
|
||||
for (typename T::List::iterator it = cellRefList.mList.begin();
|
||||
it != cellRefList.mList.end(); it++)
|
||||
|
|
|
@ -17,7 +17,7 @@ namespace MWWorld
|
|||
virtual void setUp() {}
|
||||
virtual void listIdentifier(std::vector<std::string> &list) const {}
|
||||
|
||||
virtual int getSize() const = 0;
|
||||
virtual size_t getSize() const = 0;
|
||||
virtual void load(ESM::ESMReader &esm, const std::string &id) = 0;
|
||||
|
||||
virtual bool eraseStatic(const std::string &id) {return false;}
|
||||
|
@ -158,7 +158,7 @@ namespace MWWorld
|
|||
return mShared.end();
|
||||
}
|
||||
|
||||
int getSize() const {
|
||||
size_t getSize() const {
|
||||
return mShared.size();
|
||||
}
|
||||
|
||||
|
@ -275,11 +275,11 @@ namespace MWWorld
|
|||
return ptr;
|
||||
}
|
||||
|
||||
int getSize() const {
|
||||
size_t getSize() const {
|
||||
return mStatic.size();
|
||||
}
|
||||
|
||||
int getSize(size_t plugin) const {
|
||||
size_t getSize(size_t plugin) const {
|
||||
assert(plugin < mStatic.size());
|
||||
return mStatic[plugin].size();
|
||||
}
|
||||
|
@ -344,7 +344,7 @@ namespace MWWorld
|
|||
|
||||
}
|
||||
|
||||
int getSize() const {
|
||||
size_t getSize() const {
|
||||
return mStatic.size();
|
||||
}
|
||||
|
||||
|
@ -573,7 +573,7 @@ namespace MWWorld
|
|||
return 0;
|
||||
}
|
||||
|
||||
int getSize() const {
|
||||
size_t getSize() const {
|
||||
return mSharedInt.size() + mSharedExt.size();
|
||||
}
|
||||
|
||||
|
@ -707,7 +707,7 @@ namespace MWWorld
|
|||
mStatic.back().load(esm);
|
||||
}
|
||||
|
||||
int getSize() const {
|
||||
size_t getSize() const {
|
||||
return mStatic.size();
|
||||
}
|
||||
|
||||
|
@ -936,7 +936,7 @@ namespace MWWorld
|
|||
}
|
||||
}
|
||||
|
||||
int getSize() const {
|
||||
size_t getSize() const {
|
||||
return mStatic.size();
|
||||
}
|
||||
|
||||
|
|
|
@ -746,7 +746,11 @@ namespace MWWorld
|
|||
copyObjectToCell(ptr, newCell, pos);
|
||||
else if (!mWorldScene->isCellActive(newCell))
|
||||
{
|
||||
MWWorld::Class::get(ptr).copyToCell(ptr, newCell);
|
||||
MWWorld::Class::get(ptr)
|
||||
.copyToCell(ptr, newCell)
|
||||
.getRefData()
|
||||
.setBaseNode(0);
|
||||
|
||||
mWorldScene->removeObjectFromScene(ptr);
|
||||
mLocalScripts.remove(ptr);
|
||||
removeContainerScripts (ptr);
|
||||
|
|
|
@ -136,15 +136,15 @@ void ESMWriter::writeHNString(const std::string& name, const std::string& data)
|
|||
endRecord(name);
|
||||
}
|
||||
|
||||
void ESMWriter::writeHNString(const std::string& name, const std::string& data, int size)
|
||||
void ESMWriter::writeHNString(const std::string& name, const std::string& data, size_t size)
|
||||
{
|
||||
assert(static_cast<int> (data.size()) <= size);
|
||||
assert(data.size() <= size);
|
||||
startSubRecord(name);
|
||||
writeHString(data);
|
||||
|
||||
if (static_cast<int> (data.size()) < size)
|
||||
if (data.size() < size)
|
||||
{
|
||||
for (int i = data.size(); i < size; ++i)
|
||||
for (size_t i = data.size(); i < size; ++i)
|
||||
write("\0",1);
|
||||
}
|
||||
|
||||
|
@ -177,7 +177,7 @@ void ESMWriter::writeName(const std::string& name)
|
|||
write(name.c_str(), name.size());
|
||||
}
|
||||
|
||||
void ESMWriter::write(const char* data, int size)
|
||||
void ESMWriter::write(const char* data, size_t size)
|
||||
{
|
||||
if (count && !m_records.empty())
|
||||
{
|
||||
|
|
|
@ -16,7 +16,7 @@ class ESMWriter
|
|||
{
|
||||
std::string name;
|
||||
std::streampos position;
|
||||
int size;
|
||||
size_t size;
|
||||
};
|
||||
|
||||
public:
|
||||
|
@ -35,7 +35,7 @@ public:
|
|||
void close();
|
||||
|
||||
void writeHNString(const std::string& name, const std::string& data);
|
||||
void writeHNString(const std::string& name, const std::string& data, int size);
|
||||
void writeHNString(const std::string& name, const std::string& data, size_t size);
|
||||
void writeHNCString(const std::string& name, const std::string& data)
|
||||
{
|
||||
startSubRecord(name);
|
||||
|
@ -76,7 +76,7 @@ public:
|
|||
}
|
||||
|
||||
template<typename T>
|
||||
void writeT(const T& data, int size)
|
||||
void writeT(const T& data, size_t size)
|
||||
{
|
||||
write((char*)&data, size);
|
||||
}
|
||||
|
@ -87,7 +87,7 @@ public:
|
|||
void writeHString(const std::string& data);
|
||||
void writeHCString(const std::string& data);
|
||||
void writeName(const std::string& data);
|
||||
void write(const char* data, int size);
|
||||
void write(const char* data, size_t size);
|
||||
|
||||
private:
|
||||
std::list<MasterData> m_masters;
|
||||
|
|
|
@ -37,7 +37,7 @@
|
|||
|
||||
//TODO: when threading is needed, enable these
|
||||
//#include <boost/mutex.hpp>
|
||||
//#include <boost/thread/locks.hpp>
|
||||
#include <boost/thread/locks.hpp>
|
||||
|
||||
namespace Nif
|
||||
{
|
||||
|
|
|
@ -70,7 +70,7 @@ Utf8Encoder::Utf8Encoder(const FromType sourceEncoding):
|
|||
}
|
||||
}
|
||||
|
||||
std::string Utf8Encoder::getUtf8(const char* input, int size)
|
||||
std::string Utf8Encoder::getUtf8(const char* input, size_t size)
|
||||
{
|
||||
// Double check that the input string stops at some point (it might
|
||||
// contain zero terminators before this, inside its own data, which
|
||||
|
@ -111,7 +111,7 @@ std::string Utf8Encoder::getUtf8(const char* input, int size)
|
|||
return std::string(&mOutput[0], outlen);
|
||||
}
|
||||
|
||||
std::string Utf8Encoder::getLegacyEnc(const char *input, int size)
|
||||
std::string Utf8Encoder::getLegacyEnc(const char *input, size_t size)
|
||||
{
|
||||
// Double check that the input string stops at some point (it might
|
||||
// contain zero terminators before this, inside its own data, which
|
||||
|
|
|
@ -27,13 +27,13 @@ namespace ToUTF8
|
|||
Utf8Encoder(FromType sourceEncoding);
|
||||
|
||||
// Convert to UTF8 from the previously given code page.
|
||||
std::string getUtf8(const char *input, int size);
|
||||
std::string getUtf8(const char *input, size_t size);
|
||||
inline std::string getUtf8(const std::string &str)
|
||||
{
|
||||
return getUtf8(str.c_str(), str.size());
|
||||
}
|
||||
|
||||
std::string getLegacyEnc(const char *input, int size);
|
||||
std::string getLegacyEnc(const char *input, size_t size);
|
||||
inline std::string getLegacyEnc(const std::string &str)
|
||||
{
|
||||
return getLegacyEnc(str.c_str(), str.size());
|
||||
|
|
|
@ -40,6 +40,7 @@ Nikolay Kasyanov (corristo)
|
|||
Pieter van der Kloet (pvdk)
|
||||
Roman Melnik (Kromgart)
|
||||
Sebastian Wick (swick)
|
||||
Sergey Shambir
|
||||
Sylvain T. (Garvek)
|
||||
Tom Mason (wheybags)
|
||||
|
||||
|
|
|
@ -2,41 +2,45 @@
|
|||
|
||||
<MyGUI type="Layout">
|
||||
|
||||
<Widget type="Window" skin="" layer="Windows" align="Left|Top" position="0 0 512 256" name="_Main">
|
||||
<Widget type="Window" skin="" layer="Windows" align="Left|Top" position="0 0 565 390" name="_Main">
|
||||
|
||||
<Widget type="ImageBox" skin="ImageBox" position_real="0 0 1 1" align="Top|Right" name="BookImage">
|
||||
<Widget type="ImageBox" skin="ImageBox" position="0 0 565 390" align="Top|Right" name="JImage">
|
||||
<Property key="ImageTexture" value="textures\tx_menubook.dds"/>
|
||||
<Property key="ImageCoord" value="50 0 412 256"/>
|
||||
|
||||
<Widget type="ImageButton" skin="ImageBox" position="251 220 128 32" name="NextPageBTN">
|
||||
<Widget type="ImageButton" skin="ImageBox" position="300 350 48 32" name="NextPageBTN">
|
||||
<Property key="ImageCoord" value="0 0 48 32"/>
|
||||
<Property key="ImageHighlighted" value="textures\tx_menubook_next_over.dds"/>
|
||||
<Property key="ImageNormal" value="textures\tx_menubook_next_idle.dds"/>
|
||||
<Property key="ImageNormal" value="textures\tx_menubook_next_idle.dds"/>
|
||||
<Property key="ImagePushed" value="textures\tx_menubook_next_pressed.dds"/>
|
||||
</Widget>
|
||||
<Widget type="ImageButton" skin="ImageBox" position="165 220 128 32" name="PrevPageBTN">
|
||||
<Widget type="ImageButton" skin="ImageBox" position="220 350 48 32" name="PrevPageBTN">
|
||||
<Property key="ImageCoord" value="0 0 48 32"/>
|
||||
<Property key="ImageHighlighted" value="textures\tx_menubook_prev_over.dds"/>
|
||||
<Property key="ImageNormal" value="textures\tx_menubook_prev_idle.dds"/>
|
||||
<Property key="ImagePushed" value="textures\tx_menubook_prev_pressed.dds"/>
|
||||
</Widget>
|
||||
<Widget type="ImageButton" skin="ImageBox" position="75 220 128 32" name="TakeButton">
|
||||
<Widget type="ImageButton" skin="ImageBox" position="40 350 64 32" name="TakeButton">
|
||||
<Property key="ImageHighlighted" value="textures\tx_menubook_take_over.dds"/>
|
||||
<Property key="ImageNormal" value="textures\tx_menubook_take_idle.dds"/>
|
||||
<Property key="ImagePushed" value="textures\tx_menubook_take_pressed.dds"/>
|
||||
</Widget>
|
||||
<Widget type="ImageButton" skin="ImageBox" position="360 220 128 32" name="CloseButton">
|
||||
<Widget type="ImageButton" skin="ImageBox" position="475 350 48 32" name="CloseButton">
|
||||
<Property key="ImageCoord" value="0 0 48 32"/>
|
||||
<Property key="ImageHighlighted" value="textures\tx_menubook_close_over.dds"/>
|
||||
<Property key="ImageNormal" value="textures\tx_menubook_close_idle.dds"/>
|
||||
<Property key="ImagePushed" value="textures\tx_menubook_close_pressed.dds"/>
|
||||
</Widget>
|
||||
|
||||
<Widget type="TextBox" skin="NormalText" position="155 215 24 24" name="LeftPageNumber">
|
||||
<Widget type="TextBox" skin="NormalText" position="150 350 32 16" name="LeftPageNumber">
|
||||
<Property key="TextColour" value="0 0 0"/>
|
||||
</Widget>
|
||||
<Widget type="TextBox" skin="NormalText" position="325 215 24 24" name="RightPageNumber">
|
||||
<Widget type="TextBox" skin="NormalText" position="410 350 32 16" name="RightPageNumber">
|
||||
<Property key="TextColour" value="0 0 0"/>
|
||||
</Widget>
|
||||
|
||||
<Widget type="Widget" skin="" position_real="0.15 0.1 0.3 0.75" name = "LeftPage"/>
|
||||
<Widget type="Widget" skin="" position_real="0.55 0.1 0.3 0.75" name = "RightPage"/>
|
||||
<Widget type="Widget" skin="" position="30 22 240 300" name = "LeftPage"/>
|
||||
<Widget type="Widget" skin="" position="300 22 240 300" name = "RightPage"/>
|
||||
</Widget>
|
||||
</Widget>
|
||||
|
||||
|
|
Loading…
Reference in a new issue