mirror of
https://github.com/QuasarApp/Snake.git
synced 2025-04-27 10:14:39 +00:00
works store
This commit is contained in:
parent
dd206439d6
commit
ce75c0c5ee
@ -111,6 +111,13 @@
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>StoreView</name>
|
||||
<message>
|
||||
<source>Buy</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>TestLvl::TestSnake</name>
|
||||
<message>
|
||||
|
@ -111,6 +111,13 @@
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>StoreView</name>
|
||||
<message>
|
||||
<source>Buy</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>TestLvl::TestSnake</name>
|
||||
<message>
|
||||
|
@ -111,6 +111,13 @@
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>StoreView</name>
|
||||
<message>
|
||||
<source>Buy</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>TestLvl::TestSnake</name>
|
||||
<message>
|
||||
|
@ -111,6 +111,13 @@
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>StoreView</name>
|
||||
<message>
|
||||
<source>Buy</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>TestLvl::TestSnake</name>
|
||||
<message>
|
||||
|
@ -111,6 +111,13 @@
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>StoreView</name>
|
||||
<message>
|
||||
<source>Buy</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>TestLvl::TestSnake</name>
|
||||
<message>
|
||||
|
@ -111,6 +111,13 @@
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>StoreView</name>
|
||||
<message>
|
||||
<source>Buy</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>TestLvl::TestSnake</name>
|
||||
<message>
|
||||
|
@ -111,6 +111,13 @@
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>StoreView</name>
|
||||
<message>
|
||||
<source>Buy</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>TestLvl::TestSnake</name>
|
||||
<message>
|
||||
|
@ -111,6 +111,13 @@
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>StoreView</name>
|
||||
<message>
|
||||
<source>Buy</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>TestLvl::TestSnake</name>
|
||||
<message>
|
||||
|
@ -111,6 +111,13 @@
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>StoreView</name>
|
||||
<message>
|
||||
<source>Buy</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>TestLvl::TestSnake</name>
|
||||
<message>
|
||||
|
@ -111,6 +111,13 @@
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>StoreView</name>
|
||||
<message>
|
||||
<source>Buy</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>TestLvl::TestSnake</name>
|
||||
<message>
|
||||
|
@ -10,10 +10,6 @@ StoreViewModel::StoreViewModel() {
|
||||
|
||||
}
|
||||
|
||||
QModelIndex StoreViewModel::index(int row, int column, const QModelIndex &parent) const {
|
||||
return QAbstractListModel::index(row, column, parent);
|
||||
}
|
||||
|
||||
int StoreViewModel::rowCount(const QModelIndex &) const {
|
||||
return _keys.size();
|
||||
}
|
||||
@ -65,12 +61,17 @@ void StoreViewModel::init(Store *store, User *user) {
|
||||
|
||||
int diff = store->size() - _keys.size();
|
||||
|
||||
if (diff > 0) {
|
||||
beginInsertRows({}, _keys.size(), store->size() - 1);
|
||||
|
||||
auto update = [this](Store *store) {
|
||||
_store = store;
|
||||
_keys = store->keysList();
|
||||
for (int index = 0; index < _keys.size(); ++index) {
|
||||
_keysIndexes[index] = _keys[index];
|
||||
}
|
||||
};
|
||||
|
||||
if (diff > 0) {
|
||||
beginInsertRows({}, _keys.size(), store->size() - 1);
|
||||
update(store);
|
||||
endInsertRows();
|
||||
|
||||
} else if (diff == 0) {
|
||||
@ -78,17 +79,26 @@ void StoreViewModel::init(Store *store, User *user) {
|
||||
|
||||
} else {
|
||||
beginRemoveRows({}, store->size(), _keys.size() - 1);
|
||||
|
||||
_store = store;
|
||||
_keys = store->keysList();
|
||||
|
||||
update(store);
|
||||
endRemoveRows();
|
||||
}
|
||||
}
|
||||
|
||||
void StoreViewModel::setUser(User *user) {
|
||||
if (_currentUser) {
|
||||
disconnect(_currentUser, &User::sigItemsUlocked,
|
||||
this, &StoreViewModel::handleItemsUnlocked);
|
||||
|
||||
}
|
||||
|
||||
_currentUser = user;
|
||||
emit dataChanged(index(0,0), index(rowCount() - 1, columnCount() - 1), {ItemWasBuy});
|
||||
|
||||
if (_currentUser) {
|
||||
connect(_currentUser, &User::sigItemsUlocked,
|
||||
this, &StoreViewModel::handleItemsUnlocked);
|
||||
|
||||
handleItemsUnlocked(_currentUser->unlockedItems());
|
||||
}
|
||||
}
|
||||
|
||||
bool StoreViewModel::visible() const {
|
||||
@ -107,4 +117,11 @@ void StoreViewModel::buy(int item) {
|
||||
_store->buy(*_currentUser, item);
|
||||
}
|
||||
}
|
||||
|
||||
void StoreViewModel::handleItemsUnlocked (const QSet<int> & ) {
|
||||
|
||||
emit dataChanged(index(0,0), index(_keys.size() - 1, 0), {ItemWasBuy});
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -29,7 +29,6 @@ class StoreViewModel: public QAbstractListModel
|
||||
public:
|
||||
StoreViewModel();
|
||||
|
||||
QModelIndex index(int row, int column, const QModelIndex &parent = {}) const override;
|
||||
int rowCount(const QModelIndex &parent = {}) const override;
|
||||
int columnCount(const QModelIndex &parent = {}) const override;
|
||||
QVariant data(const QModelIndex &index, int role) const override;
|
||||
@ -68,10 +67,18 @@ public:
|
||||
Q_INVOKABLE void buy(int item);
|
||||
|
||||
signals:
|
||||
/**
|
||||
* @brief visibleChanged This slot emited when store visibel changed
|
||||
*/
|
||||
void visibleChanged();
|
||||
|
||||
private slots:
|
||||
void handleItemsUnlocked(const QSet<int> &);
|
||||
|
||||
private:
|
||||
|
||||
void updateView();
|
||||
|
||||
enum StoreRoles {
|
||||
ItemId,
|
||||
ItemName,
|
||||
@ -82,8 +89,10 @@ private:
|
||||
|
||||
Store *_store = nullptr;
|
||||
QList<int> _keys;
|
||||
QHash<int, int> _keysIndexes;
|
||||
User* _currentUser = nullptr;
|
||||
bool _visible = false;
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -60,7 +60,7 @@ bool User::isUnlocked(int item) const {
|
||||
|
||||
void User::unclokItem(int item) {
|
||||
_unlockedItems.insert(item);
|
||||
emit itemUlocked({item});
|
||||
emit sigItemsUlocked({item});
|
||||
}
|
||||
|
||||
void User::droppItem(int item) {
|
||||
@ -69,7 +69,7 @@ void User::droppItem(int item) {
|
||||
|
||||
void User::setUnlockedItems(const QSet<int> &newUnlockedItems) {
|
||||
_unlockedItems = newUnlockedItems;
|
||||
emit itemUlocked(newUnlockedItems);
|
||||
emit sigItemsUlocked(newUnlockedItems);
|
||||
}
|
||||
|
||||
int User::recalcTier() {
|
||||
|
@ -145,10 +145,10 @@ signals:
|
||||
void xpChanged();
|
||||
|
||||
/**
|
||||
* @brief itemUlocked This signal emited when user unlocked item.
|
||||
* @brief sigItemsUlocked This signal emited when user unlocked item.
|
||||
* @param unclokedItems This is unlocked items set. Each items in the set is id of the unclocked item.
|
||||
*/
|
||||
void itemUlocked(const QSet<int> & unclokedItems);
|
||||
void sigItemsUlocked(const QSet<int> & unclokedItems);
|
||||
|
||||
protected:
|
||||
/**
|
||||
|
Loading…
x
Reference in New Issue
Block a user