Commit 9169d3a8 authored by Zack's avatar Zack
Browse files

fix: conflicts && add: new translation

parents 8928a699 ca60a469
......@@ -21,7 +21,7 @@ Dependencies:
- [protobuf](http://code.google.com/p/protobuf/)
- [CMake](http://www.cmake.org/)
The server requires an additional dependency:
The server requires an additional dependency when compiled under Qt4:
- [libgcrypt](http://www.gnu.org/software/libgcrypt/)
......
......@@ -51,21 +51,24 @@ Section "Application" SecApplication
SectionEnd
Section "Update configuration" SecUpdateConfig
WriteRegStr HKCU "Software\Cockatrice\Cockatrice\paths" "carddatabase" "$APPDATA\Cockatrice\cards.xml"
WriteRegStr HKCU "Software\Cockatrice\Cockatrice\paths" "decks" "$APPDATA\Cockatrice\decks"
WriteRegStr HKCU "Software\Cockatrice\Cockatrice\paths" "pics" "$APPDATA\Cockatrice\pics"
WriteRegStr HKCU "Software\Cockatrice\Cockatrice\sound" "path" "$APPDATA\Cockatrice\sounds"
SetShellVarContext current
WriteRegStr HKCU "Software\Cockatrice\Cockatrice\paths" "carddatabase" "$LOCALAPPDATA\Cockatrice\cards.xml"
WriteRegStr HKCU "Software\Cockatrice\Cockatrice\paths" "decks" "$LOCALAPPDATA\Cockatrice\decks"
WriteRegStr HKCU "Software\Cockatrice\Cockatrice\paths" "pics" "$LOCALAPPDATA\Cockatrice\pics"
WriteRegStr HKCU "Software\Cockatrice\Cockatrice\sound" "path" "$LOCALAPPDATA\Cockatrice\sounds"
SectionEnd
Section "Start menu item" SecStartMenu
SetShellVarContext all
createDirectory "$SMPROGRAMS\Cockatrice"
createShortCut "$SMPROGRAMS\Cockatrice\Cockatrice.lnk" "$INSTDIR\cockatrice.exe" '--debug-output'
createShortCut "$SMPROGRAMS\Cockatrice\Oracle.lnk" "$INSTDIR\oracle.exe"
createShortCut "$SMPROGRAMS\Cockatrice\Servatrice.lnk" "$INSTDIR\servatrice.exe"
createShortCut "$SMPROGRAMS\Cockatrice\Usermanual.lnk" "$INSTDIR\Usermanual.pdf"
SectionEnd
Section Uninstall
SetShellVarContext all
SetShellVarContext all
RMDir /r "$INSTDIR\zonebg"
RMDir /r "$INSTDIR\plugins"
RMDir /r "$INSTDIR\sounds"
......@@ -73,18 +76,23 @@ SetShellVarContext all
Delete "$INSTDIR\uninstall.exe"
Delete "$INSTDIR\cockatrice.exe"
Delete "$INSTDIR\oracle.exe"
Delete "$INSTDIR\servatrice.exe"
Delete "$INSTDIR\Usermanual.pdf"
Delete "$INSTDIR\libprotobuf.lib"
Delete "$INSTDIR\Qt*.dll"
Delete "$INSTDIR\icu*.dll"
Delete "$INSTDIR\qt.conf"
Delete "$INSTDIR\qdebug.txt"
Delete "$INSTDIR\servatrice.sql"
Delete "$INSTDIR\servatrice.ini.example"
RMDir "$INSTDIR"
RMDir "$SMPROGRAMS\Cockatrice"
DeleteRegKey HKCU "Software\Cockatrice"
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Cockatrice"
SetShellVarContext current
DeleteRegKey HKCU "Software\Cockatrice"
SectionEnd
LangString DESC_SecApplication ${LANG_ENGLISH} "Cockatrice program files"
......
cmake/headerimage.bmp

33.5 KB | W: | H:

cmake/headerimage.bmp

25.2 KB | W: | H:

cmake/headerimage.bmp
cmake/headerimage.bmp
cmake/headerimage.bmp
cmake/headerimage.bmp
  • 2-up
  • Swipe
  • Onion skin
cmake/leftimage.bmp

201 KB | W: | H:

cmake/leftimage.bmp

151 KB | W: | H:

cmake/leftimage.bmp
cmake/leftimage.bmp
cmake/leftimage.bmp
cmake/leftimage.bmp
  • 2-up
  • Swipe
  • Onion skin
cockatrice/resources/appicon.ico

345 KB | W: | H:

cockatrice/resources/appicon.ico

14.7 KB | W: | H:

cockatrice/resources/appicon.ico
cockatrice/resources/appicon.ico
cockatrice/resources/appicon.ico
cockatrice/resources/appicon.ico
  • 2-up
  • Swipe
  • Onion skin
This diff is collapsed.
cockatrice/resources/cockatrice.png

2.8 KB | W: | H:

cockatrice/resources/cockatrice.png

6.09 KB | W: | H:

cockatrice/resources/cockatrice.png
cockatrice/resources/cockatrice.png
cockatrice/resources/cockatrice.png
cockatrice/resources/cockatrice.png
  • 2-up
  • Swipe
  • Onion skin
This diff is collapsed.
This diff is collapsed.
......@@ -76,8 +76,8 @@ void SetList::sortByKey()
qSort(begin(), end(), CompareFunctor());
}
PictureToLoad::PictureToLoad(CardInfo *_card, bool _stripped, bool _hq)
: card(_card), stripped(_stripped), setIndex(0), hq(_hq)
PictureToLoad::PictureToLoad(CardInfo *_card, bool _hq)
: card(_card), setIndex(0), hq(_hq)
{
if (card) {
sortedSets = card->getSets();
......@@ -135,14 +135,14 @@ void PictureLoader::processLoadQueue()
mutex.unlock();
//The list of paths to the folders in which to search for images
QList<QString> picsPaths = QList<QString>() << _picsPath + "/CUSTOM/" + ptl.getCard()->getCorrectedName() + ".full";
QList<QString> picsPaths = QList<QString>() << _picsPath + "/CUSTOM/" + ptl.getCard()->getCorrectedName();
QString setName=ptl.getSetName();
if(!setName.isEmpty())
{
picsPaths << _picsPath + "/" + setName + "/" + ptl.getCard()->getCorrectedName() + ".full"
<< _picsPath + "/downloadedPics/" + setName + "/" + ptl.getCard()->getCorrectedName() + ".full";
picsPaths << _picsPath + "/" + setName + "/" + ptl.getCard()->getCorrectedName()
<< _picsPath + "/downloadedPics/" + setName + "/" + ptl.getCard()->getCorrectedName();
}
QImage image;
......@@ -153,6 +153,12 @@ void PictureLoader::processLoadQueue()
//Iterates through the list of paths, searching for images with the desired name with any QImageReader-supported extension
for (int i = 0; i < picsPaths.length() && !found; i ++) {
imgReader.setFileName(picsPaths.at(i));
if (imgReader.read(&image)) {
emit imageLoaded(ptl.getCard(), image);
found = true;
break;
}
imgReader.setFileName(picsPaths.at(i) + ".full");
if (imgReader.read(&image)) {
emit imageLoaded(ptl.getCard(), image);
found = true;
......@@ -257,14 +263,14 @@ void PictureLoader::picDownloadFinished(QNetworkReply *reply)
const QByteArray &picData = reply->peek(reply->size()); //peek is used to keep the data in the buffer for use by QImageReader
QImage testImage;
QImageReader imgReader;
imgReader.setDecideFormatFromContent(true);
imgReader.setDevice(reply);
QString extension = "." + imgReader.format(); //the format is determined prior to reading the QImageReader data into a QImage object, as that wipes the QImageReader buffer
if (extension == ".jpeg")
extension = ".jpg";
if (imgReader.read(&testImage)) {
QString setName = cardBeingDownloaded.getSetName();
if(!setName.isEmpty())
......@@ -274,11 +280,7 @@ void PictureLoader::picDownloadFinished(QNetworkReply *reply)
return;
}
QString suffix;
if (!cardBeingDownloaded.getStripped())
suffix = ".full";
QFile newPic(picsPath + "/downloadedPics/" + setName + "/" + cardBeingDownloaded.getCard()->getCorrectedName() + suffix + extension);
QFile newPic(picsPath + "/downloadedPics/" + setName + "/" + cardBeingDownloaded.getCard()->getCorrectedName() + extension);
if (!newPic.open(QIODevice::WriteOnly))
return;
newPic.write(picData);
......@@ -306,11 +308,11 @@ void PictureLoader::picDownloadFinished(QNetworkReply *reply)
startNextPicDownload();
}
void PictureLoader::loadImage(CardInfo *card, bool stripped)
void PictureLoader::loadImage(CardInfo *card)
{
QMutexLocker locker(&mutex);
loadQueue.append(PictureToLoad(card, stripped));
loadQueue.append(PictureToLoad(card));
emit startLoadQueue();
}
......@@ -491,7 +493,7 @@ void CardInfo::updatePixmapCache()
qDebug() << "Updating pixmap cache for" << name;
clearPixmapCache();
loadPixmap();
emit pixmapUpdated();
}
......@@ -603,7 +605,7 @@ CardDatabase::~CardDatabase()
{
clear();
delete noCard;
pictureLoader->deleteLater();
pictureLoaderThread->wait();
delete pictureLoaderThread;
......@@ -617,7 +619,7 @@ void CardDatabase::clear()
delete setIt.value();
}
sets.clear();
QHashIterator<QString, CardInfo *> i(cards);
while (i.hasNext()) {
i.next();
......@@ -708,7 +710,7 @@ void CardDatabase::loadSetsFromXml(QXmlStreamReader &xml)
}
}
void CardDatabase::loadCardsFromXml(QXmlStreamReader &xml)
void CardDatabase::loadCardsFromXml(QXmlStreamReader &xml, bool tokens)
{
while (!xml.atEnd()) {
if (xml.readNext() == QXmlStreamReader::EndElement)
......@@ -760,16 +762,38 @@ void CardDatabase::loadCardsFromXml(QXmlStreamReader &xml)
else if (xml.name() == "token")
isToken = xml.readElementText().toInt();
}
addCard(new CardInfo(this, name, isToken, manacost, type, pt, text, colors, loyalty, cipt, tableRow, sets, customPicURLs, customPicURLsHq, muids));
if (isToken == tokens) {
addCard(new CardInfo(this, name, isToken, manacost, type, pt, text, colors, loyalty, cipt, tableRow, sets, customPicURLs, customPicURLsHq, muids));
}
}
}
}
CardInfo *CardNameMap::findByPrefix(const std::string &prefix) {
int count = 0;
CardInfo *found;
for (CardNameMap::iterator it = this->begin(); it != this->end(); ++it) {
if (std::mismatch(prefix.begin(), prefix.end(),
it.key().toStdString().begin()).first == prefix.end()) {
count++;
found = it.value();
}
}
return (count == 1 ? found : NULL);
}
CardInfo *CardDatabase::getCardFromMap(CardNameMap &cardMap, const QString &cardName, bool createIfNotFound) {
CardInfo *foundCard;
if (cardName.isEmpty())
return noCard;
else if (cardMap.contains(cardName))
return cardMap.value(cardName);
else if ((foundCard = cardMap.findByPrefix(cardName.toStdString())))
return foundCard;
else if (createIfNotFound) {
CardInfo *newCard = new CardInfo(this, cardName, true);
newCard->addToSet(getSet("TK"));
......@@ -779,7 +803,7 @@ CardInfo *CardDatabase::getCardFromMap(CardNameMap &cardMap, const QString &card
return 0;
}
LoadStatus CardDatabase::loadFromFile(const QString &fileName)
LoadStatus CardDatabase::loadFromFile(const QString &fileName, bool tokens)
{
QFile file(fileName);
file.open(QIODevice::ReadOnly);
......@@ -802,7 +826,7 @@ LoadStatus CardDatabase::loadFromFile(const QString &fileName)
if (xml.name() == "sets")
loadSetsFromXml(xml);
else if (xml.name() == "cards")
loadCardsFromXml(xml);
loadCardsFromXml(xml, tokens);
}
}
}
......@@ -837,7 +861,9 @@ bool CardDatabase::saveToFile(const QString &fileName, bool tokens)
QHashIterator<QString, CardInfo *> cardIterator(cards);
while (cardIterator.hasNext()) {
CardInfo *card = cardIterator.next().value();
xml << card;
if (tokens == card->getIsToken()) {
xml << card;
}
}
xml.writeEndElement(); // cards
......@@ -871,7 +897,7 @@ LoadStatus CardDatabase::loadCardDatabase(const QString &path, bool tokens)
{
LoadStatus tempLoadStatus = NotLoaded;
if (!path.isEmpty())
tempLoadStatus = loadFromFile(path);
tempLoadStatus = loadFromFile(path, tokens);
if (tempLoadStatus == Ok) {
SetList allSets;
......@@ -936,7 +962,7 @@ void CardDatabase::cacheCardPixmaps(const QStringList &cardNames)
void CardDatabase::loadImage(CardInfo *card)
{
pictureLoader->loadImage(card, false);
pictureLoader->loadImage(card);
}
void CardDatabase::imageLoaded(CardInfo *card, QImage image)
......
......@@ -47,14 +47,12 @@ public:
class PictureToLoad {
private:
CardInfo *card;
bool stripped;
SetList sortedSets;
int setIndex;
bool hq;
public:
PictureToLoad(CardInfo *_card = 0, bool _stripped = false, bool _hq = true);
PictureToLoad(CardInfo *_card = 0, bool _hq = true);
CardInfo *getCard() const { return card; }
bool getStripped() const { return stripped; }
QString getSetName() const;
bool nextSet();
bool getHq() const { return hq; }
......@@ -79,7 +77,7 @@ public:
void setPicsPath(const QString &path);
void setPicDownload(bool _picDownload);
void setPicDownloadHq(bool _picDownloadHq);
void loadImage(CardInfo *card, bool stripped);
void loadImage(CardInfo *card);
private slots:
void picDownloadFinished(QNetworkReply *reply);
public slots:
......@@ -182,7 +180,13 @@ signals:
enum LoadStatus { Ok, VersionTooOld, Invalid, NotLoaded, FileError, NoCards };
typedef QHash<QString, CardInfo *> CardNameMap;
class CardNameMap: public QHash<QString, CardInfo *>
{
public:
CardInfo *findByPrefix(const std::string &prefix);
};
typedef QHash<QString, CardSet *> SetNameMap;
class CardDatabase : public QObject {
......@@ -210,7 +214,7 @@ protected:
LoadStatus loadStatus;
private:
static const int versionNeeded;
void loadCardsFromXml(QXmlStreamReader &xml);
void loadCardsFromXml(QXmlStreamReader &xml, bool tokens);
void loadSetsFromXml(QXmlStreamReader &xml);
CardInfo *getCardFromMap(CardNameMap &cardMap, const QString &cardName, bool createIfNotFound);
......@@ -231,7 +235,7 @@ public:
CardSet *getSet(const QString &setName);
QList<CardInfo *> getCardList() const { return cards.values(); }
SetList getSetList() const;
LoadStatus loadFromFile(const QString &fileName);
LoadStatus loadFromFile(const QString &fileName, bool tokens = false);
bool saveToFile(const QString &fileName, bool tokens = false);
QStringList getAllColors() const;
QStringList getAllMainCardTypes() const;
......
......@@ -84,7 +84,9 @@ void CardDragItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
sc->removeItem(c);
}
}
currentZone->handleDropEvent(dragItemList, startZone, (sp - currentZone->scenePos()).toPoint());
if(currentZone)
currentZone->handleDropEvent(dragItemList, startZone, (sp - currentZone->scenePos()).toPoint());
event->accept();
}
......@@ -4,6 +4,8 @@
#include <QGridLayout>
#include <QHBoxLayout>
#include <QDialogButtonBox>
#include <QDebug>
#include <iostream>
#include "dlg_connect.h"
DlgConnect::DlgConnect(QWidget *parent)
......@@ -32,6 +34,19 @@ DlgConnect::DlgConnect(QWidget *parent)
savePasswordCheckBox = new QCheckBox(tr("&Save password"));
savePasswordCheckBox->setChecked(settings.value("save_password", 1).toInt());
autoConnectCheckBox = new QCheckBox(tr("A&uto connect at start"));
if(savePasswordCheckBox->isChecked())
{
autoConnectCheckBox->setChecked(settings.value("auto_connect", 0).toInt());
autoConnectCheckBox->setEnabled(true);
} else {
settings.setValue("auto_connect", 0);
autoConnectCheckBox->setChecked(0);
autoConnectCheckBox->setEnabled(false);
}
connect(savePasswordCheckBox, SIGNAL(stateChanged(int)), this, SLOT(passwordSaved(int)));
QGridLayout *grid = new QGridLayout;
grid->addWidget(hostLabel, 0, 0);
grid->addWidget(hostEdit, 0, 1);
......@@ -42,10 +57,11 @@ DlgConnect::DlgConnect(QWidget *parent)
grid->addWidget(passwordLabel, 3, 0);
grid->addWidget(passwordEdit, 3, 1);
grid->addWidget(savePasswordCheckBox, 4, 0, 1, 2);
grid->addWidget(autoConnectCheckBox, 5, 0, 1, 2);
QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
connect(buttonBox, SIGNAL(accepted()), this, SLOT(actOk()));
connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject()));
connect(buttonBox, SIGNAL(rejected()), this, SLOT(actCancel()));
QVBoxLayout *mainLayout = new QVBoxLayout;
mainLayout->addLayout(grid);
......@@ -57,6 +73,16 @@ DlgConnect::DlgConnect(QWidget *parent)
setMinimumWidth(300);
}
void DlgConnect::passwordSaved(int state)
{
if(savePasswordCheckBox->isChecked()) {
autoConnectCheckBox->setEnabled(true);
} else {
autoConnectCheckBox->setChecked(0);
autoConnectCheckBox->setEnabled(false);
}
}
void DlgConnect::actOk()
{
QSettings settings;
......@@ -66,7 +92,19 @@ void DlgConnect::actOk()
settings.setValue("playername", playernameEdit->text());
settings.setValue("password", savePasswordCheckBox->isChecked() ? passwordEdit->text() : QString());
settings.setValue("save_password", savePasswordCheckBox->isChecked() ? 1 : 0);
settings.setValue("auto_connect", autoConnectCheckBox->isChecked() ? 1 : 0);
settings.endGroup();
accept();
}
void DlgConnect::actCancel()
{
QSettings settings;
settings.beginGroup("server");
settings.setValue("save_password", savePasswordCheckBox->isChecked() ? 1 : 0);
settings.setValue("auto_connect", autoConnectCheckBox->isChecked() ? 1 : 0);
settings.endGroup();
reject();
}
......@@ -18,10 +18,12 @@ public:
QString getPassword() const { return passwordEdit->text(); }
private slots:
void actOk();
void actCancel();
void passwordSaved(int state);
private:
QLabel *hostLabel, *portLabel, *playernameLabel, *passwordLabel;
QLineEdit *hostEdit, *portEdit, *playernameEdit, *passwordEdit;
QCheckBox *savePasswordCheckBox;
QCheckBox *savePasswordCheckBox, *autoConnectCheckBox;
};
#endif
......@@ -56,6 +56,10 @@ bool KeySignals::eventFilter(QObject * /*object*/, QEvent *event) {
&& kevent->modifiers().testFlag(Qt::ControlModifier) )
emit onCtrlAltRBracket();
break;
case Qt::Key_S:
emit onS();
break;
default:
return false;
......
......@@ -18,6 +18,7 @@ signals:
void onCtrlAltEqual();
void onCtrlAltLBracket();
void onCtrlAltRBracket();
void onS();
protected:
virtual bool eventFilter(QObject *, QEvent *event);
......
......@@ -100,7 +100,7 @@ Player::Player(const ServerInfo_User &info, int _id, bool _local, TabGame *_pare
: QObject(_parent),
game(_parent),
shortcutsActive(false),
defaultNumberTopCards(3),
defaultNumberTopCards(1),
lastTokenDestroy(true),
id(_id),
active(false),
......@@ -1092,8 +1092,12 @@ void Player::eventCreateToken(const Event_CreateToken &event)
return;
CardItem *card = new CardItem(this, QString::fromStdString(event.card_name()), event.card_id());
// use db PT if not provided in event
if (!QString::fromStdString(event.pt()).isEmpty())
card->setPT(QString::fromStdString(event.pt()));
else
card->setPT(db->getCard(QString::fromStdString(event.card_name()))->getPowTough());
card->setColor(QString::fromStdString(event.color()));
card->setPT(QString::fromStdString(event.pt()));
card->setAnnotation(QString::fromStdString(event.annotation()));
card->setDestroyOnZoneChange(event.destroy_on_zone_change());
......
......@@ -48,6 +48,8 @@ SettingsCache::SettingsCache()
priceTagSource = settings->value("deckeditor/pricetagsource", 0).toInt();
ignoreUnregisteredUsers = settings->value("chat/ignore_unregistered", false).toBool();
attemptAutoConnect = settings->value("server/auto_connect", 0).toBool();
}
void SettingsCache::setLang(const QString &_lang)
......@@ -267,6 +269,12 @@ void SettingsCache::setMainWindowGeometry(const QByteArray &_mainWindowGeometry)
settings->setValue("interface/main_window_geometry", mainWindowGeometry);
}
void SettingsCache::setAutoConnect(const bool &_autoConnect)
{
attemptAutoConnect = _autoConnect;
settings->setValue("server/auto_connect", attemptAutoConnect ? 1 : 0);
}
void SettingsCache::copyPath(const QString &src, const QString &dst)
{
// test source && return if inexistent
......
......@@ -57,6 +57,7 @@ private:
bool ignoreUnregisteredUsers;
QString picUrl;
QString picUrlHq;
bool attemptAutoConnect;
public:
SettingsCache();
const QByteArray &getMainWindowGeometry() const { return mainWindowGeometry; }
......@@ -93,6 +94,7 @@ public:
QString getPicUrl() const { return picUrl; }
QString getPicUrlHq() const { return picUrlHq; }
void copyPath(const QString &src, const QString &dst);
bool getAutoConnect() const { return attemptAutoConnect; }
public slots:
void setMainWindowGeometry(const QByteArray &_mainWindowGeometry);
void setLang(const QString &_lang);
......@@ -127,6 +129,7 @@ public slots:
void setIgnoreUnregisteredUsers(bool _ignoreUnregisteredUsers);
void setPicUrl(const QString &_picUrl);
void setPicUrlHq(const QString &_picUrlHq);
void setAutoConnect(const bool &_autoConnect);
};
extern SettingsCache *settingsCache;
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment