added latest retrochess to master
18
plugins/RetroChess/README.txt
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
RS .6 Chess Plugin
|
||||||
|
==================
|
||||||
|
|
||||||
|
Both players must currently select each other and press "play game" - ensure your friend has their chess window open before making a move!
|
||||||
|
|
||||||
|
|
||||||
|
this is a combination of an existing chess game, and the exampleplugin (rename script makes it easy to use as base for new plugin)
|
||||||
|
https://github.com/RetroShare/ExampleRSPlugin
|
||||||
|
|
||||||
|
|
||||||
|
--disclaimer--
|
||||||
|
may not support playing more than one game of chess
|
||||||
|
may crash RS
|
||||||
|
may kill your cat, dog, or other loved one.
|
||||||
|
|
||||||
|
|
||||||
|
--extra info--
|
||||||
|
based on: https://github.com/chozabu/CHESS-in-Qt
|
70
plugins/RetroChess/RetroChess.pro
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
!include("../Common/retroshare_plugin.pri"): error("Could not include file ../Common/retroshare_plugin.pri")
|
||||||
|
|
||||||
|
greaterThan(QT_MAJOR_VERSION, 4) {
|
||||||
|
# Qt 5
|
||||||
|
QT += widgets
|
||||||
|
}
|
||||||
|
|
||||||
|
exists($$[QMAKE_MKSPECS]/features/mobility.prf) {
|
||||||
|
CONFIG += mobility
|
||||||
|
} else {
|
||||||
|
QT += multimedia
|
||||||
|
}
|
||||||
|
CONFIG += qt uic qrc resources
|
||||||
|
MOBILITY = multimedia
|
||||||
|
|
||||||
|
DEPENDPATH += ../../retroshare-gui/src/temp/ui ../../libretroshare/src
|
||||||
|
INCLUDEPATH += ../../retroshare-gui/src/temp/ui ../../libretroshare/src
|
||||||
|
INCLUDEPATH += ../../retroshare-gui/src/retroshare-gui
|
||||||
|
|
||||||
|
INCLUDEPATH += ../../rapidjson-1.1.0
|
||||||
|
|
||||||
|
#################################### Windows #####################################
|
||||||
|
|
||||||
|
linux-* {
|
||||||
|
#INCLUDEPATH += /usr/include
|
||||||
|
#LIBS += $$system(pkg-config --libs opencv)
|
||||||
|
}
|
||||||
|
|
||||||
|
win32 {
|
||||||
|
LIBS_DIR = $$PWD/../../../libs
|
||||||
|
#LIBS += -L"$$LIBS_DIR/lib/opencv"
|
||||||
|
|
||||||
|
#OPENCV_VERSION = 249
|
||||||
|
#LIBS += -lopencv_core$$OPENCV_VERSION -lopencv_highgui$$OPENCV_VERSION -lopencv_imgproc$$OPENCV_VERSION -llibjpeg -llibtiff -llibpng -llibjasper -lIlmImf -lole32 -loleaut32 -luuid -lavicap32 -lavifil32 -lvfw32 -lz
|
||||||
|
}
|
||||||
|
|
||||||
|
QMAKE_CXXFLAGS *= -Wall
|
||||||
|
|
||||||
|
SOURCES = RetroChessPlugin.cpp \
|
||||||
|
services/p3RetroChess.cc \
|
||||||
|
services/rsRetroChessItems.cc \
|
||||||
|
gui/NEMainpage.cpp \
|
||||||
|
gui/RetroChessNotify.cpp \
|
||||||
|
gui/chess.cpp \
|
||||||
|
gui/tile.cpp \
|
||||||
|
gui/validation.cpp \
|
||||||
|
gui/RetroChessChatWidgetHolder.cpp
|
||||||
|
|
||||||
|
HEADERS = RetroChessPlugin.h \
|
||||||
|
services/p3RetroChess.h \
|
||||||
|
services/rsRetroChessItems.h \
|
||||||
|
interface/rsRetroChess.h \
|
||||||
|
gui/NEMainpage.h \
|
||||||
|
gui/RetroChessNotify.h \
|
||||||
|
gui/tile.h \
|
||||||
|
gui/validation.h \
|
||||||
|
gui/chess.h \
|
||||||
|
gui/RetroChessChatWidgetHolder.h
|
||||||
|
|
||||||
|
#FORMS = gui/AudioInputConfig.ui
|
||||||
|
|
||||||
|
TARGET = RetroChess
|
||||||
|
|
||||||
|
RESOURCES = gui/RetroChess_images.qrc
|
||||||
|
|
||||||
|
|
||||||
|
#LIBS += -lspeex -lspeexdsp
|
||||||
|
|
||||||
|
FORMS += \
|
||||||
|
gui/NEMainpage.ui
|
200
plugins/RetroChess/RetroChessPlugin.cpp
Normal file
@ -0,0 +1,200 @@
|
|||||||
|
/****************************************************************
|
||||||
|
* RetroShare is distributed under the following license:
|
||||||
|
*
|
||||||
|
* Copyright (C) 2015
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation; either version 2
|
||||||
|
* of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||||
|
* Boston, MA 02110-1301, USA.
|
||||||
|
****************************************************************/
|
||||||
|
#include <retroshare/rsplugin.h>
|
||||||
|
#include <retroshare/rsversion.h>
|
||||||
|
#include <retroshare-gui/RsAutoUpdatePage.h>
|
||||||
|
#include <QTranslator>
|
||||||
|
#include <QApplication>
|
||||||
|
#include <QString>
|
||||||
|
#include <QIcon>
|
||||||
|
#include <QMessageBox>
|
||||||
|
#include "gui/chat/ChatWidget.h"
|
||||||
|
|
||||||
|
#include "RetroChessPlugin.h"
|
||||||
|
#include "interface/rsRetroChess.h"
|
||||||
|
#include "gui/NEMainpage.h"
|
||||||
|
#include "gui/RetroChessNotify.h"
|
||||||
|
#include "gui/RetroChessChatWidgetHolder.h"
|
||||||
|
|
||||||
|
|
||||||
|
#define IMAGE_RetroChess ":/images/chess.png"
|
||||||
|
|
||||||
|
static void *inited = new RetroChessPlugin() ;
|
||||||
|
|
||||||
|
extern "C" {
|
||||||
|
|
||||||
|
// This is *the* functions required by RS plugin system to give RS access to the plugin.
|
||||||
|
// Be careful to:
|
||||||
|
// - always respect the C linkage convention
|
||||||
|
// - always return an object of type RsPlugin*
|
||||||
|
//
|
||||||
|
void *RETROSHARE_PLUGIN_provide()
|
||||||
|
{
|
||||||
|
static RetroChessPlugin *p = new RetroChessPlugin() ;
|
||||||
|
|
||||||
|
return (void*)p ;
|
||||||
|
}
|
||||||
|
|
||||||
|
// This symbol contains the svn revision number grabbed from the executable.
|
||||||
|
// It will be tested by RS to load the plugin automatically, since it is safe to load plugins
|
||||||
|
// with same revision numbers, assuming that the revision numbers are up-to-date.
|
||||||
|
//
|
||||||
|
uint32_t RETROSHARE_PLUGIN_revision = abs(atoi(RS_EXTRA_VERSION)) ;
|
||||||
|
|
||||||
|
// This symbol contains the svn revision number grabbed from the executable.
|
||||||
|
// It will be tested by RS to load the plugin automatically, since it is safe to load plugins
|
||||||
|
// with same revision numbers, assuming that the revision numbers are up-to-date.
|
||||||
|
//
|
||||||
|
uint32_t RETROSHARE_PLUGIN_api = RS_PLUGIN_API_VERSION ;
|
||||||
|
}
|
||||||
|
|
||||||
|
void RetroChessPlugin::getPluginVersion(int& major, int& minor, int& build, int& svn_rev) const
|
||||||
|
{
|
||||||
|
major = RS_MAJOR_VERSION ;
|
||||||
|
minor = RS_MINOR_VERSION ;
|
||||||
|
build = RS_MINI_VERSION ;
|
||||||
|
svn_rev = abs(atoi(RS_EXTRA_VERSION)) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
RetroChessPlugin::RetroChessPlugin()
|
||||||
|
{
|
||||||
|
qRegisterMetaType<RsPeerId>("RsPeerId");
|
||||||
|
mainpage = NULL ;
|
||||||
|
mRetroChess = NULL ;
|
||||||
|
mPlugInHandler = NULL;
|
||||||
|
mPeers = NULL;
|
||||||
|
config_page = NULL ;
|
||||||
|
mIcon = NULL ;
|
||||||
|
|
||||||
|
mRetroChessNotify = new RetroChessNotify;
|
||||||
|
}
|
||||||
|
|
||||||
|
void RetroChessPlugin::setInterfaces(RsPlugInInterfaces &interfaces)
|
||||||
|
{
|
||||||
|
mPeers = interfaces.mPeers;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*ConfigPage *RetroChessPlugin::qt_config_page() const
|
||||||
|
{
|
||||||
|
// The config pages are deleted when config is closed, so it's important not to static the
|
||||||
|
// created object.
|
||||||
|
//
|
||||||
|
return new AudioInputConfig() ;
|
||||||
|
}*/
|
||||||
|
|
||||||
|
QDialog *RetroChessPlugin::qt_about_page() const
|
||||||
|
{
|
||||||
|
static QMessageBox *about_dialog = NULL ;
|
||||||
|
|
||||||
|
if(about_dialog == NULL)
|
||||||
|
{
|
||||||
|
about_dialog = new QMessageBox() ;
|
||||||
|
|
||||||
|
QString text ;
|
||||||
|
text += QObject::tr("<h3>RetroShare RetroChess plugin</h3><br/> * Contributors: Cyril Soler, Josselin Jacquard<br/>") ;
|
||||||
|
text += QObject::tr("<br/>The RetroChess plugin adds RetroChess to the private chat window of RetroShare. to use it, proceed as follows:<UL>") ;
|
||||||
|
text += QObject::tr("<li> setup microphone levels using the configuration panel</li>") ;
|
||||||
|
text += QObject::tr("<li> check your microphone by looking at the VU-metters</li>") ;
|
||||||
|
text += QObject::tr("<li> in the private chat, enable sound input/output by clicking on the two RetroChess icons</li></ul>") ;
|
||||||
|
text += QObject::tr("Your friend needs to run the plugin to talk/listen to you, or course.") ;
|
||||||
|
text += QObject::tr("<br/><br/>This is an experimental feature. Don't hesitate to send comments and suggestion to the RS dev team.") ;
|
||||||
|
|
||||||
|
about_dialog->setText(text) ;
|
||||||
|
about_dialog->setStandardButtons(QMessageBox::Ok) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
return about_dialog ;
|
||||||
|
}
|
||||||
|
|
||||||
|
ChatWidgetHolder *RetroChessPlugin::qt_get_chat_widget_holder(ChatWidget *chatWidget) const
|
||||||
|
{
|
||||||
|
switch (chatWidget->chatType()) {
|
||||||
|
case ChatWidget::CHATTYPE_PRIVATE:
|
||||||
|
return new RetroChessChatWidgetHolder(chatWidget, mRetroChessNotify);
|
||||||
|
case ChatWidget::CHATTYPE_UNKNOWN:
|
||||||
|
case ChatWidget::CHATTYPE_LOBBY:
|
||||||
|
case ChatWidget::CHATTYPE_DISTANT:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
p3Service *RetroChessPlugin::p3_service() const
|
||||||
|
{
|
||||||
|
if(mRetroChess == NULL)
|
||||||
|
rsRetroChess = mRetroChess = new p3RetroChess(mPlugInHandler,mRetroChessNotify) ; // , 3600 * 24 * 30 * 6); // 6 Months
|
||||||
|
|
||||||
|
return mRetroChess ;
|
||||||
|
}
|
||||||
|
|
||||||
|
void RetroChessPlugin::setPlugInHandler(RsPluginHandler *pgHandler)
|
||||||
|
{
|
||||||
|
mPlugInHandler = pgHandler;
|
||||||
|
}
|
||||||
|
|
||||||
|
QIcon *RetroChessPlugin::qt_icon() const
|
||||||
|
{
|
||||||
|
if (mIcon == NULL) {
|
||||||
|
Q_INIT_RESOURCE(RetroChess_images);
|
||||||
|
|
||||||
|
mIcon = new QIcon(IMAGE_RetroChess);
|
||||||
|
}
|
||||||
|
|
||||||
|
return mIcon;
|
||||||
|
}
|
||||||
|
MainPage *RetroChessPlugin::qt_page() const
|
||||||
|
{
|
||||||
|
if(mainpage == NULL){
|
||||||
|
mainpage = new NEMainpage(0, mRetroChessNotify);//mPeers, mFiles) ;
|
||||||
|
//tpage = new NEMainpage( );
|
||||||
|
//mainpage = tpage;
|
||||||
|
}
|
||||||
|
|
||||||
|
return mainpage ;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string RetroChessPlugin::getShortPluginDescription() const
|
||||||
|
{
|
||||||
|
return "RetroChess";
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string RetroChessPlugin::getPluginName() const
|
||||||
|
{
|
||||||
|
return "RetroChess";
|
||||||
|
}
|
||||||
|
|
||||||
|
QTranslator* RetroChessPlugin::qt_translator(QApplication */*app*/, const QString& languageCode, const QString& externalDir) const
|
||||||
|
{
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
void RetroChessPlugin::qt_sound_events(SoundEvents &/*events*/) const
|
||||||
|
{
|
||||||
|
// events.addEvent(QApplication::translate("RetroChess", "RetroChess"), QApplication::translate("RetroChess", "Incoming call"), RetroChess_SOUND_INCOMING_CALL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*ToasterNotify *RetroChessPlugin::qt_toasterNotify(){
|
||||||
|
if (!mRetroChessToasterNotify) {
|
||||||
|
mRetroChessToasterNotify = new RetroChessToasterNotify(mRetroChess, mRetroChessNotify);
|
||||||
|
}
|
||||||
|
return mRetroChessToasterNotify;
|
||||||
|
}*/
|
76
plugins/RetroChess/RetroChessPlugin.h
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
/* this is the central part of the plugin */
|
||||||
|
/****************************************************************
|
||||||
|
* RetroShare is distributed under the following license:
|
||||||
|
*
|
||||||
|
* Copyright (C) 2015
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation; either version 2
|
||||||
|
* of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||||
|
* Boston, MA 02110-1301, USA.
|
||||||
|
****************************************************************/
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
/*RetroChess*/
|
||||||
|
#include "services/p3RetroChess.h"
|
||||||
|
|
||||||
|
/*libretroshare"*/
|
||||||
|
#include <retroshare/rsplugin.h>
|
||||||
|
|
||||||
|
#include "gui/NEMainpage.h"
|
||||||
|
|
||||||
|
class RetroChessGUIHandler ;
|
||||||
|
class RetroChessNotify ;
|
||||||
|
|
||||||
|
class RetroChessPlugin: public RsPlugin
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
RetroChessPlugin() ;
|
||||||
|
virtual ~RetroChessPlugin() {}
|
||||||
|
|
||||||
|
virtual p3Service *p3_service() const ;
|
||||||
|
virtual uint16_t rs_service_id() const { return RS_SERVICE_TYPE_RetroChess_PLUGIN ; }
|
||||||
|
//virtual ConfigPage *qt_config_page() const ;
|
||||||
|
virtual QDialog *qt_about_page() const ;
|
||||||
|
virtual ChatWidgetHolder *qt_get_chat_widget_holder(ChatWidget *chatWidget) const ;
|
||||||
|
|
||||||
|
virtual QIcon *qt_icon() const;
|
||||||
|
virtual QTranslator *qt_translator(QApplication *app, const QString& languageCode, const QString& externalDir) const;
|
||||||
|
virtual void qt_sound_events(SoundEvents &events) const;
|
||||||
|
|
||||||
|
virtual void getPluginVersion(int& major, int& minor, int &build, int& svn_rev) const ;
|
||||||
|
virtual void setPlugInHandler(RsPluginHandler *pgHandler);
|
||||||
|
|
||||||
|
virtual std::string configurationFileName() const { return "RetroChess.cfg" ; }
|
||||||
|
|
||||||
|
virtual std::string getShortPluginDescription() const ;
|
||||||
|
virtual std::string getPluginName() const;
|
||||||
|
virtual void setInterfaces(RsPlugInInterfaces& interfaces);
|
||||||
|
|
||||||
|
//================================== RsPlugin Notify ==================================//
|
||||||
|
//virtual ToasterNotify *qt_toasterNotify();
|
||||||
|
|
||||||
|
virtual MainPage *qt_page() const ;
|
||||||
|
|
||||||
|
private:
|
||||||
|
mutable p3RetroChess *mRetroChess ;
|
||||||
|
mutable RsPluginHandler *mPlugInHandler;
|
||||||
|
mutable RsPeers* mPeers;
|
||||||
|
mutable ConfigPage *config_page ;
|
||||||
|
mutable QIcon *mIcon;
|
||||||
|
mutable MainPage* mainpage ;
|
||||||
|
|
||||||
|
RetroChessNotify *mRetroChessNotify ;
|
||||||
|
RetroChessGUIHandler *mRetroChessGUIHandler ;
|
||||||
|
};
|
||||||
|
|
3
plugins/RetroChess/cptest
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
kdesudo -u retrotester cp lib*.so* /home/retrotester/.retroshare/extensions6/
|
||||||
|
kdesudo -u retrotester /home/chozabu/git/RetroShare/retroshare-gui/src/RetroShare
|
||||||
|
|
225
plugins/RetroChess/gui/NEMainpage.cpp
Normal file
@ -0,0 +1,225 @@
|
|||||||
|
#include "NEMainpage.h"
|
||||||
|
#include "ui_NEMainpage.h"
|
||||||
|
|
||||||
|
//#include "services/p3RetroChess.h"
|
||||||
|
#include "interface/rsRetroChess.h"
|
||||||
|
#include "services/rsRetroChessItems.h"
|
||||||
|
#include "retroshare/rsservicecontrol.h"
|
||||||
|
#include "gui/notifyqt.h"
|
||||||
|
#include <qjsondocument.h>
|
||||||
|
#include <qtreewidget.h>
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
#include <QTime>
|
||||||
|
#include <QMenu>
|
||||||
|
|
||||||
|
#include "gui/chat/ChatDialog.h"
|
||||||
|
|
||||||
|
|
||||||
|
NEMainpage::NEMainpage(QWidget *parent, RetroChessNotify *notify) :
|
||||||
|
MainPage(parent),
|
||||||
|
mNotify(notify),
|
||||||
|
ui(new Ui::NEMainpage)
|
||||||
|
{
|
||||||
|
ui->setupUi(this);
|
||||||
|
setupMenuActions();
|
||||||
|
|
||||||
|
connect(mNotify, SIGNAL(NeMsgArrived(RsPeerId,QString)), this , SLOT(NeMsgArrived(RsPeerId,QString)));
|
||||||
|
connect(mNotify, SIGNAL(chessStart(RsPeerId)), this , SLOT(chessStart(RsPeerId)));
|
||||||
|
connect(ui->friendSelectionWidget, SIGNAL(itemSelectionChanged()), this, SLOT(friendSelectionChanged()));
|
||||||
|
|
||||||
|
ui->friendSelectionWidget->start();
|
||||||
|
ui->friendSelectionWidget->setModus(FriendSelectionWidget::MODUS_SINGLE);
|
||||||
|
ui->friendSelectionWidget->setShowType(FriendSelectionWidget::SHOW_SSL);
|
||||||
|
|
||||||
|
connect(ui->friendSelectionWidget, SIGNAL(contentChanged()), this, SLOT(on_filterPeersButton_clicked()));
|
||||||
|
connect(NotifyQt::getInstance(), SIGNAL(peerStatusChanged(const QString&,int)), this, SLOT(on_filterPeersButton_clicked()));
|
||||||
|
|
||||||
|
QString welcomemessage = QTime::currentTime().toString() +" ";
|
||||||
|
welcomemessage+= tr("Welcome to RetroChess lobby");
|
||||||
|
ui->listWidget->addItem(welcomemessage);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
NEMainpage::~NEMainpage()
|
||||||
|
{
|
||||||
|
delete ui;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void NEMainpage::on_pingAllButton_clicked()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void NEMainpage::chessStart(const RsPeerId &peer_id){
|
||||||
|
|
||||||
|
create_chess_window(peer_id.toStdString(), 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void NEMainpage::NeMsgArrived(const RsPeerId &peer_id, QString str)
|
||||||
|
{
|
||||||
|
QJsonDocument jdoc = QJsonDocument::fromJson(str.toUtf8());
|
||||||
|
QVariantMap vmap = jdoc.toVariant().toMap();
|
||||||
|
std::cout << "GUI got Packet from: " << peer_id;
|
||||||
|
std::cout << " saying " << str.toStdString();
|
||||||
|
std::cout << std::endl;
|
||||||
|
QString type = vmap.value("type").toString();
|
||||||
|
if (type == "chat"){
|
||||||
|
QString output = QTime::currentTime().toString() +" ";
|
||||||
|
output+= QString::fromStdString(rsPeers->getPeerName(peer_id));
|
||||||
|
output+=": ";
|
||||||
|
output+=vmap.value("message").toString();
|
||||||
|
ui->listWidget->addItem(output);
|
||||||
|
}else if (type == "chessclick"){
|
||||||
|
int row = vmap.value("row").toInt();
|
||||||
|
int col = vmap.value("col").toInt();
|
||||||
|
int count = vmap.value("count").toInt();
|
||||||
|
RetroChessWindow* rcw = activeGames.value(peer_id.toStdString());
|
||||||
|
rcw->validate_tile(row,col,count);
|
||||||
|
}else if (type == "chess_init"){
|
||||||
|
create_chess_window(peer_id.toStdString(), 1);
|
||||||
|
}else if (type == "chess_invite"){
|
||||||
|
ChatDialog::chatFriend(ChatId(peer_id));
|
||||||
|
rsRetroChess->gotInvite(peer_id);
|
||||||
|
mNotify->notifyChessInvite(peer_id);
|
||||||
|
}else if (type == "chess_accept"){
|
||||||
|
if (rsRetroChess->hasInviteTo(peer_id)){
|
||||||
|
create_chess_window(peer_id.toStdString(), 1);
|
||||||
|
rsRetroChess->acceptedInvite(peer_id);
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
QString output = QTime::currentTime().toString() +" ";
|
||||||
|
output+= QString::fromStdString(rsPeers->getPeerName(peer_id));
|
||||||
|
output+=": ";
|
||||||
|
output+=str;
|
||||||
|
ui->listWidget->addItem(output);
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
QString output = QTime::currentTime().toString() +" ";
|
||||||
|
output+= QString::fromStdString(rsPeers->getPeerName(peer_id));
|
||||||
|
output+=": ";
|
||||||
|
output+=str;
|
||||||
|
ui->netLogWidget->addItem(output);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void NEMainpage::on_broadcastButton_clicked()
|
||||||
|
{
|
||||||
|
rsRetroChess->msg_all(ui->msgInput->text().toStdString());
|
||||||
|
NeMsgArrived(rsPeers->getOwnId(),ui->msgInput->text());
|
||||||
|
ui->msgInput->clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
void NEMainpage::create_chess_window(std::string peer_id, int player_id){
|
||||||
|
RetroChessWindow *rcw = new RetroChessWindow(peer_id, player_id);
|
||||||
|
rcw->show();
|
||||||
|
|
||||||
|
activeGames.insert(peer_id, rcw);
|
||||||
|
ui->active_games->addItem(QString::fromStdString(peer_id));
|
||||||
|
}
|
||||||
|
|
||||||
|
void NEMainpage::on_playButton_clicked()
|
||||||
|
{
|
||||||
|
//get peer
|
||||||
|
FriendSelectionWidget::IdType idType;
|
||||||
|
std::string fid = ui->friendSelectionWidget->selectedId(idType);
|
||||||
|
//make_board();
|
||||||
|
create_chess_window(fid, 0);
|
||||||
|
|
||||||
|
QVariantMap map;
|
||||||
|
map.insert("type", "chess_init");
|
||||||
|
|
||||||
|
rsRetroChess->qvm_msg_peer(RsPeerId(fid),map);
|
||||||
|
|
||||||
|
std::cout << fid;
|
||||||
|
}
|
||||||
|
|
||||||
|
void NEMainpage::on_filterPeersButton_clicked()
|
||||||
|
{
|
||||||
|
std::cout << "\n\n filter peers \n";
|
||||||
|
|
||||||
|
std::list<RsPeerId> ssllist ;
|
||||||
|
rsPeers->getFriendList(ssllist);
|
||||||
|
|
||||||
|
|
||||||
|
RsPeerServiceInfo ownServices;
|
||||||
|
rsServiceControl->getOwnServices(ownServices);
|
||||||
|
|
||||||
|
std::vector<RsPeerId> peer_ids ;
|
||||||
|
std::vector<uint32_t> service_ids ;
|
||||||
|
|
||||||
|
for(std::list<RsPeerId>::const_iterator it(ssllist.begin());it!=ssllist.end();++it)
|
||||||
|
peer_ids.push_back(*it) ;
|
||||||
|
service_ids.clear() ;
|
||||||
|
uint32_t service_id;
|
||||||
|
for(std::map<uint32_t, RsServiceInfo>::const_iterator sit(ownServices.mServiceList.begin());sit!=ownServices.mServiceList.end();++sit)
|
||||||
|
{
|
||||||
|
RsServiceInfo rsi = sit->second;
|
||||||
|
service_ids.push_back(sit->first) ;
|
||||||
|
std::cout << rsi.mServiceName << rsi.mServiceType << "\n";
|
||||||
|
if (strcmp(rsi.mServiceName.c_str(), "RetroChess") == 0){
|
||||||
|
service_id = rsi.mServiceType;
|
||||||
|
std::cout << "setting service ID\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for(std::list<RsPeerId>::const_iterator it(ssllist.begin());it!=ssllist.end();++it)
|
||||||
|
{
|
||||||
|
RsPeerServiceInfo local_service_perms ;
|
||||||
|
RsPeerServiceInfo remote_service_perms ;
|
||||||
|
RsPeerId id = *it;
|
||||||
|
|
||||||
|
rsServiceControl->getServicesAllowed (*it, local_service_perms) ;
|
||||||
|
rsServiceControl->getServicesProvided(*it,remote_service_perms) ;
|
||||||
|
|
||||||
|
bool local_allowed = local_service_perms.mServiceList.find(service_id) != local_service_perms.mServiceList.end() ;
|
||||||
|
bool remote_allowed = remote_service_perms.mServiceList.find(service_id) != remote_service_perms.mServiceList.end() ;
|
||||||
|
bool allowed = (local_allowed && remote_allowed);
|
||||||
|
//QString la =
|
||||||
|
QString serviceinfos = QString("peerlocal: ") + QString(local_allowed?"yes":"no") + QString(" remote: ") + QString(remote_allowed?"yes":"no");
|
||||||
|
ui->netLogWidget->addItem(serviceinfos);
|
||||||
|
std::cout << serviceinfos.toStdString() << "\n";
|
||||||
|
//if (allowed){
|
||||||
|
QList<QTreeWidgetItem*> items;
|
||||||
|
ui->friendSelectionWidget->itemsFromId(FriendSelectionWidget::IDTYPE_SSL,id.toStdString(),items);
|
||||||
|
|
||||||
|
std::cout << items.size() << "\n";
|
||||||
|
if (items.size()){
|
||||||
|
QTreeWidgetItem* item = items.first();
|
||||||
|
item->setHidden(!allowed);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
|
void NEMainpage::setupMenuActions()
|
||||||
|
{
|
||||||
|
mActionPlayChess = new QAction(QIcon(), tr("Play Chess"), this);
|
||||||
|
connect(mActionPlayChess, SIGNAL(triggered(bool)), this, SLOT(on_playButton_clicked()));
|
||||||
|
|
||||||
|
ui->friendSelectionWidget->addContextMenuAction(mActionPlayChess);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void NEMainpage::friendSelectionChanged()
|
||||||
|
{
|
||||||
|
std::set<RsPeerId> peerIds;
|
||||||
|
ui->friendSelectionWidget->selectedIds<RsPeerId,FriendSelectionWidget::IDTYPE_SSL>(peerIds, false);
|
||||||
|
|
||||||
|
std::set<RsGxsId> gxsIds;
|
||||||
|
ui->friendSelectionWidget->selectedIds<RsGxsId,FriendSelectionWidget::IDTYPE_GXS>(gxsIds, false);
|
||||||
|
|
||||||
|
int selectedCount = peerIds.size() + gxsIds.size();
|
||||||
|
|
||||||
|
mActionPlayChess->setEnabled(selectedCount);
|
||||||
|
|
||||||
|
FriendSelectionWidget::IdType idType;
|
||||||
|
ui->friendSelectionWidget->selectedId(idType);
|
||||||
|
|
||||||
|
}
|
52
plugins/RetroChess/gui/NEMainpage.h
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
/* This is the main page displayed by the plugin */
|
||||||
|
#ifndef NEMAINPAGE_H
|
||||||
|
#define NEMAINPAGE_H
|
||||||
|
|
||||||
|
#include <retroshare-gui/mainpage.h>
|
||||||
|
#include <retroshare/rsfiles.h>
|
||||||
|
#include <retroshare/rspeers.h>
|
||||||
|
#include "gui/RetroChessNotify.h"
|
||||||
|
|
||||||
|
#include "gui/chess.h"
|
||||||
|
|
||||||
|
#include <QWidget>
|
||||||
|
|
||||||
|
class QAction;
|
||||||
|
|
||||||
|
namespace Ui {
|
||||||
|
class NEMainpage;
|
||||||
|
}
|
||||||
|
|
||||||
|
class NEMainpage : public MainPage
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit NEMainpage(QWidget *parent, RetroChessNotify *notify);
|
||||||
|
~NEMainpage();
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void setupMenuActions();
|
||||||
|
void friendSelectionChanged();
|
||||||
|
void on_pingAllButton_clicked();
|
||||||
|
void NeMsgArrived(const RsPeerId &peer_id, QString str);
|
||||||
|
void chessStart(const RsPeerId &peer_id);
|
||||||
|
|
||||||
|
void on_broadcastButton_clicked();
|
||||||
|
|
||||||
|
void on_playButton_clicked();
|
||||||
|
|
||||||
|
void on_filterPeersButton_clicked();
|
||||||
|
|
||||||
|
private:
|
||||||
|
Ui::NEMainpage *ui;
|
||||||
|
RetroChessNotify *mNotify;
|
||||||
|
|
||||||
|
QAction *mActionPlayChess;
|
||||||
|
//RetroChessWindow *tempwindow;
|
||||||
|
|
||||||
|
QMap<std::string, RetroChessWindow*> activeGames;
|
||||||
|
void create_chess_window(std::string peer_id, int player_id);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // NEMAINPAGE_H
|
268
plugins/RetroChess/gui/NEMainpage.ui
Normal file
@ -0,0 +1,268 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>NEMainpage</class>
|
||||||
|
<widget class="QWidget" name="NEMainpage">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>684</width>
|
||||||
|
<height>578</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string>Form</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QGridLayout" name="gridLayout_6">
|
||||||
|
<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 row="0" column="0">
|
||||||
|
<widget class="QFrame" name="titleBarFrame">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="frameShape">
|
||||||
|
<enum>QFrame::NoFrame</enum>
|
||||||
|
</property>
|
||||||
|
<property name="frameShadow">
|
||||||
|
<enum>QFrame::Raised</enum>
|
||||||
|
</property>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>2</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>2</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>2</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>2</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="titleBarPixmap">
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>24</width>
|
||||||
|
<height>24</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
<property name="pixmap">
|
||||||
|
<pixmap resource="RetroChess_images.qrc">:/images/retrochess.png</pixmap>
|
||||||
|
</property>
|
||||||
|
<property name="scaledContents">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="StyledLabel" name="titleBarLabel">
|
||||||
|
<property name="text">
|
||||||
|
<string>RetroChess</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer>
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>123</width>
|
||||||
|
<height>13</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QToolButton" name="helpButton">
|
||||||
|
<property name="focusPolicy">
|
||||||
|
<enum>Qt::NoFocus</enum>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset>
|
||||||
|
<normaloff>:/icons/help_64.png</normaloff>:/icons/help_64.png</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="checkable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="autoRaise">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="0">
|
||||||
|
<widget class="QTabWidget" name="tabWidget">
|
||||||
|
<property name="currentIndex">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<widget class="QWidget" name="tab">
|
||||||
|
<attribute name="title">
|
||||||
|
<string>Chess Lobby</string>
|
||||||
|
</attribute>
|
||||||
|
<layout class="QGridLayout" name="gridLayout_3">
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QSplitter" name="splitter">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<widget class="QGroupBox" name="groupBox_2">
|
||||||
|
<property name="title">
|
||||||
|
<string>Invite Friends</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QGridLayout" name="gridLayout_5">
|
||||||
|
<item row="0" column="0" colspan="2">
|
||||||
|
<widget class="FriendSelectionWidget" name="friendSelectionWidget" native="true">
|
||||||
|
<property name="contextMenuPolicy">
|
||||||
|
<enum>Qt::CustomContextMenu</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="0">
|
||||||
|
<widget class="QPushButton" name="filterPeersButton">
|
||||||
|
<property name="text">
|
||||||
|
<string>CheckPeers</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="1">
|
||||||
|
<spacer name="horizontalSpacer_2">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>41</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<widget class="QWidget" name="layoutWidget">
|
||||||
|
<layout class="QGridLayout" name="gridLayout">
|
||||||
|
<item row="0" column="0" colspan="3">
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="playButton">
|
||||||
|
<property name="text">
|
||||||
|
<string>Play Chess</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>475</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="0" colspan="3">
|
||||||
|
<widget class="QListWidget" name="listWidget"/>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="0">
|
||||||
|
<widget class="QLineEdit" name="msgInput">
|
||||||
|
<property name="placeholderText">
|
||||||
|
<string>Type a message here</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="1">
|
||||||
|
<widget class="QPushButton" name="broadcastButton">
|
||||||
|
<property name="text">
|
||||||
|
<string>Send</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<widget class="QWidget" name="tab_2">
|
||||||
|
<attribute name="title">
|
||||||
|
<string>Net log</string>
|
||||||
|
</attribute>
|
||||||
|
<layout class="QGridLayout" name="gridLayout_2">
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QListWidget" name="netLogWidget"/>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="0">
|
||||||
|
<widget class="QGroupBox" name="groupBox">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>16777215</width>
|
||||||
|
<height>150</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="title">
|
||||||
|
<string>Active Games</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QGridLayout" name="gridLayout_4">
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QListWidget" name="active_games"/>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<customwidgets>
|
||||||
|
<customwidget>
|
||||||
|
<class>StyledLabel</class>
|
||||||
|
<extends>QLabel</extends>
|
||||||
|
<header>gui/common/StyledLabel.h</header>
|
||||||
|
</customwidget>
|
||||||
|
<customwidget>
|
||||||
|
<class>FriendSelectionWidget</class>
|
||||||
|
<extends>QWidget</extends>
|
||||||
|
<header>gui/common/FriendSelectionWidget.h</header>
|
||||||
|
<container>1</container>
|
||||||
|
</customwidget>
|
||||||
|
</customwidgets>
|
||||||
|
<resources>
|
||||||
|
<include location="RetroChess_images.qrc"/>
|
||||||
|
</resources>
|
||||||
|
<connections/>
|
||||||
|
</ui>
|
147
plugins/RetroChess/gui/RetroChessChatWidgetHolder.cpp
Normal file
@ -0,0 +1,147 @@
|
|||||||
|
|
||||||
|
|
||||||
|
#include <QToolButton>
|
||||||
|
#include <QPropertyAnimation>
|
||||||
|
#include <QIcon>
|
||||||
|
#include <QLayout>
|
||||||
|
|
||||||
|
|
||||||
|
#include "interface/rsRetroChess.h"
|
||||||
|
|
||||||
|
#include "gui/chat/ChatWidget.h"
|
||||||
|
|
||||||
|
#include "RetroChessChatWidgetHolder.h"
|
||||||
|
|
||||||
|
#include <retroshare/rsstatus.h>
|
||||||
|
#include <retroshare/rspeers.h>
|
||||||
|
|
||||||
|
#define IMAGE_RetroChess ":/images/chess.png"
|
||||||
|
|
||||||
|
RetroChessChatWidgetHolder::RetroChessChatWidgetHolder(ChatWidget *chatWidget, RetroChessNotify *notify)
|
||||||
|
: QObject(), ChatWidgetHolder(chatWidget), mRetroChessNotify(notify)
|
||||||
|
{
|
||||||
|
QIcon icon ;
|
||||||
|
icon.addPixmap(QPixmap(IMAGE_RetroChess)) ;
|
||||||
|
|
||||||
|
|
||||||
|
playChessButton = new QToolButton ;
|
||||||
|
playChessButton->setIcon(icon) ;
|
||||||
|
playChessButton->setToolTip(tr("Invite Friend to Chess"));
|
||||||
|
playChessButton->setIconSize(QSize(35,35)) ;
|
||||||
|
playChessButton->setAutoRaise(true) ;
|
||||||
|
|
||||||
|
mChatWidget->addChatBarWidget(playChessButton);
|
||||||
|
connect(playChessButton, SIGNAL(clicked()), this , SLOT(chessPressed()));
|
||||||
|
connect(notify, SIGNAL(chessInvited(RsPeerId)), this , SLOT(chessnotify(RsPeerId)));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
RetroChessChatWidgetHolder::~RetroChessChatWidgetHolder()
|
||||||
|
{
|
||||||
|
|
||||||
|
button_map::iterator it = buttonMapTakeChess.begin();
|
||||||
|
while (it != buttonMapTakeChess.end()) {
|
||||||
|
it = buttonMapTakeChess.erase(it);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void RetroChessChatWidgetHolder::chessnotify(RsPeerId from_peer_id)
|
||||||
|
{
|
||||||
|
RsPeerId peer_id = mChatWidget->getChatId().toPeerId();//TODO support GXSID
|
||||||
|
//if (peer_id!=from_peer_id)return;//invite from another chat
|
||||||
|
if (rsRetroChess->hasInviteFrom(peer_id)){
|
||||||
|
if (mChatWidget) {
|
||||||
|
QString buttonName = QString::fromUtf8(rsPeers->getPeerName(peer_id).c_str());
|
||||||
|
if (buttonName.isEmpty()) buttonName = "Chess";//TODO maybe change all with GxsId
|
||||||
|
//disable old buttons
|
||||||
|
button_map::iterator it = buttonMapTakeChess.begin();
|
||||||
|
while (it != buttonMapTakeChess.end()) {
|
||||||
|
it = buttonMapTakeChess.erase(it);
|
||||||
|
}
|
||||||
|
//button_map::iterator it = buttonMapTakeChess.find(buttonName);
|
||||||
|
//if (it == buttonMapTakeChess.end()){
|
||||||
|
mChatWidget->addChatMsg(true, tr("Chess Status"), QDateTime::currentDateTime(), QDateTime::currentDateTime()
|
||||||
|
, tr("%1 inviting you to start Chess. Do you want to accept or decline the invitation?").arg(buttonName), ChatWidget::MSGTYPE_SYSTEM);
|
||||||
|
RSButtonOnText *button = mChatWidget->getNewButtonOnTextBrowser(tr("Accept"));
|
||||||
|
button->setToolTip(tr("Accept"));
|
||||||
|
button->setStyleSheet(QString("border: 1px solid #199909;")
|
||||||
|
.append("font-size: 12pt; color: white;")
|
||||||
|
.append("min-width: 128px; min-height: 24px;")
|
||||||
|
.append("border-radius: 6px;")
|
||||||
|
.append("background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 0.67, "
|
||||||
|
"stop: 0 #22c70d, stop: 1 #116a06);")
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
|
button->updateImage();
|
||||||
|
|
||||||
|
connect(button,SIGNAL(clicked()),this,SLOT(chessStart()));
|
||||||
|
connect(button,SIGNAL(mouseEnter()),this,SLOT(botMouseEnter()));
|
||||||
|
connect(button,SIGNAL(mouseLeave()),this,SLOT(botMouseLeave()));
|
||||||
|
|
||||||
|
buttonMapTakeChess.insert(buttonName, button);
|
||||||
|
//}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void RetroChessChatWidgetHolder::chessPressed()
|
||||||
|
{
|
||||||
|
RsPeerId peer_id = mChatWidget->getChatId().toPeerId();//TODO support GXSID
|
||||||
|
if (rsRetroChess->hasInviteFrom(peer_id)){
|
||||||
|
|
||||||
|
rsRetroChess->acceptedInvite(peer_id);
|
||||||
|
mRetroChessNotify->notifyChessStart(peer_id);
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
rsRetroChess->sendInvite(peer_id);
|
||||||
|
|
||||||
|
QString peerName = QString::fromUtf8(rsPeers->getPeerName(peer_id).c_str());
|
||||||
|
mChatWidget->addChatMsg(true, tr("Chess Status"), QDateTime::currentDateTime(), QDateTime::currentDateTime()
|
||||||
|
, tr("You're now inviting %1 to play Chess").arg(peerName), ChatWidget::MSGTYPE_SYSTEM);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void RetroChessChatWidgetHolder::chessStart()
|
||||||
|
{
|
||||||
|
RsPeerId peer_id = mChatWidget->getChatId().toPeerId();//TODO support GXSID
|
||||||
|
|
||||||
|
rsRetroChess->acceptedInvite(peer_id);
|
||||||
|
mRetroChessNotify->notifyChessStart(peer_id);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void RetroChessChatWidgetHolder::botMouseEnter()
|
||||||
|
{
|
||||||
|
RSButtonOnText *source = qobject_cast<RSButtonOnText *>(QObject::sender());
|
||||||
|
if (source){
|
||||||
|
source->setStyleSheet(QString("border: 1px solid #333333;")
|
||||||
|
.append("font-size: 12pt; color: white;")
|
||||||
|
.append("min-width: 128px; min-height: 24px;")
|
||||||
|
.append("border-radius: 6px;")
|
||||||
|
.append("background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 0.67, "
|
||||||
|
"stop: 0 #444444, stop: 1 #222222);")
|
||||||
|
|
||||||
|
);
|
||||||
|
//source->setDown(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void RetroChessChatWidgetHolder::botMouseLeave()
|
||||||
|
{
|
||||||
|
RSButtonOnText *source = qobject_cast<RSButtonOnText *>(QObject::sender());
|
||||||
|
if (source){
|
||||||
|
source->setStyleSheet(QString("border: 1px solid #199909;")
|
||||||
|
.append("font-size: 12pt; color: white;")
|
||||||
|
.append("min-width: 128px; min-height: 24px;")
|
||||||
|
.append("border-radius: 6px;")
|
||||||
|
.append("background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 0.67, "
|
||||||
|
"stop: 0 #22c70d, stop: 1 #116a06);")
|
||||||
|
|
||||||
|
);
|
||||||
|
//source->setDown(false);
|
||||||
|
}
|
||||||
|
}
|
35
plugins/RetroChess/gui/RetroChessChatWidgetHolder.h
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
#ifndef RETROCHESSCHATWIDGETHOLDER_H
|
||||||
|
#define RETROCHESSCHATWIDGETHOLDER_H
|
||||||
|
|
||||||
|
#include "RetroChessChatWidgetHolder.h"
|
||||||
|
#include <gui/chat/ChatWidget.h>
|
||||||
|
#include <gui/common/RsButtonOnText.h>
|
||||||
|
#include <gui/RetroChessNotify.h>
|
||||||
|
|
||||||
|
class RetroChessChatWidgetHolder : public QObject, public ChatWidgetHolder
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
RetroChessChatWidgetHolder(ChatWidget *chatWidget, RetroChessNotify *notify);
|
||||||
|
virtual ~RetroChessChatWidgetHolder();
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
void chessPressed();
|
||||||
|
void chessStart();
|
||||||
|
void chessnotify(RsPeerId from_peer_id);
|
||||||
|
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void botMouseEnter();
|
||||||
|
void botMouseLeave();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
QToolButton *playChessButton ;
|
||||||
|
RetroChessNotify *mRetroChessNotify;
|
||||||
|
|
||||||
|
typedef QMap<QString, RSButtonOnText*> button_map;
|
||||||
|
button_map buttonMapTakeChess;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // RETROCHESSCHATWIDGETHOLDER_H
|
33
plugins/RetroChess/gui/RetroChessNotify.cpp
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
#include "RetroChessNotify.h"
|
||||||
|
|
||||||
|
RetroChessNotify::RetroChessNotify(QObject *parent) : QObject(parent)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void RetroChessNotify::notifyReceivedPaint(const RsPeerId &peer_id, int x, int y)
|
||||||
|
{
|
||||||
|
std::cout << "pNotify Recvd paint from: " << peer_id;
|
||||||
|
std::cout << " at " << x << " , " << y;
|
||||||
|
std::cout << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void RetroChessNotify::notifyReceivedMsg(const RsPeerId& peer_id, QString str)
|
||||||
|
{
|
||||||
|
std::cout << "pNotify Recvd Packet from: " << peer_id;
|
||||||
|
std::cout << " saying " << str.toStdString();
|
||||||
|
std::cout << std::endl;
|
||||||
|
emit NeMsgArrived(peer_id, str) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
void RetroChessNotify::notifyChessStart(const RsPeerId &peer_id)
|
||||||
|
{
|
||||||
|
emit chessStart(peer_id) ;
|
||||||
|
|
||||||
|
}
|
||||||
|
void RetroChessNotify::notifyChessInvite(const RsPeerId &peer_id)
|
||||||
|
{
|
||||||
|
emit chessInvited(peer_id) ;
|
||||||
|
|
||||||
|
}
|
54
plugins/RetroChess/gui/RetroChessNotify.h
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
/****************************************************************
|
||||||
|
* RetroShare is distributed under the following license:
|
||||||
|
*
|
||||||
|
* Copyright (C) 2015
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation; either version 2
|
||||||
|
* of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||||
|
* Boston, MA 02110-1301, USA.
|
||||||
|
****************************************************************/
|
||||||
|
|
||||||
|
// This class is a Qt object to get notification from the plugin's service threads,
|
||||||
|
// and responsible to pass the info the the GUI part.
|
||||||
|
//
|
||||||
|
// Because the GUI part is async-ed with the service, it is crucial to use the
|
||||||
|
// QObject connect system to communicate between the p3Service and the gui part (handled by Qt)
|
||||||
|
//
|
||||||
|
#ifndef NETEXAMPLENOTIFY_H
|
||||||
|
#define NETEXAMPLENOTIFY_H
|
||||||
|
|
||||||
|
#include <retroshare/rstypes.h>
|
||||||
|
|
||||||
|
#include <QObject>
|
||||||
|
|
||||||
|
class RetroChessNotify : public QObject
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
explicit RetroChessNotify(QObject *parent = 0);
|
||||||
|
void notifyReceivedPaint(const RsPeerId &peer_id, int x, int y) ;
|
||||||
|
void notifyReceivedMsg(const RsPeerId &peer_id, QString str) ;
|
||||||
|
void notifyChessStart(const RsPeerId &peer_id) ;
|
||||||
|
void notifyChessInvite(const RsPeerId &peer_id) ;
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void NeMsgArrived(const RsPeerId &peer_id, QString str) ; // emitted when the peer gets a msg
|
||||||
|
|
||||||
|
void chessStart(const RsPeerId &peer_id) ;
|
||||||
|
void chessInvited(const RsPeerId &peer_id) ;
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // NETEXAMPLENOTIFY_H
|
21
plugins/RetroChess/gui/RetroChess_images.qrc
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
<RCC>
|
||||||
|
<qresource prefix="/">
|
||||||
|
<file>images/bishop_black.svg</file>
|
||||||
|
<file>images/bishop_white.svg</file>
|
||||||
|
<file>images/king_black.svg</file>
|
||||||
|
<file>images/king_white.svg</file>
|
||||||
|
<file>images/knight_black.svg</file>
|
||||||
|
<file>images/knight_white.svg</file>
|
||||||
|
<file>images/pawn_black.svg</file>
|
||||||
|
<file>images/pawn_white.svg</file>
|
||||||
|
<file>images/queen_black.svg</file>
|
||||||
|
<file>images/queen_white.svg</file>
|
||||||
|
<file>images/rook_black.svg</file>
|
||||||
|
<file>images/rook_white.svg</file>
|
||||||
|
<file>images/chess-icon.png</file>
|
||||||
|
<file>images/chess-icon-32.png</file>
|
||||||
|
<file>images/chess.png</file>
|
||||||
|
<file>images/profile.png</file>
|
||||||
|
<file>images/retrochess.png</file>
|
||||||
|
</qresource>
|
||||||
|
</RCC>
|
873
plugins/RetroChess/gui/chess.cpp
Normal file
@ -0,0 +1,873 @@
|
|||||||
|
#include <QApplication>
|
||||||
|
#include "chess.h"
|
||||||
|
#include "gui/common/AvatarDefs.h"
|
||||||
|
|
||||||
|
RetroChessWindow::RetroChessWindow(std::string peerid, int player, QWidget *parent) :
|
||||||
|
QWidget(parent),
|
||||||
|
mPeerId(peerid)
|
||||||
|
//ui(new Ui::RetroChessWindow)
|
||||||
|
{
|
||||||
|
|
||||||
|
//tile = { { NULL } };
|
||||||
|
count=0;
|
||||||
|
turn=1;
|
||||||
|
max=0;
|
||||||
|
texp = new int[60];
|
||||||
|
setGeometry(0,0,1370,700);
|
||||||
|
|
||||||
|
QString player_str;
|
||||||
|
if (player ){
|
||||||
|
p1id = rsPeers->getOwnId();
|
||||||
|
p2id = RsPeerId(peerid);
|
||||||
|
player_str = " (1)";
|
||||||
|
}else{
|
||||||
|
p1id = RsPeerId(peerid);
|
||||||
|
p2id = rsPeers->getOwnId();
|
||||||
|
player_str = " (2)";
|
||||||
|
}
|
||||||
|
|
||||||
|
p1name = rsPeers->getPeerName(p1id);
|
||||||
|
p2name = rsPeers->getPeerName(p2id);
|
||||||
|
|
||||||
|
QString title = QString::fromStdString(p2name);
|
||||||
|
title += " Playing Chess against ";
|
||||||
|
title += QString::fromStdString(p1name);
|
||||||
|
title+=player_str;
|
||||||
|
|
||||||
|
|
||||||
|
this->setWindowTitle(title);
|
||||||
|
|
||||||
|
accessories();
|
||||||
|
chessBoard();
|
||||||
|
}
|
||||||
|
|
||||||
|
RetroChessWindow::~RetroChessWindow()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
class Border
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Border();
|
||||||
|
void outline(QWidget *baseWidget, int xPos, int yPos, int Pos)
|
||||||
|
{
|
||||||
|
QLabel *outLabel = new QLabel(baseWidget);
|
||||||
|
|
||||||
|
if(!Pos)
|
||||||
|
outLabel->setGeometry(xPos,yPos,552,20); //Horizontal Borders
|
||||||
|
|
||||||
|
else
|
||||||
|
outLabel->setGeometry(xPos,yPos,20,512); //Vertical Borders
|
||||||
|
|
||||||
|
outLabel->setStyleSheet("QLabel { background-color :rgb(170, 170, 127); color : black; }");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
void RetroChessWindow::accessories()
|
||||||
|
{
|
||||||
|
QWidget *baseWidget = this;
|
||||||
|
QLabel *player2 = new QLabel(baseWidget);
|
||||||
|
QLabel *name2 = new QLabel(p2name.c_str(), baseWidget);
|
||||||
|
QLabel *time2 = new QLabel("00:00:00", baseWidget);
|
||||||
|
|
||||||
|
QLabel *player1 = new QLabel(baseWidget);
|
||||||
|
QLabel *name1 = new QLabel(p1name.c_str(), baseWidget);
|
||||||
|
QLabel *time1 = new QLabel("00:00:00", baseWidget);
|
||||||
|
|
||||||
|
QLabel *moves = new QLabel(baseWidget);
|
||||||
|
|
||||||
|
name1->setGeometry(125,610,80,20);
|
||||||
|
time1->setGeometry(120,635,80,20);
|
||||||
|
player1->setGeometry(100,500,100,100);
|
||||||
|
QPixmap p1avatar;
|
||||||
|
AvatarDefs::getAvatarFromSslId(p1id, p1avatar);
|
||||||
|
player1->setPixmap(p1avatar);//QPixmap(":/images/profile.png"));
|
||||||
|
|
||||||
|
|
||||||
|
name2->setGeometry(125,210,80,20);
|
||||||
|
time2->setGeometry(120,235,80,20);
|
||||||
|
player2->setGeometry(100,100,100,100);
|
||||||
|
QPixmap p2avatar;
|
||||||
|
AvatarDefs::getAvatarFromSslId(p2id, p2avatar);
|
||||||
|
player2->setPixmap(p2avatar);//QPixmap(":/images/profile.png"));
|
||||||
|
|
||||||
|
moves->setGeometry(1000,105,250,550);
|
||||||
|
moves->setStyleSheet("QLabel {background-color: white;}");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void RetroChessWindow::disOrange()
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for(i=0;i<max;i++)
|
||||||
|
tile[texp[i]/8][texp[i]%8]->tileDisplay();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void RetroChessWindow::validate_tile(int row, int col, int c){
|
||||||
|
Tile *clickedtile = tile[col][row];
|
||||||
|
//if (!click1)click1=clickedtile;
|
||||||
|
clickedtile->validate(++count);
|
||||||
|
}
|
||||||
|
|
||||||
|
void RetroChessWindow::chessBoard()
|
||||||
|
{
|
||||||
|
//QWidget *baseWidget, Tile *tile[8][8]
|
||||||
|
QWidget *baseWidget = this;
|
||||||
|
int i,j,k=0,hor,ver;
|
||||||
|
Border *border[4]={ NULL };
|
||||||
|
|
||||||
|
//borderDisplay
|
||||||
|
{
|
||||||
|
border[0]->outline(baseWidget,330,105,0);
|
||||||
|
border[1]->outline(baseWidget,330,637,0);
|
||||||
|
border[2]->outline(baseWidget,330,125,1);
|
||||||
|
border[2]->outline(baseWidget,862,125,1);
|
||||||
|
}
|
||||||
|
|
||||||
|
//Create 64 tiles (allocating memories to the objects of Tile class)
|
||||||
|
ver=125;
|
||||||
|
for(i=0;i<8;i++)
|
||||||
|
{
|
||||||
|
hor=350;
|
||||||
|
for(j=0;j<8;j++)
|
||||||
|
{
|
||||||
|
tile[i][j] = new Tile(baseWidget);
|
||||||
|
tile[i][j]->tileColor=(i+j)%2;
|
||||||
|
tile[i][j]->piece=0;
|
||||||
|
tile[i][j]->row=i;
|
||||||
|
tile[i][j]->col=j;
|
||||||
|
tile[i][j]->tileNum=k++;
|
||||||
|
tile[i][j]->tileDisplay();
|
||||||
|
tile[i][j]->setGeometry(hor,ver,64,64);
|
||||||
|
hor+=64;
|
||||||
|
}
|
||||||
|
ver+=64;
|
||||||
|
}
|
||||||
|
|
||||||
|
//white pawns
|
||||||
|
for(j=0;j<8;j++)
|
||||||
|
{
|
||||||
|
tile[1][j]->piece=1;
|
||||||
|
tile[1][j]->pieceColor=0;
|
||||||
|
tile[1][j]->display('P');
|
||||||
|
}
|
||||||
|
|
||||||
|
//black pawns
|
||||||
|
for(j=0;j<8;j++)
|
||||||
|
{
|
||||||
|
tile[6][j]->piece=1;
|
||||||
|
tile[6][j]->pieceColor=1;
|
||||||
|
tile[6][j]->display('P');
|
||||||
|
}
|
||||||
|
|
||||||
|
//white and black remaining elements
|
||||||
|
for(j=0;j<8;j++)
|
||||||
|
{
|
||||||
|
tile[0][j]->piece=1;
|
||||||
|
tile[0][j]->pieceColor=0;
|
||||||
|
tile[7][j]->piece=1;
|
||||||
|
tile[7][j]->pieceColor=1;
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
tile[0][0]->display('R');
|
||||||
|
tile[0][1]->display('H');
|
||||||
|
tile[0][2]->display('B');
|
||||||
|
tile[0][3]->display('Q');
|
||||||
|
tile[0][4]->display('K');
|
||||||
|
tile[0][5]->display('B');
|
||||||
|
tile[0][6]->display('H');
|
||||||
|
tile[0][7]->display('R');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
{
|
||||||
|
tile[7][0]->display('R');
|
||||||
|
tile[7][1]->display('H');
|
||||||
|
tile[7][2]->display('B');
|
||||||
|
tile[7][3]->display('Q');
|
||||||
|
tile[7][4]->display('K');
|
||||||
|
tile[7][5]->display('B');
|
||||||
|
tile[7][6]->display('H');
|
||||||
|
tile[7][7]->display('R');
|
||||||
|
}
|
||||||
|
|
||||||
|
wR=7;
|
||||||
|
wC=4;
|
||||||
|
|
||||||
|
bR=0;
|
||||||
|
bC=4;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
int RetroChessWindow::chooser(Tile *temp)
|
||||||
|
{
|
||||||
|
switch(temp->pieceName)
|
||||||
|
{
|
||||||
|
case 'P': flag=validatePawn(temp);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'R': flag=validateRook(temp);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'H': flag=validateHorse(temp);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'K': flag=validateKing(temp);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'Q': flag=validateQueen(temp);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'B': flag=validateBishop(temp);
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
orange();
|
||||||
|
|
||||||
|
return flag;
|
||||||
|
}
|
||||||
|
|
||||||
|
//PAWN
|
||||||
|
int RetroChessWindow::validatePawn(Tile *temp)
|
||||||
|
{
|
||||||
|
int row,col;
|
||||||
|
|
||||||
|
row=temp->row;
|
||||||
|
col=temp->col;
|
||||||
|
retVal=0;
|
||||||
|
|
||||||
|
//White Pawn
|
||||||
|
if(temp->pieceColor)
|
||||||
|
{
|
||||||
|
if(row-1>=0 && !tile[row-1][col]->piece)
|
||||||
|
{
|
||||||
|
/*int tnum = tile[row-1][col]->tileNum;
|
||||||
|
std::cout << "tile: " << texp[max] << std::endl;
|
||||||
|
int a = texp[max];
|
||||||
|
texp[max] = tnum;
|
||||||
|
max++;*/
|
||||||
|
texp[max++]=tile[row-1][col]->tileNum;
|
||||||
|
retVal=1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(row==6 && !tile[5][col]->piece && !tile[4][col]->piece)
|
||||||
|
{
|
||||||
|
texp[max++]=tile[row-2][col]->tileNum;
|
||||||
|
retVal=1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(row-1>=0 && col-1>=0)
|
||||||
|
{
|
||||||
|
if(tile[row-1][col-1]->pieceColor!=temp->pieceColor && tile[row-1][col-1]->piece)
|
||||||
|
{
|
||||||
|
texp[max++]=tile[row-1][col-1]->tileNum;
|
||||||
|
retVal=1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(row-1>=0 && col+1<=7)
|
||||||
|
{
|
||||||
|
if(tile[row-1][col+1]->pieceColor!=temp->pieceColor && tile[row-1][col+1]->piece)
|
||||||
|
{
|
||||||
|
texp[max++]=tile[row-1][col+1]->tileNum;
|
||||||
|
retVal=1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(row+1<=7 && !tile[row+1][col]->piece)
|
||||||
|
{
|
||||||
|
texp[max++]=tile[row+1][col]->tileNum;
|
||||||
|
retVal=1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(row==1 && !tile[2][col]->piece && !tile[3][col]->piece)
|
||||||
|
{
|
||||||
|
texp[max++]=tile[row+2][col]->tileNum;
|
||||||
|
retVal=1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(row+1<=7 && col-1>=0)
|
||||||
|
{
|
||||||
|
if(tile[row+1][col-1]->pieceColor!=temp->pieceColor && tile[row+1][col-1]->piece)
|
||||||
|
{
|
||||||
|
texp[max++]=tile[row+1][col-1]->tileNum;
|
||||||
|
retVal=1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(row+1<=7 && col+1<=7)
|
||||||
|
{
|
||||||
|
if(tile[row+1][col+1]->pieceColor!=temp->pieceColor && tile[row+1][col+1]->piece)
|
||||||
|
{
|
||||||
|
texp[max++]=tile[row+1][col+1]->tileNum;
|
||||||
|
retVal=1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return retVal;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//ROOK
|
||||||
|
int RetroChessWindow::validateRook(Tile *temp)
|
||||||
|
{
|
||||||
|
int r,c;
|
||||||
|
|
||||||
|
retVal=0;
|
||||||
|
|
||||||
|
r=temp->row;
|
||||||
|
c=temp->col;
|
||||||
|
while(r-->0)
|
||||||
|
{
|
||||||
|
if(!tile[r][c]->piece)
|
||||||
|
{
|
||||||
|
texp[max++]=tile[r][c]->tileNum;
|
||||||
|
retVal=1;
|
||||||
|
}
|
||||||
|
|
||||||
|
else if(tile[r][c]->pieceColor==temp->pieceColor)
|
||||||
|
break;
|
||||||
|
|
||||||
|
else if(tile[r][c]->pieceColor!=temp->pieceColor)
|
||||||
|
{
|
||||||
|
texp[max++]=tile[r][c]->tileNum;
|
||||||
|
retVal=1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
r=temp->row;
|
||||||
|
c=temp->col;
|
||||||
|
while(r++<7)
|
||||||
|
{
|
||||||
|
if(!tile[r][c]->piece)
|
||||||
|
{
|
||||||
|
texp[max++]=tile[r][c]->tileNum;
|
||||||
|
retVal=1;
|
||||||
|
}
|
||||||
|
|
||||||
|
else if(tile[r][c]->pieceColor==temp->pieceColor)
|
||||||
|
break;
|
||||||
|
|
||||||
|
else if(tile[r][c]->pieceColor!=temp->pieceColor)
|
||||||
|
{
|
||||||
|
texp[max++]=tile[r][c]->tileNum;
|
||||||
|
retVal=1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
r=temp->row;
|
||||||
|
c=temp->col;
|
||||||
|
while(c++<7)
|
||||||
|
{
|
||||||
|
if(!tile[r][c]->piece)
|
||||||
|
{
|
||||||
|
texp[max++]=tile[r][c]->tileNum;
|
||||||
|
retVal=1;
|
||||||
|
}
|
||||||
|
|
||||||
|
else if(tile[r][c]->pieceColor==temp->pieceColor)
|
||||||
|
break;
|
||||||
|
|
||||||
|
else if(tile[r][c]->pieceColor!=temp->pieceColor)
|
||||||
|
{
|
||||||
|
texp[max++]=tile[r][c]->tileNum;
|
||||||
|
retVal=1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
r=temp->row;
|
||||||
|
c=temp->col;
|
||||||
|
while(c-->0)
|
||||||
|
{
|
||||||
|
if(!tile[r][c]->piece)
|
||||||
|
{
|
||||||
|
texp[max++]=tile[r][c]->tileNum;
|
||||||
|
retVal=1;
|
||||||
|
}
|
||||||
|
|
||||||
|
else if(tile[r][c]->pieceColor==temp->pieceColor)
|
||||||
|
break;
|
||||||
|
|
||||||
|
else if(tile[r][c]->pieceColor!=temp->pieceColor)
|
||||||
|
{
|
||||||
|
texp[max++]=tile[r][c]->tileNum;
|
||||||
|
retVal=1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return retVal;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//HORSE
|
||||||
|
int RetroChessWindow::validateHorse(Tile *temp)
|
||||||
|
{
|
||||||
|
int r,c;
|
||||||
|
retVal=0;
|
||||||
|
|
||||||
|
r=temp->row;
|
||||||
|
c=temp->col;
|
||||||
|
|
||||||
|
if(r-2>=0 && c-1>=0)
|
||||||
|
{
|
||||||
|
if(tile[r-2][c-1]->pieceColor!=temp->pieceColor || !tile[r-2][c-1]->piece)
|
||||||
|
{
|
||||||
|
texp[max++]=tile[r-2][c-1]->tileNum;
|
||||||
|
retVal=1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(r-2>=0 && c+1<=7)
|
||||||
|
{
|
||||||
|
if(tile[r-2][c+1]->pieceColor!=temp->pieceColor || !tile[r-2][c+1]->piece)
|
||||||
|
{
|
||||||
|
texp[max++]=tile[r-2][c+1]->tileNum;
|
||||||
|
retVal=1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(r-1>=0 && c-2>=0)
|
||||||
|
{
|
||||||
|
if(tile[r-1][c-2]->pieceColor!=temp->pieceColor || !tile[r-1][c-2]->piece)
|
||||||
|
{
|
||||||
|
texp[max++]=tile[r-1][c-2]->tileNum;
|
||||||
|
retVal=1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(r-1>=0 && c+2<=7)
|
||||||
|
{
|
||||||
|
if(tile[r-1][c+2]->pieceColor!=temp->pieceColor || !tile[r-1][c+2]->piece)
|
||||||
|
{
|
||||||
|
texp[max++]=tile[r-1][c+2]->tileNum;
|
||||||
|
retVal=1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(r+2<=7 && c+1<=7)
|
||||||
|
{
|
||||||
|
if(tile[r+2][c+1]->pieceColor!=temp->pieceColor || !tile[r+2][c+1]->piece)
|
||||||
|
{
|
||||||
|
texp[max++]=tile[r+2][c+1]->tileNum;
|
||||||
|
retVal=1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(r+2<=7 && c-1>=0)
|
||||||
|
{
|
||||||
|
if(tile[r+2][c-1]->pieceColor!=temp->pieceColor || !tile[r+2][c-1]->piece)
|
||||||
|
{
|
||||||
|
texp[max++]=tile[r+2][c-1]->tileNum;
|
||||||
|
retVal=1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(r+1<=7 && c-2>=0)
|
||||||
|
{
|
||||||
|
if(tile[r+1][c-2]->pieceColor!=temp->pieceColor || !tile[r+1][c-2]->piece)
|
||||||
|
{
|
||||||
|
texp[max++]=tile[r+1][c-2]->tileNum;
|
||||||
|
retVal=1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(r+1<=7 && c+2<=7)
|
||||||
|
{
|
||||||
|
if(tile[r+1][c+2]->pieceColor!=temp->pieceColor || !tile[r+1][c+2]->piece)
|
||||||
|
{
|
||||||
|
texp[max++]=tile[r+1][c+2]->tileNum;
|
||||||
|
retVal=1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return retVal;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//KING
|
||||||
|
int RetroChessWindow::validateKing(Tile *temp)
|
||||||
|
{
|
||||||
|
int r,c;
|
||||||
|
retVal=0;
|
||||||
|
|
||||||
|
r=temp->row;
|
||||||
|
c=temp->col;
|
||||||
|
|
||||||
|
if(r-1>=0)
|
||||||
|
{
|
||||||
|
if(!tile[r-1][c]->piece || tile[r-1][c]->pieceColor!=temp->pieceColor)
|
||||||
|
{
|
||||||
|
texp[max++]=tile[r-1][c]->tileNum;
|
||||||
|
retVal=1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(r+1<=7)
|
||||||
|
{
|
||||||
|
if(!tile[r+1][c]->piece || tile[r+1][c]->pieceColor!=temp->pieceColor)
|
||||||
|
{
|
||||||
|
texp[max++]=tile[r+1][c]->tileNum;
|
||||||
|
retVal=1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(c-1>=0)
|
||||||
|
{
|
||||||
|
if(!tile[r][c-1]->piece || tile[r][c-1]->pieceColor!=temp->pieceColor)
|
||||||
|
{
|
||||||
|
texp[max++]=tile[r][c-1]->tileNum;
|
||||||
|
retVal=1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(c+1<=7)
|
||||||
|
{
|
||||||
|
if(!tile[r][c+1]->piece || tile[r][c+1]->pieceColor!=temp->pieceColor)
|
||||||
|
{
|
||||||
|
texp[max++]=tile[r][c+1]->tileNum;
|
||||||
|
retVal=1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(r-1>=0 && c-1>=0)
|
||||||
|
{
|
||||||
|
if(!tile[r-1][c-1]->piece || tile[r-1][c-1]->pieceColor!=temp->pieceColor)
|
||||||
|
{
|
||||||
|
texp[max++]=tile[r-1][c-1]->tileNum;
|
||||||
|
retVal=1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(r-1>=0 && c+1<=7)
|
||||||
|
{
|
||||||
|
if(!tile[r-1][c+1]->piece || tile[r-1][c+1]->pieceColor!=temp->pieceColor)
|
||||||
|
{
|
||||||
|
texp[max++]=tile[r-1][c+1]->tileNum;
|
||||||
|
retVal=1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(r+1<=7 && c-1>=0)
|
||||||
|
{
|
||||||
|
if(!tile[r+1][c-1]->piece || tile[r+1][c-1]->pieceColor!=temp->pieceColor)
|
||||||
|
{
|
||||||
|
texp[max++]=tile[r+1][c-1]->tileNum;
|
||||||
|
retVal=1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(r+1<=7 && c+1<=7)
|
||||||
|
{
|
||||||
|
if(!tile[r+1][c+1]->piece || tile[r+1][c+1]->pieceColor!=temp->pieceColor)
|
||||||
|
{
|
||||||
|
texp[max++]=tile[r+1][c+1]->tileNum;
|
||||||
|
retVal=1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return retVal;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//QUEEN
|
||||||
|
int RetroChessWindow::validateQueen(Tile *temp)
|
||||||
|
{
|
||||||
|
int r,c;
|
||||||
|
|
||||||
|
retVal=0;
|
||||||
|
|
||||||
|
r=temp->row;
|
||||||
|
c=temp->col;
|
||||||
|
while(r-->0)
|
||||||
|
{
|
||||||
|
if(!tile[r][c]->piece)
|
||||||
|
{
|
||||||
|
texp[max++]=tile[r][c]->tileNum;
|
||||||
|
retVal=1;
|
||||||
|
}
|
||||||
|
|
||||||
|
else if(tile[r][c]->pieceColor==temp->pieceColor)
|
||||||
|
break;
|
||||||
|
|
||||||
|
else if(tile[r][c]->pieceColor!=temp->pieceColor)
|
||||||
|
{
|
||||||
|
texp[max++]=tile[r][c]->tileNum;
|
||||||
|
retVal=1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
r=temp->row;
|
||||||
|
c=temp->col;
|
||||||
|
while(r++<7)
|
||||||
|
{
|
||||||
|
if(!tile[r][c]->piece)
|
||||||
|
{
|
||||||
|
texp[max++]=tile[r][c]->tileNum;
|
||||||
|
retVal=1;
|
||||||
|
}
|
||||||
|
|
||||||
|
else if(tile[r][c]->pieceColor==temp->pieceColor)
|
||||||
|
break;
|
||||||
|
|
||||||
|
else if(tile[r][c]->pieceColor!=temp->pieceColor)
|
||||||
|
{
|
||||||
|
texp[max++]=tile[r][c]->tileNum;
|
||||||
|
retVal=1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
r=temp->row;
|
||||||
|
c=temp->col;
|
||||||
|
while(c++<7)
|
||||||
|
{
|
||||||
|
if(!tile[r][c]->piece)
|
||||||
|
{
|
||||||
|
texp[max++]=tile[r][c]->tileNum;
|
||||||
|
retVal=1;
|
||||||
|
}
|
||||||
|
|
||||||
|
else if(tile[r][c]->pieceColor==temp->pieceColor)
|
||||||
|
break;
|
||||||
|
|
||||||
|
else if(tile[r][c]->pieceColor!=temp->pieceColor)
|
||||||
|
{
|
||||||
|
texp[max++]=tile[r][c]->tileNum;
|
||||||
|
retVal=1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
r=temp->row;
|
||||||
|
c=temp->col;
|
||||||
|
while(c-->0)
|
||||||
|
{
|
||||||
|
if(!tile[r][c]->piece)
|
||||||
|
{
|
||||||
|
texp[max++]=tile[r][c]->tileNum;
|
||||||
|
retVal=1;
|
||||||
|
}
|
||||||
|
|
||||||
|
else if(tile[r][c]->pieceColor==temp->pieceColor)
|
||||||
|
break;
|
||||||
|
|
||||||
|
else if(tile[r][c]->pieceColor!=temp->pieceColor)
|
||||||
|
{
|
||||||
|
texp[max++]=tile[r][c]->tileNum;
|
||||||
|
retVal=1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
r=temp->row;
|
||||||
|
c=temp->col;
|
||||||
|
while(r-->0 && c++<7)
|
||||||
|
{
|
||||||
|
if(!tile[r][c]->piece)
|
||||||
|
{
|
||||||
|
texp[max++]=tile[r][c]->tileNum;
|
||||||
|
retVal=1;
|
||||||
|
}
|
||||||
|
|
||||||
|
else if(tile[r][c]->pieceColor==temp->pieceColor)
|
||||||
|
break;
|
||||||
|
|
||||||
|
else if(tile[r][c]->pieceColor!=temp->pieceColor)
|
||||||
|
{
|
||||||
|
texp[max++]=tile[r][c]->tileNum;
|
||||||
|
retVal=1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
r=temp->row;
|
||||||
|
c=temp->col;
|
||||||
|
while(r-->0 && c-->0)
|
||||||
|
{
|
||||||
|
if(!tile[r][c]->piece)
|
||||||
|
{
|
||||||
|
texp[max++]=tile[r][c]->tileNum;
|
||||||
|
retVal=1;
|
||||||
|
}
|
||||||
|
|
||||||
|
else if(tile[r][c]->pieceColor==temp->pieceColor)
|
||||||
|
break;
|
||||||
|
|
||||||
|
else if(tile[r][c]->pieceColor!=temp->pieceColor)
|
||||||
|
{
|
||||||
|
texp[max++]=tile[r][c]->tileNum;
|
||||||
|
retVal=1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
r=temp->row;
|
||||||
|
c=temp->col;
|
||||||
|
while(r++<7 && c++<7)
|
||||||
|
{
|
||||||
|
if(!tile[r][c]->piece)
|
||||||
|
{
|
||||||
|
texp[max++]=tile[r][c]->tileNum;
|
||||||
|
retVal=1;
|
||||||
|
}
|
||||||
|
|
||||||
|
else if(tile[r][c]->pieceColor==temp->pieceColor)
|
||||||
|
break;
|
||||||
|
|
||||||
|
else if(tile[r][c]->pieceColor!=temp->pieceColor)
|
||||||
|
{
|
||||||
|
texp[max++]=tile[r][c]->tileNum;
|
||||||
|
retVal=1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
r=temp->row;
|
||||||
|
c=temp->col;
|
||||||
|
while(r++<7 && c-->0)
|
||||||
|
{
|
||||||
|
if(!tile[r][c]->piece)
|
||||||
|
{
|
||||||
|
texp[max++]=tile[r][c]->tileNum;
|
||||||
|
retVal=1;
|
||||||
|
}
|
||||||
|
|
||||||
|
else if(tile[r][c]->pieceColor==temp->pieceColor)
|
||||||
|
break;
|
||||||
|
|
||||||
|
else if(tile[r][c]->pieceColor!=temp->pieceColor)
|
||||||
|
{
|
||||||
|
texp[max++]=tile[r][c]->tileNum;
|
||||||
|
retVal=1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return retVal;
|
||||||
|
}
|
||||||
|
|
||||||
|
//BISHOP
|
||||||
|
int RetroChessWindow::validateBishop(Tile *temp)
|
||||||
|
{
|
||||||
|
int r,c;
|
||||||
|
retVal=0;
|
||||||
|
|
||||||
|
r=temp->row;
|
||||||
|
c=temp->col;
|
||||||
|
while(r-->0 && c++<7)
|
||||||
|
{
|
||||||
|
if(!tile[r][c]->piece)
|
||||||
|
{
|
||||||
|
texp[max++]=tile[r][c]->tileNum;
|
||||||
|
retVal=1;
|
||||||
|
}
|
||||||
|
|
||||||
|
else if(tile[r][c]->pieceColor==temp->pieceColor)
|
||||||
|
break;
|
||||||
|
|
||||||
|
else if(tile[r][c]->pieceColor!=temp->pieceColor)
|
||||||
|
{
|
||||||
|
texp[max++]=tile[r][c]->tileNum;
|
||||||
|
retVal=1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
r=temp->row;
|
||||||
|
c=temp->col;
|
||||||
|
while(r-->0 && c-->0)
|
||||||
|
{
|
||||||
|
if(!tile[r][c]->piece)
|
||||||
|
{
|
||||||
|
texp[max++]=tile[r][c]->tileNum;
|
||||||
|
retVal=1;
|
||||||
|
}
|
||||||
|
|
||||||
|
else if(tile[r][c]->pieceColor==temp->pieceColor)
|
||||||
|
break;
|
||||||
|
|
||||||
|
else if(tile[r][c]->pieceColor!=temp->pieceColor)
|
||||||
|
{
|
||||||
|
texp[max++]=tile[r][c]->tileNum;
|
||||||
|
retVal=1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
r=temp->row;
|
||||||
|
c=temp->col;
|
||||||
|
while(r++<7 && c++<7)
|
||||||
|
{
|
||||||
|
if(!tile[r][c]->piece)
|
||||||
|
{
|
||||||
|
texp[max++]=tile[r][c]->tileNum;
|
||||||
|
retVal=1;
|
||||||
|
}
|
||||||
|
|
||||||
|
else if(tile[r][c]->pieceColor==temp->pieceColor)
|
||||||
|
break;
|
||||||
|
|
||||||
|
else if(tile[r][c]->pieceColor!=temp->pieceColor)
|
||||||
|
{
|
||||||
|
texp[max++]=tile[r][c]->tileNum;
|
||||||
|
retVal=1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
r=temp->row;
|
||||||
|
c=temp->col;
|
||||||
|
while(r++<7 && c-->0)
|
||||||
|
{
|
||||||
|
if(!tile[r][c]->piece)
|
||||||
|
{
|
||||||
|
texp[max++]=tile[r][c]->tileNum;
|
||||||
|
retVal=1;
|
||||||
|
}
|
||||||
|
|
||||||
|
else if(tile[r][c]->pieceColor==temp->pieceColor)
|
||||||
|
break;
|
||||||
|
|
||||||
|
else if(tile[r][c]->pieceColor!=temp->pieceColor)
|
||||||
|
{
|
||||||
|
texp[max++]=tile[r][c]->tileNum;
|
||||||
|
retVal=1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return retVal;
|
||||||
|
}
|
||||||
|
|
||||||
|
int RetroChessWindow::check(Tile *temp)
|
||||||
|
{
|
||||||
|
int r,c,flag;
|
||||||
|
retVal=0;
|
||||||
|
|
||||||
|
return retVal;
|
||||||
|
}
|
||||||
|
|
||||||
|
void RetroChessWindow::orange()
|
||||||
|
{
|
||||||
|
int i,n;
|
||||||
|
|
||||||
|
for(i=0;i<max;i++)
|
||||||
|
tile[texp[i]/8][texp[i]%8]->setStyleSheet("QLabel {background-color: orange;}");
|
||||||
|
}
|
57
plugins/RetroChess/gui/chess.h
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
#ifndef CHESS_H
|
||||||
|
#define CHESS_H
|
||||||
|
|
||||||
|
//#include "tile.h"
|
||||||
|
#include "validation.h"
|
||||||
|
#include "qwidget.h"
|
||||||
|
|
||||||
|
#include "retroshare/rspeers.h"
|
||||||
|
|
||||||
|
class RetroChessWindow : public QWidget
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
void accessories();
|
||||||
|
void chessBoard();
|
||||||
|
RsPeerId p1id;
|
||||||
|
RsPeerId p2id;
|
||||||
|
std::string p1name;
|
||||||
|
std::string p2name;
|
||||||
|
public:
|
||||||
|
std::string mPeerId;
|
||||||
|
explicit RetroChessWindow(std::string peerid, int player = 0, QWidget *parent = 0);
|
||||||
|
~RetroChessWindow();
|
||||||
|
int currentplayer;
|
||||||
|
int myid;
|
||||||
|
|
||||||
|
//from global
|
||||||
|
|
||||||
|
int wR,wC,bR,bC;
|
||||||
|
Tile *click1;
|
||||||
|
|
||||||
|
Tile *tile[8][8];
|
||||||
|
|
||||||
|
int count,turn,max;
|
||||||
|
int *texp;
|
||||||
|
|
||||||
|
|
||||||
|
void disOrange();
|
||||||
|
void validate_tile(int row, int col, int c);
|
||||||
|
|
||||||
|
|
||||||
|
int flag,retVal;
|
||||||
|
int chooser(Tile *temp);
|
||||||
|
int validateBishop(Tile *temp);
|
||||||
|
int validateQueen(Tile *temp);
|
||||||
|
int validateKing(Tile *temp);
|
||||||
|
int validateHorse(Tile *temp);
|
||||||
|
int validateRook(Tile *temp);
|
||||||
|
int validatePawn(Tile *temp);
|
||||||
|
void orange();
|
||||||
|
int check(Tile *temp);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
QWidget* make_board();
|
||||||
|
|
||||||
|
#endif // CHESS_H
|
116
plugins/RetroChess/gui/images/bishop_black.svg
Normal file
@ -0,0 +1,116 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
version="1.1"
|
||||||
|
width="64"
|
||||||
|
height="64"
|
||||||
|
id="svg2">
|
||||||
|
<metadata
|
||||||
|
id="metadata8">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title></dc:title>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<defs
|
||||||
|
id="defs6" />
|
||||||
|
<image
|
||||||
|
xlink:href="data:image/png;base64,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
|
||||||
|
RK5CYII=
|
||||||
|
"
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
width="64"
|
||||||
|
height="64"
|
||||||
|
id="image10" />
|
||||||
|
</svg>
|
After Width: | Height: | Size: 6.8 KiB |
124
plugins/RetroChess/gui/images/bishop_white.svg
Normal file
@ -0,0 +1,124 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
version="1.1"
|
||||||
|
width="64"
|
||||||
|
height="64"
|
||||||
|
id="svg2">
|
||||||
|
<metadata
|
||||||
|
id="metadata8">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title></dc:title>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<defs
|
||||||
|
id="defs6" />
|
||||||
|
<image
|
||||||
|
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABHNCSVQICAgIfAhkiAAAEz5JREFU
|
||||||
|
eJztW3tQVPe9/5xzds+efb+ARWAfgKCgICrRaKOANtrmQbDT8VFjYiZjb1rHG5N20t5xpsTEdGIT
|
||||||
|
c31k2jRzJze0MTc+8PpI0ESUijFGIiKCCIKAyENe+4Bld8/Zc87v/mF2q03TJmWLvTN+Zs7szp7f
|
||||||
|
/M7n+/19v7/v43cWuId7uId7uIeJx+nTp83FxcVJdrs9qbi4OKmqqsp0N3jQd+OhZ8+ezdq/f//O
|
||||||
|
gYGBynA4/KfBwcFPDh48uLW2tjYLAHU3OE0YXn31VWNhYeGm+Ph4r06nk5OSkojRaJQTEhJ8P/jB
|
||||||
|
D/5YUVGRO5F8mIl8GADIsjyjoaHheaVS6XrmmWfodevWweFwUOfPn1e53e6po6Oj1y9evHh28+bN
|
||||||
|
E01tQkDZ7fblKpVqqLi4mPT19ZFgMEi6urpISUkJUavVQn5+/ktXr15VTRShid4DiCRJWoZhVEql
|
||||||
|
MvqjSqWCVqsFTdN8IBDo7+npkSaK0IQqgBBC5eXlhXU6nfj555/jwIEDuHjxIvbu3YszZ86Aoqjr
|
||||||
|
kiRdLioqEieS14TitddeS122bNlxnU4nxsfHk5SUFGKxWAjHcf7U1NT/KCgo0N1tjv9UuN1uY1lZ
|
||||||
|
WUVWVpbIsixRKpVEqVQSl8sVeOWVV14ihGgnko9iIh926dIl85YtW75XW1ub2dPTw8THxyMvLw+1
|
||||||
|
tbXweDzq48eP/8jn8w1cunRpd25urmciuf1TQQihjxw5krxgwYJ/s9vtLRRFSdOnTydvvPEGaW9v
|
||||||
|
J6+//jrJyckhLMvKLperNzc39/l33303+W7zjgkaGxstb7755tqlS5fuN5lMLUajUSwuLibHjh0j
|
||||||
|
Pp+PhEIhMjY2Rj7++GNSUlJCDAYDiY+P9xQWFh4pLS394aeffqq/2zL8QyCEUD09PZoXXnhh46JF
|
||||||
|
i/p1Op1ksVjI888/TxobG4koikQQBMLzPOF5noRCIdLa2ko2bdpEUlJSiE6nIwsWLOh77rnnXiSE
|
||||||
|
mO+2PN8KhBDuxIkTi9asWbMjOTm5hWVZOTc3l+zcuZP09vYSQRCIKIokHA5HFRH5rbe3l+zcuZPk
|
||||||
|
5eURjuPklJSU/sLCwpe2bt2adLfl+kbo6enRHDp0aPnDDz982mq1Smq1mpSUlJDDhw+TQCBAQqFQ
|
||||||
|
VOBwOEx4no9agizLRBAEEggEyNGjR8ny5cuJXq8nRqNxJCsra9e2bdsm3235/iYIIYoPPvigpKSk
|
||||||
|
5AuDwRBOSEgg69evJ/X19SQQCBBRFAnP8yQcDpNwOEx6enrIJ598Qjo6OqKKidwPhUKksbGRbNiw
|
||||||
|
gSQmJspqtXrs/vvv/9+tW7cWEULuShX7d/H666/bZ8yY8T7HcZLD4SC//vWvSXd3N5EkiYiieIfZ
|
||||||
|
j46OkjfeeINkZ2eT3/zmN2R0dPSO/SAUCpFwOEyuX79Otm3bRiZPnkzUarV0//33f3zw4MGFd1vW
|
||||||
|
r6Cqqko3Z86cjVqttjs1NZXs2LGDuN1uIooikSTpjiscDhOPx0M2bNhADAYDWb9+PRkZGYkqKOIW
|
||||||
|
kf3B6/WSXbt2kczMTBIfHy88/fTT+2pqauyx4B0TUyKEKGpqapYPDg6upygqec2aNVixYgX0ej1E
|
||||||
|
UYQsy9ErHA5DkiTQNA1JkkAIgSAICIfDCIfDoCgKNH2LlizLoCgKGo0GK1aswFNPPQVBEJSfffbZ
|
||||||
|
0kOHDj20d+/ecZfzMekHFBUVTTl06NDLdXV1OUuXLqVeeOEF2Gw2UBQFirrV4KFpGgMDAzh8+DCq
|
||||||
|
qqpw6tQpnDp1Cj09PZAkCSMjI7hw4QI6OzsRFxcHrfbOjJhlWaSmpqKjowNnz55lGYZh8vPzq/bt
|
||||||
|
2zcaCxnGhd/97ndPZ2dne5KSksju3btJMBgkgiDc4fvBYJAcOXKEpKenE71eTwwGA+E4jtA0TRQK
|
||||||
|
BdHr9USr1RKn00nKy8uje8DtrhAOh8mePXuIzWYjTqez+5e//OVD4+U+7lrA4/GYdu3atbi/v9/g
|
||||||
|
dDqRnZ0NheLWtISQqBUoFApkZ2fjySefRHd3NwKBAGpqatDZ2QmXy4U5c+ZAo9EgKSkJ06ZNA8Mw
|
||||||
|
d7hDBFOnTkVcXBx6e3sTg8Hg9wghlRRFCf8o/3ErwGQyqTo6OiyCINDp6emw2WwAbpl8xPwBQKFQ
|
||||||
|
IDU1FRs3bgTP8xgbG8PLL7+MmzdvYt68eXjppZeg1WqhUqnAcRxomgZN03coEQDi4uKQmZmJrq4u
|
||||||
|
pqOjIxHjdONYVINyb2+vLAgC1Go1VCpVlPDtCohArVaD4zgolUpwHAdZlsGyLMxmM7RaLWRZBiEk
|
||||||
|
Oj4yB0VR0bHx8fGQJAler1cJQAkg+I+SH3cU8Pv9lEqlAsMwEEUxumJ/DRHBGIaBQqFAcnIyrFYr
|
||||||
|
nE5n9F7E7P/WHH6/HxRFwWQy6QGMq1gatwXodLqAxWK5zjCM1N/fz/h8PhgMBhBCwLLsV8YTQiBJ
|
||||||
|
ElQqFR555BFYrVbMmzcPKpXqjjFfp8ixsTH09/eDYRgkJydTwWBwXIsYCxcYoyjqI1mWH+zo6Ehr
|
||||||
|
b2+n7HY7KIq6w5SBP69uJL5nZGQgPT096jaRMRFElBAZT1EUmpub0dXVRfR6vTB58uQ2tVrtHg/5
|
||||||
|
cbsARVEkMzPzDMuyR3t7e8XKykoIggBCCERRhCRJkGU5KhBwywVomgbDMOA4LjLPHWNkWYYkSdEk
|
||||||
|
SZZl8DyPkydP4saNG7Jer//C4XAcpChqbDz8Y5IInThxgs/IyFAEg8EHrl27ZkxKSqIyMjKgUCii
|
||||||
|
Kxgx/UAggEAggLGxMXg8HrjdboRCIQiCAEEQIIpiNARGFEdRFILBIA4cOIC3336bSJI0YLfb//PR
|
||||||
|
Rx89XFZWNq4Ocqx6guTZZ589//bbb/+prq5u1VtvvcXqdDosXboUADA0NITu7m60tLSgqakJfX19
|
||||||
|
8Hq9GBkZAQBoNBowDAOtVgun04m8vDzY7XYkJyfDZrOBpmkcO3YMO3fuRHt7u5CXl/fxqlWrKoqK
|
||||||
|
ikLjJR6zpuiNGzduLlu27KQsy0vPnz9v27JlC1VXV4dAIIDm5mY0NzdjaGgIovjnBfvLEBfxdZqm
|
||||||
|
YTAYMGPGDOTl5UGr1WLPnj1obGyU09PTrxQWFu4bGhq6GQveMT2JDQaDk8vKyp7bv3//459++qmB
|
||||||
|
ZVmEw2FwHAer1QqHwwGXywWbzQa9Xh+NFoIggOd5BINBDA4OorW1Fd3d3RgeHobf74darcbY2BiZ
|
||||||
|
O3fujcWLF29/9tln/9tsNntjwTmmbXG1Wt02PDz8qiiKdHd399rW1lauoKAAK1aswJQpU+B0OmGx
|
||||||
|
WKBUKiFJEhQKRTTbi1SGoijC7Xajt7cXTU1N2L17N86cOYPU1NTQqlWr/uf73/9+zIQH/gnnAhaL
|
||||||
|
pUej0XwRCoV+aDKZuNWrV2PlypV35AQ0TUdLX4ZhoqYPABzHQa/Xw+FwYM6cOeA4Dk1NTQiFQgGK
|
||||||
|
oprffffdkVjyjXlrKRQKufx+/yNjY2Mmp9OJ+fPnQ6lURiMBz/Pwer0YHh5Gf38/ent7MTQ0BJ/P
|
||||||
|
B7/fj2AwGLUGiqIwe/ZsOBwOhEIhvdvtnvfzn/88LpZ8Y24BPM+bGxoaMnieV+Tk5MBisUAQBPT3
|
||||||
|
96OmpgYtLS3o6OjA2NgYRkdHEQ6HoVKpoFKpoNPp4HQ6MX36dGRlZSE9PR1WqxXTp0/H1atX2ebm
|
||||||
|
5tnhcNgGYCBWfGOugK6uLt2VK1c0hBBoNBqUl5ejvr4ezc3NqK+vRzAYjFZ6DMPcUUNEPo1GI1JT
|
||||||
|
UzFz5kzk5ORAoVBAFEU0NDQo29raYso55go4ceKE1ePxmP1+P/bu3YsPPvgAwWAQWq0WaWlpmDZt
|
||||||
|
WjT9ValUYFkWPM9DlmV4vV60t7ejvb0d169fR319fbQzJAgChoeHFUeOHPnXVsDhw4e54eFhFgB8
|
||||||
|
Ph9ycnJQUFCAWbNmITc3F0lJSTAajdF4H4kAke+jo6Po6+tDU1MTzp07h8rKSly+fBmEEAwPD1Pl
|
||||||
|
5eUxDd0x3QQJIVROTo4uLi4OSqUSLMsiLi4O6enpyMvLg8PhgEajiVZ7ACBJUrRwkmUZWq0WiYmJ
|
||||||
|
cDqdcDqdSExMBMdxoChKNhqNcl5envLv0PhWiKkFUBRFzp49W6VQKLbo9fplN2/enF1dXc2cO3cO
|
||||||
|
2dnZyMzMREZGBlwuF5KTk8GyLCTp1tswXq8XPp8PfX19uHDhApqamtDZ2QlJkmC1WkdMJtO5zMzM
|
||||||
|
A0899VTz+++/HzvOMZvpSxBC6MuXLyvOnDkzo7Oz88GKigqb2+2e6/P5ciiK0oiiGN3xb98MfT4f
|
||||||
|
QqFQJCUmoii67Xa7Oysrq8Xlcn3odDo/KSoq6s7Pzw/Hkm/MFEAIYQFEEv1Id0MYHh7Wbt++3RkM
|
||||||
|
BlfIsrzh6NGjhtbWVlAUBb1eD5Zl4ff7MTY2BpqmMWXKFEyaNKlscHDwvdmzZ/f/4he/GJ46depN
|
||||||
|
iqLkWHG9Hd9KAYQQCgD14osvYvPmzQQAVVFRoayqqmI1Go36xo0bapfLpbPb7SZRFNHY2OgeGBgQ
|
||||||
|
zWazTalUJgN48MSJEz/q6OhQZ2VlYfXq1XA4HLhx4wb27NmDixcvwul0enU63SupqakX9Hp9UJKk
|
||||||
|
oNlsVhiNRo3H43FTFBVmGIYAgN/vD7W0tARMJpNYUlISWrt2bRgA+TbK+sYK+PJAMg6AtHHjRv2+
|
||||||
|
ffsm+Xw+7Zf30miaLlQoFLk0TSsIIVQ4HAbP8zJN04TjOK0kSWwwGBTMZrNj2bJlWLVqFebPnw9C
|
||||||
|
CBiGQU1NDf7whz+gvLwcPp/vJsdxsizLIgCRZVlKpVKpeJ73394vZBhGVKvV4qRJkyS9Xn908uTJ
|
||||||
|
B0tLS7sIIf7ExESRoih+3AoghHAA6J6eHvVrr72WWVZWdp/f719AUdR9CoXCStM0oWlaSdM0o1Ao
|
||||||
|
lJGG5+2dYZVKBbPZjOzsbBQUFODBBx9EXFwcfD4fBgYGYLVaYTab4fF4UFlZiaqqKjQ2NsLtdkeb
|
||||||
|
JJG5JEmKHq8RQqJHbDzP+5VKZb1Kpfp8/vz57cXFxRfWrVt34e+dGfxNBRBC9K2trQk//vGPE2tq
|
||||||
|
aqYIglCiVCqX2O121ZQpUzBt2jQkJCRAo9GAZVlwHBdte0dWSqFQQKvVwmg0wmAwQK/XIxQK4fTp
|
||||||
|
0zh06BAuXryImTNn4rHHHsP8+fNhsVjg8XgwNDQEv9+PQCAAnuej+QLP8wgEAhAEAaFQCIFAAF6v
|
||||||
|
Fw0NDbhy5Qq6urqgUqlGtFrtCZfL9V/r1q07uXbtWp6iKPLXZPxaBXR1dak/++yzhe+8805+TU3N
|
||||||
|
WkEQkqdOnap66KGH6CVLliAtLQ0GgyGazkbieOT6y5UKhULo7OzEpUuXUFtbi+rqagwNDYUJIWFR
|
||||||
|
FLmUlBR6wYIF0SaIw+GInh9ELAoAlEplNHIAiIZRj8eDjo4OHD9+HMeOHUNLS4vMMEyH1Wr948MP
|
||||||
|
P1y2ffv2HoqivhJBvlYBv//972eVl5fvrKysTExMTEx/4okn8OijjyI3Nxcsy4KmaQSDQQwMDKC7
|
||||||
|
uxt9fX0YHByEz+fDyMgIhoaG4PF4MDIygpGREfj9fvj9fni9XgSDQdhsNtHlcn2ckJBwZXBwcHZT
|
||||||
|
U9OkkZERB8dxaovFQqnVaqjVapjNZlitVhiNRuj1esTFxcFiscBgMCAlJQV2ux02mw1KpRIMw0AQ
|
||||||
|
BNTX1+PIkSMoKyuD1+sdNJlMW1etWvXWtm3bvtJA/dpEaP/+/bru7u40lmVtOTk5WLNmDdLS0kAI
|
||||||
|
wcDAAOrr61FdXY3a2lq0tbVheHgYPM/j9j3gy5WSRFEclSQpoFKpBKvV2hIMBqtnzpw5uGbNmhqX
|
||||||
|
y9Xh8Xgm7dixw3zu3LkZHMfN9Pl8KX19fRpCSAIAAwDqS3+nGIZhKIpS0TRtSEhIYFwuF2bNmoUH
|
||||||
|
HngA+fn5sNlsmDVrFiwWC+rq6lBZWRkPYG11dfUpAOe/sQXcvHnT9qtf/erpjz766EeCIEx94okn
|
||||||
|
mPXr16OhoQH79+9HdXU1BgcHoVQqSUJCgg/AtVAoNKTRaKiUlBSlyWTiWZb1xcXFDSuVytqrV682
|
||||||
|
tLW1+dLS0kbuu+++gc2bN38lVJWWltLnzp3T1dXVcf39/TQAFXsLCkEQKEIIxTCMURCEqQzDzNVq
|
||||||
|
tTmBQCCFEJKcmJhIFxUVYdmyZcjJycFvf/tbvPfee4Tn+b7CwsJ3fvazn+1cuHDh4DdWAAB8+OGH
|
||||||
|
5q1bt664dOnSv8uyPGXu3Ll0W1sbBgYGYDKZfElJSZfMZnPVjBkzLs6dO/fqzJkzB202G3ieZwVB
|
||||||
|
4Ht7e735+fkigL+6AY0HpaWl7LVr1xwnT550er3e2TRNPyZJ0tz4+HgmIyMDX3zxBcLhcIvdbn9r
|
||||||
|
y5Ytu5cvX/4V4b8RqqqqTI8//vjm1NTUEYVCIZvNZnnRokU1q1evfvLVV191TOS7/V+HgoICxcKF
|
||||||
|
C4u+853vHLJYLEGO42SXy9W9ePHi5yoqKgzjfsDg4ODsTZs2lS9ZsqTpJz/5yd6jR48W/qu9qUUI
|
||||||
|
oY8fP37fM8888853v/vdSz/96U/fbGhoiMl7RCgtLaXb2toSVq5cmdTc3Bz3ryZ8BKWlpfT169fN
|
||||||
|
K1euTKqrq7sr/0K7h3u4h/9f+D/fAsz+xk7UMQAAAABJRU5ErkJggg==
|
||||||
|
"
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
width="64"
|
||||||
|
height="64"
|
||||||
|
id="image10" />
|
||||||
|
</svg>
|
After Width: | Height: | Size: 7.5 KiB |
BIN
plugins/RetroChess/gui/images/chess-icon-32.png
Normal file
After Width: | Height: | Size: 1.9 KiB |
BIN
plugins/RetroChess/gui/images/chess-icon.png
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
plugins/RetroChess/gui/images/chess-notify.png
Normal file
After Width: | Height: | Size: 4.7 KiB |
56
plugins/RetroChess/gui/images/chess-notify.svg
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
id="svg4155"
|
||||||
|
version="1.1"
|
||||||
|
inkscape:version="0.91 r13725"
|
||||||
|
xml:space="preserve"
|
||||||
|
width="80"
|
||||||
|
height="80"
|
||||||
|
viewBox="0 0 80 80"
|
||||||
|
sodipodi:docname="chess-notify.svg"><metadata
|
||||||
|
id="metadata4161"><rdf:RDF><cc:Work
|
||||||
|
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
|
||||||
|
id="defs4159" /><sodipodi:namedview
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1"
|
||||||
|
objecttolerance="10"
|
||||||
|
gridtolerance="10"
|
||||||
|
guidetolerance="10"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:window-width="1366"
|
||||||
|
inkscape:window-height="706"
|
||||||
|
id="namedview4157"
|
||||||
|
showgrid="true"
|
||||||
|
inkscape:zoom="5.11875"
|
||||||
|
inkscape:cx="10.06105"
|
||||||
|
inkscape:cy="38.547254"
|
||||||
|
inkscape:window-x="-8"
|
||||||
|
inkscape:window-y="-8"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="g4163"><inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
id="grid4140" /></sodipodi:namedview><g
|
||||||
|
id="g4163"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
inkscape:label="ink_ext_XXXXXX"
|
||||||
|
transform="matrix(1.25,0,0,-1.25,0,80)"><path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4167"
|
||||||
|
style="fill:#f3dd1d;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||||
|
d="M 64,32 C 64,14.327 49.673,0 32,0 14.327,0 0,14.327 0,32 0,49.673 14.327,64 32,64 49.673,64 64,49.673 64,32" /><path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
style="fill:#ffffff"
|
||||||
|
d="m 48.338741,15.4906 c 0,-0.7338 -0.5949,-1.3287 -1.3287,-1.3287 l -29.93997,0 c -0.73379,0 -1.3287,0.5949 -1.3287,1.3287 l 0,2.83455 c 0,0.7338 0.59491,1.3287 1.3287,1.3287 l 29.93997,0 c 0.7338,0 1.3287,-0.5949 1.3287,-1.3287 l 0,-2.83455 z m 5.45935,22.90053 -5.75769,-14.70425 c -0.1993,-0.50915 -0.69021,-0.84434 -1.2371,-0.84434 l -29.23134,0 c -0.54193,0 -1.02947,0.32881 -1.23214,0.83141 l -5.93485,14.70425 c -0.23615,0.58498 -0.0283,1.25535 0.49746,1.60436 0.52546,0.34847 1.22382,0.28009 1.67151,-0.16476 l 7.2072,-7.16363 2.29068,6.73738 c 0.13287,0.39082 0.43971,0.69766 0.83052,0.83053 0.39135,0.13251 0.82131,0.0765 1.16447,-0.15254 l 4.46159,-2.97451 1.86655,6.50477 c -1.56361,0.66524 -2.66271,2.2168 -2.66271,4.02046 0,2.40796 1.95903,4.36681 4.36681,4.36681 2.40778,0 4.36699,-1.95903 4.36699,-4.36681 0,-1.80366 -1.09928,-3.35522 -2.66289,-4.02046 l 1.85238,-6.45516 4.38718,2.9249 c 0.34316,0.22889 0.77295,0.28523 1.16447,0.15254 0.39064,-0.13287 0.69766,-0.43954 0.83052,-0.83053 l 2.31318,-6.80328 7.27346,7.22935 c 0.44591,0.4429 1.14073,0.51306 1.66566,0.16848 0.52528,-0.3444 0.73716,-1.00999 0.50809,-1.59497 z m -17.37316,-3.92709 2.17765,-7.58881 3.65055,3.6284 -2.17463,6.39617 -3.65357,-2.43576 z m -14.54622,-3.89468 3.71681,-3.69431 2.16347,7.53938 -3.72796,2.48537 -2.15232,-6.33044 z"
|
||||||
|
id="path3" /></g></svg>
|
After Width: | Height: | Size: 3.3 KiB |
BIN
plugins/RetroChess/gui/images/chess.png
Normal file
After Width: | Height: | Size: 5.3 KiB |
56
plugins/RetroChess/gui/images/chess.svg
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
id="svg4155"
|
||||||
|
version="1.1"
|
||||||
|
inkscape:version="0.91 r13725"
|
||||||
|
xml:space="preserve"
|
||||||
|
width="80"
|
||||||
|
height="80"
|
||||||
|
viewBox="0 0 80 80"
|
||||||
|
sodipodi:docname="chess.svg"><metadata
|
||||||
|
id="metadata4161"><rdf:RDF><cc:Work
|
||||||
|
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
|
||||||
|
id="defs4159" /><sodipodi:namedview
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1"
|
||||||
|
objecttolerance="10"
|
||||||
|
gridtolerance="10"
|
||||||
|
guidetolerance="10"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:window-width="1366"
|
||||||
|
inkscape:window-height="706"
|
||||||
|
id="namedview4157"
|
||||||
|
showgrid="true"
|
||||||
|
inkscape:zoom="5.11875"
|
||||||
|
inkscape:cx="27.773218"
|
||||||
|
inkscape:cy="38.742614"
|
||||||
|
inkscape:window-x="-8"
|
||||||
|
inkscape:window-y="-8"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="g4163"><inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
id="grid4140" /></sodipodi:namedview><g
|
||||||
|
id="g4163"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
inkscape:label="ink_ext_XXXXXX"
|
||||||
|
transform="matrix(1.25,0,0,-1.25,0,80)"><path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4167"
|
||||||
|
style="fill:#039bd5;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||||
|
d="M 64,32 C 64,14.327 49.673,0 32,0 14.327,0 0,14.327 0,32 0,49.673 14.327,64 32,64 49.673,64 64,49.673 64,32" /><path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
style="fill:#ffffff"
|
||||||
|
d="m 48.338741,15.4906 c 0,-0.7338 -0.5949,-1.3287 -1.3287,-1.3287 l -29.93997,0 c -0.73379,0 -1.3287,0.5949 -1.3287,1.3287 l 0,2.83455 c 0,0.7338 0.59491,1.3287 1.3287,1.3287 l 29.93997,0 c 0.7338,0 1.3287,-0.5949 1.3287,-1.3287 l 0,-2.83455 z m 5.45935,22.90053 -5.75769,-14.70425 c -0.1993,-0.50915 -0.69021,-0.84434 -1.2371,-0.84434 l -29.23134,0 c -0.54193,0 -1.02947,0.32881 -1.23214,0.83141 l -5.93485,14.70425 c -0.23615,0.58498 -0.0283,1.25535 0.49746,1.60436 0.52546,0.34847 1.22382,0.28009 1.67151,-0.16476 l 7.2072,-7.16363 2.29068,6.73738 c 0.13287,0.39082 0.43971,0.69766 0.83052,0.83053 0.39135,0.13251 0.82131,0.0765 1.16447,-0.15254 l 4.46159,-2.97451 1.86655,6.50477 c -1.56361,0.66524 -2.66271,2.2168 -2.66271,4.02046 0,2.40796 1.95903,4.36681 4.36681,4.36681 2.40778,0 4.36699,-1.95903 4.36699,-4.36681 0,-1.80366 -1.09928,-3.35522 -2.66289,-4.02046 l 1.85238,-6.45516 4.38718,2.9249 c 0.34316,0.22889 0.77295,0.28523 1.16447,0.15254 0.39064,-0.13287 0.69766,-0.43954 0.83052,-0.83053 l 2.31318,-6.80328 7.27346,7.22935 c 0.44591,0.4429 1.14073,0.51306 1.66566,0.16848 0.52528,-0.3444 0.73716,-1.00999 0.50809,-1.59497 z m -17.37316,-3.92709 2.17765,-7.58881 3.65055,3.6284 -2.17463,6.39617 -3.65357,-2.43576 z m -14.54622,-3.89468 3.71681,-3.69431 2.16347,7.53938 -3.72796,2.48537 -2.15232,-6.33044 z"
|
||||||
|
id="path3" /></g></svg>
|
After Width: | Height: | Size: 3.3 KiB |
135
plugins/RetroChess/gui/images/king_black.svg
Normal file
@ -0,0 +1,135 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
version="1.1"
|
||||||
|
width="64"
|
||||||
|
height="64"
|
||||||
|
id="svg2">
|
||||||
|
<metadata
|
||||||
|
id="metadata8">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title></dc:title>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<defs
|
||||||
|
id="defs6" />
|
||||||
|
<image
|
||||||
|
xlink:href="data:image/png;base64,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
|
||||||
|
"
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
width="64"
|
||||||
|
height="64"
|
||||||
|
id="image10" />
|
||||||
|
</svg>
|
After Width: | Height: | Size: 8.3 KiB |
143
plugins/RetroChess/gui/images/king_white.svg
Normal file
@ -0,0 +1,143 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
version="1.1"
|
||||||
|
width="64"
|
||||||
|
height="64"
|
||||||
|
id="svg2">
|
||||||
|
<metadata
|
||||||
|
id="metadata8">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title></dc:title>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<defs
|
||||||
|
id="defs6" />
|
||||||
|
<image
|
||||||
|
xlink:href="data:image/png;base64,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
|
||||||
|
+h/8D/5x+E+jXTheSW2AZwAAAABJRU5ErkJggg==
|
||||||
|
"
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
width="64"
|
||||||
|
height="64"
|
||||||
|
id="image10" />
|
||||||
|
</svg>
|
After Width: | Height: | Size: 8.9 KiB |
101
plugins/RetroChess/gui/images/knight_black.svg
Normal file
@ -0,0 +1,101 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
version="1.1"
|
||||||
|
width="64"
|
||||||
|
height="64"
|
||||||
|
id="svg2">
|
||||||
|
<metadata
|
||||||
|
id="metadata8">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title></dc:title>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<defs
|
||||||
|
id="defs6" />
|
||||||
|
<image
|
||||||
|
xlink:href="data:image/png;base64,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
|
||||||
|
"
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
width="64"
|
||||||
|
height="64"
|
||||||
|
id="image10" />
|
||||||
|
</svg>
|
After Width: | Height: | Size: 5.8 KiB |
123
plugins/RetroChess/gui/images/knight_white.svg
Normal file
@ -0,0 +1,123 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
version="1.1"
|
||||||
|
width="64"
|
||||||
|
height="64"
|
||||||
|
id="svg2">
|
||||||
|
<metadata
|
||||||
|
id="metadata8">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title></dc:title>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<defs
|
||||||
|
id="defs6" />
|
||||||
|
<image
|
||||||
|
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABHNCSVQICAgIfAhkiAAAEuNJREFU
|
||||||
|
eJztW21Qk1favp7nyZchhBA+QwgBjIoV5SMBRLQFlVa0TrWuo9aP0XnVdnfY/th3f6w/djuzO9OZ
|
||||||
|
zrtvu92OO+04u9t1K1VArRWkBUUREAUEBUGQQAgSSJEPEyAhX895f6zJCyRIULrv+6PXzDMJec7H
|
||||||
|
fV/nPve573MOwE/4CT/hJ7wECCEUAGoBVRZa/kfFcwV5ppwEgJ2iqMnZ77u7uyMqKyv30DTNXb16
|
||||||
|
dR1N0w0ajcYxR1uClpaWrFOnTmVMTEyQI0eOVL366qu3KYpiF0eVFwPneS8piiKEEAsAp6/3f/nL
|
||||||
|
X8jt27ffsNvtWUlJSW0ZGRlfVVdXl65fv36AoihPHUIIt6mpKbuoqOhXV69ezQDgWrp0aTTDMK0A
|
||||||
|
xhdVowXiuQQAAEVRtrnelZWVWYxGY7/ZbF7S1dWV2dXVlZCTk7OLpukyi8VSXFJS0r97926OXq/X
|
||||||
|
lJaW5peUlLyq0+l4AFBdXZ0ZEBAQA6BtEfVZMJiXqRwUFERZLBa13W5fJxaLOUajcUlHR4eyt7c3
|
||||||
|
0Wg0hqalpQU/ffo0vaio6GBRUVHO4OCgcPXq1ZTD4aDMZrMoNDS0Jy8vr7GqqooslkILxUsRkJeX
|
||||||
|
F9Df3/82RVHJe/fuZZKSktDf3083NTWJtVrtqtHR0Y09PT2bS0pKEnt6eoTbtm3Dz3/+c9hsNjQ1
|
||||||
|
NfHFYjHvrbfeqikoKBhbLIUWinmnwPMQERHBCwgIWDo1NcVZuXIl8vLysH79enz99deoqqoSnjlz
|
||||||
|
Rsjj8WC325Gbm4t3330Xa9asgdlsRlVVFXp6etT37t3beu/evb8nJydPAgAhhBkYGODL5XLLQuV5
|
||||||
|
5rQZAC6KovyyqpciQC6X80NDQ0OePHlCm0wm8Hg8REdHQ6FQgM/n44cffoBIJMKmTZuQn58PtVoN
|
||||||
|
LpeL9PR0pKen49q1a+KWlpZ9AAz79+9vABDwySefpMtkMnlxcfEtoVB4Z+vWrXP6oNl45rTpZ3/6
|
||||||
|
dNyz4UUAIYTylz2lUsmRyWTctrY23LlzByaTCY2NjWhra4PL5UJKSgqysrKwa9cuaDQacLlcAEBU
|
||||||
|
VBRef/111NfXM1VVVekNDQ0fjY+PP+ZyuQEtLS3LgoKCghiG6eFyuXfz8/MHFApFlUKhuLNv376h
|
||||||
|
+WSjKMruj+ye8j4ICABAKIqa1wTv3r2rOXny5NeFhYUqAOByuRAIBEhISEB2djbWr1+PhIQEhISE
|
||||||
|
gGEYUNS/umNZFlqtFn/+85/R1tYGqVQKkUgEDocDp9OJsbExjIyMwGQygRDiEovFP8TExNxMSkr6
|
||||||
|
OjExsXbnzp1jixU/+JoCVn8qEkL4FRUVr42OjoYTQiCVSpGamopNmzZh3bp1WLp0KUQiEWia9ij+
|
||||||
|
rB4AIC4uDr/+9a9htVohEokgEAhAURRYloXFYoHZbIZer0dzczNTV1cX1dLS8nZ3d3eWVqttsFgs
|
||||||
|
VwwGwyW5XD78sgS8UEhKCOGUl5dvvHDhwofffPNNSnBwMP2LX/wCubm5kMvl4PP5oCgKFEV5CJg+
|
||||||
|
+izLesigaXp2257vLpcLVqsV/f39uHXrFi5duoTu7m5WpVINbNiw4aRarT6Vm5s78qLKAy/oBGtr
|
||||||
|
a5cWFRUdqKioSARA79+/H3v27EFISMi8dd2kAP9Sdrp1uN+7QdM0uFwuEhISEBcXB41Gg+LiYvrb
|
||||||
|
b7+NGhgYOGw0GidNJlNBUFDQS5HgNwwGg7C6ulp95MiR/1IqlUaZTMb+8pe/JB0dHcRutxOXy0Vc
|
||||||
|
LhdhWXbGMx2z3833uFwu4nQ6id1uJ1arlfT19ZHPP/+cZGZmOtPS0np///vff9TY2Bjzojr5HQgR
|
||||||
|
Qjgmk2lzWVnZby9duvTGxMRE2J49e6jjx48jLi7Oa64DmGH6s3+b73nWp1cdkUiEpUuXQiqV0s3N
|
||||||
|
zUF9fX2JDMPYP/vss7snT55c0AoAAPT8Rf6Frq4upq6uLqWysjJ7eHg4dMeOHdTRo0ehUqlA0zRs
|
||||||
|
NhtGR0dhsVg8c/xlMV1xmqbBMAwYhoFYLEZeXh4OHz5Mmc3moMrKyv03btzIu379+oKntN8EmM1m
|
||||||
|
QXt7u6K9vZ1WKBTU7t27PcoPDQ3hzJkz+PDDD1FTUwOHw2dG7AVCyJyPL6tw+w6KoiAWi7F9+3bs
|
||||||
|
3buX6u/vj6utrT1ms9lW/WgEjI+Pc1mWlTkcDkRGRkKpVIJhGFitVnz77bf4+OOPcfPmTTidTjCM
|
||||||
|
/ykGy7JzkuAL06eUVCrF22+/jZSUFKa1tTWrsbHx0IMHD6R+d44FEMDj8Wh3eT6fDy6XC5Zl0dzc
|
||||||
|
jLNnz8Jms3kiPn8ImK4oy7JwuVweMp4HiqI8U4GmaURHR2Pnzp0ghAju3LnzZmtra4q/OgELIIDP
|
||||||
|
57NWq9VECAGHw/GY/oULFzA6OooDBw5g7969fi2FbriVHR4eRkNDAwwGw7wEAN5LZUZGBtavX09p
|
||||||
|
tdqYhoaGbJ1OJ/BXBr8JGBoasj99+nTC5XIRgUAAQgg6OzvhdDqRn5+Po0ePQi6XewU28ynicrlQ
|
||||||
|
U1OD3/3udygsLMTkpNfO23PrUxSF0NBQbN26FQKBgNfR0bH99u3bac8yw3nht9dkWTZ0aGgowul0
|
||||||
|
UuHh4eDz+ZDL5XjvvfcQFxcHoVA4Y2RmL3++hH/WLgwGA5qbmxEaGgqLxYLAwEB/xfIsv6mpqUhL
|
||||||
|
S6Nra2sT79+/n61UKhvhR1jv13ARQri9vb1ZOp1uVWBgIJKSkiCRSKBSqbBy5UosWbJkhmJu5eYj
|
||||||
|
wQ2XywUAcDqdfk0BX32FhIRg48aNoCiKfvDgQYper4/wpw2/CKiuro5rb28/PDg4qFy1ahXlzuvd
|
||||||
|
jmh2vO8WzhdmOz+Hw4EnT57A5XJBKpWCx+P5I5JXXwzDIDk5GbGxsdDpdMl6vT7dn2kwLwGEEPri
|
||||||
|
xYur6+rq1BwOh7t582YolUrPSC1E+WltepIio9GIhw8fgsPhICEhAUKhcD6RvODuLzIyEhqNhpqa
|
||||||
|
mlIYjcZtfX19kvnqzkvAiRMnguvq6l7V6/XCrKwsvP766wgICPAy9dlh7GzMXuNZlsXExASuXr2K
|
||||||
|
+/fvIzY2FhqNxm8LmN6vu32BQACNRoOAgABOb29v8q1btyJfioDCwkKmo6MjT6/X50VGRnJ27doF
|
||||||
|
lUo1I81dCNyjTgiByWTClStX8I9//ANTU1PYsmULXnnllQW1Nx3uaRAfH4/o6GjodLrgmpqaJfPV
|
||||||
|
e+4q0NDQkKLT6d632WzxW7ZsobKyssDhcDwdzoXnOTKn04ne3l5cvnwZZ8+eRXd3N7Zs2YKdO3ci
|
||||||
|
KChowaS64a4nk8mQnJyMhw8fBt6/f39BUeEMfPDBB4LMzMzfSKXSyU2bNpGamhpit9uJ0+n0SnGf
|
||||||
|
l+6601mn00lGRkZIaWkpOXToEImKiiJcLpekpaWRsrIyMjU15SnnTqn9hbsfl8tFHA4HKSgoIMuW
|
||||||
|
LbMmJia+e/z4ce7z9JzLAqj29vYMvV7/tkQiEezevRtr1qzxjP5cmB3DE0LgdDoxOTmJzs5OfPfd
|
||||||
|
d6SkpITodDrW5XJRNE3TMpmMUqlUng3ThS6hs8syDIPY2FiEhoYyg4ODq8fGxoQATHPV9anRP//5
|
||||||
|
z8hPP/30iMlkSnnjjTfo3NxcCIVCnzs4bkV9fZ+amoJWq0VFRQWuXLlCWlpaRiwWS71KpRoOCQlR
|
||||||
|
3Lt3L40QIpquyMtMAfcAREVFQaFQMN3d3SkAIhdEwPXr1znFxcU5RqPxtejoaGb79u2Qy+UexXzt
|
||||||
|
47l/dz92ux19fX24efMmSktLUV9fD5vN9gPDMJ+JRKK/SaXSp1wuV+10Ov+boqiMF1V6LkgkEiQk
|
||||||
|
JFBVVVXLx8bG1ISQrrl2kb0I4PP5sUNDQ+9MTk7Kc3NzqZUrV3oOOAIDAz1Muz+nE8CyLMxmM2pq
|
||||||
|
anDu3DnU1NRgYmKCqFQqh0ql+i4iIuLsn/70J2NVVRXi4+Mfu1yucR6Pt6D0+Xlwy8Tj8RAfH09x
|
||||||
|
udwgu92e89VXX5UAMPtFwLVr12K0Wu0aHo/HSUtLQ2NjI8rLy6FWq7Fv3z5IpTMd63TLePz4Mc6f
|
||||||
|
P48zZ85Ap9MRhUIx+dprr3WuW7fuWnp6+t81Gk2PW1aRSKSiaTpGIpGAz+cvCgFuWRiGQXR0NMRi
|
||||||
|
Mddms2U0NTWF+03AjRs36MePHzMREREIDAzEhQsXUFZWhsnJSWzdutVDgHvE3WZvMBjw17/+FQUF
|
||||||
|
BcRqtTo3bdrUn5mZ+bVarS5NTU1tDw4Ofuru4/jx45xbt25lcLncKJlMhiVLlszpX14EDMNALpdD
|
||||||
|
oVBAq9VKe3t7A+Yq60VAa2srzGYz4uPjYbfbYTAYsGLFCmzevBmhoaFeDRBCYDabUVRUhNOnT4Nl
|
||||||
|
2XG1Wn1ux44d5zdv3lzt65AzLCws2mazvSqRSITLly8Hn89fUBI0HyiKgkQiQXx8PO7fvx8AIJ4Q
|
||||||
|
0uLrWM3Lmy1fvhxisRjj4+N48uQJMjMzceLECfzsZz+DSCQCIQQ2mw1TU1Oe0W9ubkZxcTFcLhfJ
|
||||||
|
ycmpP3jw4CeHDh0q96X8o0eP+AMDA1lms3l1TEwM/corr8w4NlsMEEIgFAoRFxcHiqKEdrs95+OP
|
||||||
|
P/a5SeJlATt27CDnz59nu7q6MDIygoMHD8I9ShRFYWRkBDdu3AAhBLm5uXA4HPjmm2/w8OFDaDSa
|
||||||
|
3szMzC/37t3bMdch5r1791bq9fp9NpstLDU1FTExMS8UVs8HPp+P6OhoCAQC3tTUlFqlUkUC0M0u
|
||||||
|
52UB2dnZhuTk5AcMwzhv3LiBrq4uTE5OgmVZjI+Po6SkBB999BEKCwsxODiI6upqXL16FeHh4U61
|
||||||
|
Wl26atWq0rmUv379Oqe6ujqrp6dnbWRkJHfDhg0Qi8VeK8qLYnZAFB4eDpFIBIfDEcuy7HJfdbws
|
||||||
|
QK1Wa+/evfs3rVYbW19fv+KPf/wj1draCo1Gg6dPn+LLL79Ef38/tm3bBrPZjHPnzmFoaAhbtmzp
|
||||||
|
37Bhw8WcnJynvjr64IMPaJ1Ol9Pc3LxrbGxMvHv3bs++wmLN/9mONCwsDFKpFKOjo4FarTbYLwIo
|
||||||
|
inLq9fqrPB4vJTg4+P3a2tqAL774AkVFRXA6nRgeHkZ2djays7NRW1uLmpoaKBQKy5o1awo1Gs3t
|
||||||
|
OWSj4uLiNpeXl/+2o6Mjc8WKFcxbb72FsLAwd58zPl8W7naCg4MRGRkJnU7H0ev1oYQQLkVRMw4t
|
||||||
|
fIbCSqVybHBwsCA6OjoyKSkp986dO2GdnZ2coaEhmsPhUGFhYaitrUVxcTFYliWpqak16enpp305
|
||||||
|
PUII9f333684d+5cfm1tbWZgYCCzb98+rF271iv+X2yIRCJERETAbrfztFotFz5ujcyZ3chksgeE
|
||||||
|
kN8sW7bsTGpq6iqtVruurKwsu7q6OrysrIxiWRYcDgfZ2dmdGzZs+Hzjxo3tvtq5cOHCqoKCgoP1
|
||||||
|
9fVrnU4nc/jwYezcuRMSiWTRFZ/uSyiKApfLhUQigcvlYh4/fsz68k3zXZQcIoRUKpXK6q6urlKa
|
||||||
|
pg8GBgb+R3d3d4hEIqHWrl37JDU19dPIyMjvZjdOCKErKyvXXrx48URTU1M2y7IBBw8exOHDhyGT
|
||||||
|
yebdQVoMEjgcDsLCwkBRFEZHR32W9+eiJAFgB9A9OTl5Kj09/bHBYAgTCoUOpVLZMTAw8P26deu8
|
||||||
|
TKuiomLF5cuX/7OiouINk8nEPXDgAI4cOYLY2FjPuv9jmb6bBJqmERYW5u5PvCiNE0K4hBDeo0eP
|
||||||
|
+OR/b2TNwPnz58Pz8/O/WLFihVUmk5H333+ftLW1EavVShwOh897A4sNlmWJw+EgZWVlJDY2liQm
|
||||||
|
Jl5+7733wmfLuuDj5Nle1BdOnz6d8fDhwzeNRqPgnXfewbFjxzwnyYvt8Z8jJ2iahlQqRVBQECYn
|
||||||
|
J5d2dnYGAhiaXs5rBAkh1Fwj6w/+8Ic/ZPf29r4/PDwcvn37dhw7dgzLli2bcX7w74DbD4hEIojF
|
||||||
|
YlitVr7Z7J0Q+lI0CICE+Hm2Nh2nTp2KaGtr+5XBYNi4evVqztGjR+GO9aefH/w7SHD3w+fzIRKJ
|
||||||
|
4HQ6YTJ5bwz5mgLmZw0sODyrrq4WdXR0rGIYhn7zzTeRmprqWeunC/ZjY3pkyefzIZFIYLfb/SNg
|
||||||
|
rq0jf/Do0SNhX18fR6VSYe3atTMOTF9m5H2Fys87gJkODoeDgIAA2O12zxnkjPcvJNEcsFqtMRaL
|
||||||
|
hR8TEwO5XO4R9N8976fnBDRNg8/nw+Vywen0vj68qATw+fwkLpcbJJVKPZ2yLPvSBCzUAtwEuOMB
|
||||||
|
hmHAsizsdu9LZItKAE3TUQzDCAYHB1FeXu456Jyd7i6EkBfNFBmGgUAggMVigVarnfPm2qISIJPJ
|
||||||
|
6O7ubvb69etoaGiYofhiEzBfG27Td1/l4XA4LMMwsNlm3r5fVAISEhJu9fT0CDs6OjA6Our3xacX
|
||||||
|
wWwCfJ1VuMswDIOgoKBBuVxubW5unllmseVa5PYWG/9n/5v0E37C/1P8D4chwqinmAVxAAAAAElF
|
||||||
|
TkSuQmCC
|
||||||
|
"
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
width="64"
|
||||||
|
height="64"
|
||||||
|
id="image10" />
|
||||||
|
</svg>
|
After Width: | Height: | Size: 7.4 KiB |
1999
plugins/RetroChess/gui/images/muted_self.svg
Normal file
After Width: | Height: | Size: 67 KiB |
76
plugins/RetroChess/gui/images/pawn_black.svg
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
version="1.1"
|
||||||
|
width="64"
|
||||||
|
height="64"
|
||||||
|
id="svg2">
|
||||||
|
<metadata
|
||||||
|
id="metadata8">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title></dc:title>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<defs
|
||||||
|
id="defs6" />
|
||||||
|
<image
|
||||||
|
xlink:href="data:image/png;base64,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
|
||||||
|
taHXy6cAAAAASUVORK5CYII=
|
||||||
|
"
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
width="64"
|
||||||
|
height="64"
|
||||||
|
id="image10" />
|
||||||
|
</svg>
|
After Width: | Height: | Size: 3.8 KiB |
92
plugins/RetroChess/gui/images/pawn_white.svg
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
version="1.1"
|
||||||
|
width="64"
|
||||||
|
height="64"
|
||||||
|
id="svg2">
|
||||||
|
<metadata
|
||||||
|
id="metadata8">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title></dc:title>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<defs
|
||||||
|
id="defs6" />
|
||||||
|
<image
|
||||||
|
xlink:href="data:image/png;base64,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
|
||||||
|
TDHF/zj/ARMroxZdZMvlAAAAAElFTkSuQmCC
|
||||||
|
"
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
width="64"
|
||||||
|
height="64"
|
||||||
|
id="image10" />
|
||||||
|
</svg>
|
After Width: | Height: | Size: 5.1 KiB |
BIN
plugins/RetroChess/gui/images/profile.png
Normal file
After Width: | Height: | Size: 3.7 KiB |
141
plugins/RetroChess/gui/images/queen_black.svg
Normal file
@ -0,0 +1,141 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
version="1.1"
|
||||||
|
width="64"
|
||||||
|
height="64"
|
||||||
|
id="svg2">
|
||||||
|
<metadata
|
||||||
|
id="metadata8">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title></dc:title>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<defs
|
||||||
|
id="defs6" />
|
||||||
|
<image
|
||||||
|
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABHNCSVQICAgIfAhkiAAAFvpJREFU
|
||||||
|
eJzte2lwW9eV5nffw74QwANJcTc3iRQpUqQoWZK1UY6TjpS2bMWWkq7qVDmJKkl11WSq/3TP/BnV
|
||||||
|
VFd1d9VUKj2VpGpqMpPxtDsdy7KTeIvdWkJRsiiT4k6I4AqAILEQwAPwiPUBeO/2DwEMRJE2JTmZ
|
||||||
|
H6NThSKLOPfec757zrnnnHsJPKWn9JSe0lN6Sn9yopSSr371q2oA6osXL6oopcz/Czm+kEUppYRS
|
||||||
|
SrbL39fXp/nRj370fCKR+PuGhoZ/crlc/9Df3/8ypZTd7hwXL15kAGx7zT865UFQ9PX1KSilCuSF
|
||||||
|
o5QqKaXrO+x2u7Xvv//+N7/yla/cLCkpSTIMk6mrqxN/+MMf9g8ODu76rDX6+voUv/vd79T5Nb4Q
|
||||||
|
5RVfwBzE4/Fo+/v7Wz788MNWlmWtKysr0YWFhcHm5uZ5ABLug0ELA+7cuXNgenr6aCwWI5RSrKys
|
||||||
|
YGJi4sixY8e+RildIITIG9fo6+trGhgY2C8IQnlJSYnPaDQOAnA/qfBPDAClVP/73//+xV/+8pf/
|
||||||
|
sa+vb3cikVC0trbGUqnUzVAodJEQYi/mz2azKlEUtaIoFs+BVCrFEkIsLpdLBSBd+O7ixYvMqVOn
|
||||||
|
Wi9duvR3V65cOREMBvXV1dWiKIr9k5OT/9jZ2XnnSeR/YgBcLlfu+vXrbdeuXdu7vLysoZQiGo3q
|
||||||
|
6uvrT3V1db1PKZ0nhOQK/EqlMtPU1OSur69P8Dyvp5QStVpN29vbxaqqKnd9fb1YPP9rr72m+vjj
|
||||||
|
j/ffuHGjd3p6mgOAcDis4TjuzP79+ycppUOEEOlx5X9kAIr9mxCS1el0imAwuEMQBBWl9608l8vB
|
||||||
|
7/cza2trqpGRkQd8ta6uLjUxMfEbj8dzAMCfz8zMqI4fPx47efLkx83Nzf2EkHVXuXjxIuPz+Ugo
|
||||||
|
FNLzPK/Lrw9ZlrGysiL7/X4GRa61iaykeL5HAqCvr0/R3d1dsry8bBFF0VRRUSFrNJoQgDUASdz3
|
||||||
|
bZSXl8smkymq1+vFtbU1DaWUKJVKqlAoFtRq9WxPT89DuxMOhxe/9a1v/S+NRrNTp9N1nD179q3n
|
||||||
|
n3/+vwUCgaUi4dmRkRHGarVSQohXq9VGCCGVlFIQQqherw8BmCrEi3yQJYQQyefzlfM8X2qz2Wrd
|
||||||
|
bnfYYDDMcRwnPBIAHR0duz755JO/unLlSpvX6y3buXOneOLEibePHTv2z3q9fq3ARwhJ/vznP7/U
|
||||||
|
3NzcIEnSaZ7ntXv27FnbtWvXJYvFMk4IkSmlSgC04Aq9vb1KnuenUqmUJ5VKdQiCsFBTUzNXZF2U
|
||||||
|
ECJRSuV79+6RgwcPfjI2NvZOOp3+vt/vV9bU1Kzt27evv7Ozc6Qgx+XLl0ljYyOzuLhY/cEHH/z1
|
||||||
|
p59+elSSpKrW1tbV3t7eNyilPyWEZLcNwLVr15reeeedV69fv14aj8dZs9ksR6NR4zPPPOOmlL5N
|
||||||
|
CMkUeC9cuDBOCPn7gYGB1Tt37rx24sSJ2RdffPGtPXv2xPMsuYIpUkpVAPQ8z1uDweAOv98Pu92u
|
||||||
|
zJtrboMYTHt7u6m9vX0tEAh8kEwmv15ZWak/evToP546depyOp1et5jz589LTqdTeffu3W/++te/
|
||||||
|
vnDr1i19JpMhVVVVFQ6Hw3v79u3/AeAhALZMhH7yk58or1+/roxEImwmk0EoFGIGBwfLb968yRaU
|
||||||
|
zysDQoh04cKFMYPB8H9EUQwFg0HF3NxcoshKaNHvmcuXL0fu3LmT83q9Jp7nEQ6HK71er3ajDIQQ
|
||||||
|
ied5cXl5mWFZVhuLxRRWqzXy3HPP/f5LX/rSYjAYXJ+XUkp4nlcPDg7WDQ8PGxKJBMlkMlhZWSEf
|
||||||
|
ffSR5sc//vGmem4JQDQaRTabBSGksABkWdYrFIpKp9OpyZu1qniMy+VKJZNJMjk5afF6vZVbzX3+
|
||||||
|
/HmJ53ljMBg0ZDIZqFSqDo/HY92Mt7S0dC0QCOSmpqZ2LC4uqmRZ1mu1WgullDl37tx65hiJRErK
|
||||||
|
ysr00Wg0Kct/SCPyRyxWVlYeDYDvfve70qFDh2SNRkMZhoFOp0NPTw86OztRX1+fy/uTWJzD63Q6
|
||||||
|
XSKRkEKhUEUoFDq21dyUUiLLslUQBJUkSUin001+v79mC3ZSUlKyY2Fh4VlBELSRSCQnCIKUD36F
|
||||||
|
AEgsFkuqrq7O39DQMLNr164ky7JgGAYWiwUnT56Uzp07t+nkW8aAs2fPzlkslqsWi+W56enpckII
|
||||||
|
uru7/2dra+vv/H6/mlIqY8MRpFKpdIQQTTQa1c7MzLQPDw8r9+/f/5DfAUAgEDBHIhHIsozV1VVt
|
||||||
|
LBYr3ezYopTit7/9bUsoFPqqKIrqZDIpra6uxvPAKymlch6MDAAMDAz8WyAQ+DQQCDxfUVGRam1t
|
||||||
|
HT979uwHer0+e/ny5e0DUF9fP/vSSy/95+rq6ua+vr7z169f/5rL5eo3Go02m82mqqioQH4H1gWW
|
||||||
|
JInJ5XKSKIqIxWLPBYPBE5TS6xuVev3119WJRKIznU5r8mCw8Xh8BzakzABw48YNdmpqqmF+fl4t
|
||||||
|
SRJyuRxJpVLI82U3pM3EarUCAGlvb8984xvf+Je6urqfHT16dGaTAAvgM1yAECJzHLdUVVV1a9eu
|
||||||
|
XTZCiCUQCHx7ampq7549ezKEEDn/KUR3trq6+qTBYKiQJAnBYHC32+3+9vz8vHHj3DU1NerV1dW6
|
||||||
|
TCajAIC1tTVVKBSqunz58mYFTo3H43mV53lTHmQWAJOPTQ/UDIIgcH6//9zMzEyrVquNt7a2fnz0
|
||||||
|
6FEbIUTcZN7PBqBA7e3t1Gq1SgqFgnU4HKfHx8fPUErVG/lGRkaYdDpdI8uyAgBCoRBjt9s7PB4P
|
||||||
|
t5FXFEVmaWlJzmazFACSySScTqexrKzsIQB4nq+bnZ1tEUVRQQhBLBbLBIPBbL4aZID7MSC/pv72
|
||||||
|
7dsvzM3NVWg0GkGpVLo/L03eTj9A5jhOsFqt8vT0NHvr1q3Dc3NzjZsxBoNBZDL304NUKgWHw7Er
|
||||||
|
m81+eSOfIAiWtbU1Y0FwWZaVuVxuT1VVVV1xmUspVc7OznYsLy/vyOVyyGeBJo7jmvKWJxfxE5vN
|
||||||
|
1nLjxo1nIpEIUSqVjsrKSu/nKbethgjHcSmz2ZyMx+NYXFw8vri4+BeUUs1Gvng8Dkm6D7gkSZiZ
|
||||||
|
mVHPzs52ut3u9TOeUqqSJOm0RqM5UmiASJLExmKxtng83lAcL+bn55mhoaHqfM6PPFiMUqm04n62
|
||||||
|
KBNCKCGEOp1O9eTk5InFxcUmhmFgNBoFpVKZxufQdgCgJSUlPp1Ot8qyLOx2u350dPR4JBLZUaSU
|
||||||
|
sqenR0omk3KhIKKUwufzYXh4uEKSpGKXYdxud7UgCFxh9yRJQjQarfB6vQ8chQ6HY28kEvlyOp1e
|
||||||
|
Hy9JEkkkEg+5yuuvvy6/9957Oq/Xy2i1WpSXl4smk2nTE+iRACCEyHq93qfVasMKhQKhUAjDw8N7
|
||||||
|
7Xb7y/lOjwXAMwAU6XRaUZyEJBIJLCwstL7xxhtlhb9NTEywLpdLF41G1/kkScLq6qrS4/HU2mw2
|
||||||
|
FQAMDw/rlpeXX/R6vS0FqwLuV5rRaJTJd6BYALDZbCpRFF9aXV39miiKSq1WC6vVmgCwZfDbNgAA
|
||||||
|
oNFowHEcVSgUyGazmJiYMI2Ojn7d4/Hs8Hq9IgBNIBD4Zm1t7eFiYWVZxvLyclUoFNqJfAkdiUS0
|
||||||
|
iUSiKp1+0Dqj0SgJh8PlO3bsUANALBZT2e320kAg8ICrSZLERiKRkmL54/F4s8vluhAKhZrzLiKV
|
||||||
|
lZWlATwUrB8XgGRJSYmg0WiQb2GR27dvty4sLHRVV1cnA4GAKx6PlymVysZiCwCAcDhcEgqFzly9
|
||||||
|
erUEAObm5pQ8z5dmsw9aZzweh8/nM4ZCIQCAy+Uy9/X1lSaTyQdklGVZU1JS0gWgLh6Pc5FIxGy3
|
||||||
|
2782Ozt7KJVKFXiDmUzmFoAEPoe2BcC9e/eiJpPJZzTeP9Kz2SzGxsasExMTpymluv7+/lQymYxm
|
||||||
|
s1laiAEFSqfTikAgcCqbzR4EAEmSqiKRSPVGvlQqhXQ63REKhcrC4bApEom8EIlEevPn/jpRSkk8
|
||||||
|
HgcAwWAwxARBaLTb7X/hdDpL8nPSiooK2Ww2RzfpLT4eAO3t7RLHcWG9Xr++bW63mx0dHX327t27
|
||||||
|
FWVlZSSTydBMJvNQcMrlcnC73TWjo6PdlFI2kUiU8zxv3ghAJpOBx+MxeTweoyiK+0Kh0IVwOGzZ
|
||||||
|
yAcAgiCIXq83AyDV19dXefv27VpBuN/vyJ8AfDabDWxHt+3eC1CtVmvX6/WF+h7pdBoDAwPcu+++
|
||||||
|
u6u3t1cOBALxdDq9afvJ6/UyDodjn8vl2un1enU8zz8EFKUUDocjeuXKlejs7GypzWbbGY/HH7on
|
||||||
|
kGUZCoXCQAjRj4+PVw0ODn55ZmbGWACKZVlwHBdZW1vzfWEAEELkSCRiV6vV6wDkj7maubm5165e
|
||||||
|
vVqh0WiskiQ95ALA/dNgaWlpz8rKSkM4HOZEUdy0px+JRJRtbW3NTqdz98LCgnZjPCmsG4vF0qlU
|
||||||
|
KuN2u484nc5vCIKwHuwUCgVKS0tpTU3N55r/tgEAAJVKFbdarVmW/cOmJJNJxdjYWNubb75plCQp
|
||||||
|
Eo/H+c3GUkrhdDqrBgYGSj0eTyMAw2Z8CoWi1Wg0ftdutx/2+XyqzXgopchms4QQYr5169besbGx
|
||||||
|
klzuD3WORqOB2WwWDIZNl3iItg1AfX29saqqirAsu77FsiyD5/kOj8dzLhQKeQVBiGw13uv1SgMD
|
||||||
|
A6zb7d6YGK1TLBYjDofDOjo6Wr6Z+RfWTKfTZGpqqmZycvLFcDisK/5eq9XSRCIxarFYYtvRa9tt
|
||||||
|
cZPJlCkpKeEVCkV9Id8HAEEQsLKy8tLU1FQyk8notxqfzWZV8/Pz7bFYrLZ4x4opk8kox8bGutxu
|
||||||
|
t2YrHlmWEY1G5ffff3/nvXv3aorzDgAwGAxIJBKOjfcLW9G2AVCr1Ss6nW7eYDD0JJPJBwTieb7b
|
||||||
|
6XQaJUmq2iwGAIAkSUan0/ltAIateERRJENDQ+WpVApb8ciyDKVS2eTxeP4yHA6XFPMRQsBxHG1r
|
||||||
|
a9v2veG2AVAqlWmTySTo9Q9vcigUYoeGhloKScxWlEqlNu37FYhSCkEQtlS+wOPz+Xb5fD4qiuID
|
||||||
|
LkwIgcVikdra2rQAWACbm1ERbRsAWZZpeXm5aDabKcMwpDhC53I5OBwObBa1H5U+S/nC98Fg0JiX
|
||||||
|
6YHvWJaF2WxOWyyWOD7jxqiYth0Ey8vLk2q1erGsrIwyzMPDvgjlt0uyLG+6nkKhQHl5edpkMgW2
|
||||||
|
e1+4bQsghMjT09OT3d3djrGxsaZgMPhIjysIIWBZdv2jUCg2ttyRy+UgyzIkSYIsy59rDRtp586d
|
||||||
|
tLu7e4XjuNXtjnmky9Hdu3cPHT58+GczMzN/89FHH1Vls9lNhSSEgGEYqFQqmEwmlJaWguM4VFdX
|
||||||
|
o7KyEiaTCQaDASqVCizLIpPJIJ1OQxAErK2twev1wu/3IxwOIxgMIhaLrYOy2VoAYLVa6SuvvLLW
|
||||||
|
29v7kcFgWPijAEAISa2srPw6Ho93xuPxb92+fVspimKhVQWlUgmz2Yza2lq0traitbUVO3fuRF1d
|
||||||
|
HYxGIzQaDRQKxboJb4zgLMuCEIJMJoNkMoloNAqn04np6WnMzc1hbm4OXq8XyWQSkiStjzeZTPTM
|
||||||
|
mTOh06dP/2tFRcX/JYQkt9LhiQAAgJqammWfz/dGLBbr9vl8e2dmZhidToempiYcOHAAhw4dQkdH
|
||||||
|
B8rKyiDLMkKhENxuN5xOJ3w+HwRBQDKZhCiKKOrzQalUQqPRwGAwwGKxoLa2Fg0NDeju7kZvby8k
|
||||||
|
ScLS0hKGh4cxNDSE0dFReL1eyLKMAwcOxE+fPv1mc3PzP2k0Gtej6PNY72ycTqdGluW/+sUvfvGf
|
||||||
|
3nrrrbJTp07hzJkzaGhoQCqVwuLiIsbHx2Gz2bCwsACv1wtBENZ9HLjv94UdLJhx4XeGYaDVasFx
|
||||||
|
HGpqatDS0oK9e/eio6MDNTU1kCQJExMTuHTpEtxuN/3e975365VXXvnb0tLSTx9Vl8d+aJRKpRrH
|
||||||
|
x8f/4dKlS19/9tlnFVarFXfu3MHAwADm5uYQDAaRTqdRnKkRQtYVJIQ84AIFQDYDRqFQwGAwoLKy
|
||||||
|
Eu3t7Th+/Dg6OjowMjJCRVHkX3rppf/S1tb2v4tvrP/oAFBKSTAYPP/OO+/897feemuHx+NZ989i
|
||||||
|
JQq7aTabUVZWBo7jYDabwXEctFotGIaBJEmIxWIIh8OIRqMIhULgeR5ra2soxJhiAE0mE6qrq9HS
|
||||||
|
0pL7zne+897hw4f/muO4x3ow9dhvhAghNJlMDuzdu3fizTff/NLi4iJb8GeWZaHT6VBXV4eWlhZ0
|
||||||
|
dXWhra0N1dXVMBqNUCqVKK4qCwrmCx1EIhEsLS3BZrNhYmICs7OzWF1dhSiKhVoAyWQSBw4c4Ovr
|
||||||
|
639rsVi2Vft/oQAAgMPhWG1ubv748OHDB0ZGRiypVAocx2Hfvn04efIknnvuOVRXV4NhGITDYTid
|
||||||
|
TjidTvj9fgiCsK4QwzDQ6/WwWq2oqqpCY2Mjuru7cfz4caTTaczMzODmzZvo7++H3W5HMplERUUF
|
||||||
|
Ojo67tTW1n682cuPPwkA7e3t2WQy+UlPT4+nvr7eUllZiVdffRUHDx6EVquFy+XCr371K4yPj8Ph
|
||||||
|
cMDr9SIWiyGbzT50phcsR6VSgeM41NbWoqWlBfv370dnZye+//3v4+zZs7h+/Tp+85vfoKysbG33
|
||||||
|
7t19RqMx/CQ6PBEAhBCaSCS8O3fuDPb09ODYsWM4ePAgxsbGcPXqVdy9excejwfJZHJbmV02m0X+
|
||||||
|
ZhlLS0sYHBzEu+++i4aGBhw5cgQvvPACXn75ZaRSKSSTyURTU5PjSZ7IAV/AO0GGYTQul0tjs9ng
|
||||||
|
8Xjw9ttvY3JyEsFgELlcDizLQq1WQ6fTQa/XQ6/Xw2g0Qq1WQ6FQrAfBQjYYi8WQTCYRi8WQTqcR
|
||||||
|
DofB8zxsNhs+/PBDtLS0wO/3o6amxsTz/H5K6Q1CSPzzJf0jAEApZfx+f+vdu3er5+fnkb+3B8uy
|
||||||
|
KCsrwzPPPIOGhgY0NTWhsbERVVVVKCkpgV6vh1qtBsMwYBhmvQ4QRRFra2uIRqNYXl7GwsLCetxY
|
||||||
|
WVnB0tISXC4XACAajercbvfZrq6uG5TSm9tpgX/hAADQLi0tHRseHi6TJAlVVVVobW1FV1cX9u3b
|
||||||
|
h+bmZlgsFhBCIIoieJ5HIBBAOBxGJpNZzwILPw0GAziOQ2VlJXbv3o3Tp09DkiT4/X5MT09jdHQU
|
||||||
|
ExMTcDqdCAQCGBkZaTx+/PjBbDY7CCD1Jwdgfn5ed+/evRaVSqX6wQ9+gEOHDqG1tRUajQY8z2N6
|
||||||
|
ehozMzNYWFjA6uoqAoHAeipcSJCK44JKpYJerwfHcSgvL18HoqWlBQcOHMDzzz+PcDiMqakpfPLJ
|
||||||
|
J1hZWVHNzc2V79q167Gf/T8RAKurq1pCCC5cuED37t2LUCiEoaEhDAwMYGJiAm63e/242y7xPA+3
|
||||||
|
+35OQwiBTqdDaWkp6uvr0dPTgyNHjuDw4cM4fvw4bty4wfA8r1hcXHxsAJ7ozb3dbjd6PJ4/M5vN
|
||||||
|
/2F0dPTQ22+/rbLZbOB5HoVS+VFr+k2FzKfPGo0GlZWVOHLkCM6dO5crLy93MgzzX2Ox2KWTJ09+
|
||||||
|
bvtrM9r2f2hsRj/96U+zjY2N9kQiYRcEQS2KogYAw7KsEvdbUjR/U7LtT+HBA8uyVKFQUKVSSTUa
|
||||||
|
DeU4jjY0NNCurq50Z2fnYltb27/V19f/TKPRvNfV1fXINUCBnsgCCs/aKKUkEAjs4Hm+yul0NoyP
|
||||||
|
j5cPDg4yhaKo8HJkq1Z3MSkUivWOkUajQf6uf70I6unpiZWWlk6ZTCbHtWvX4ufPn3+iPOApPaWn
|
||||||
|
9JT+v6Z/B5f+l+cJ+szpAAAAAElFTkSuQmCC
|
||||||
|
"
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
width="64"
|
||||||
|
height="64"
|
||||||
|
id="image10" />
|
||||||
|
</svg>
|
After Width: | Height: | Size: 8.7 KiB |
139
plugins/RetroChess/gui/images/queen_white.svg
Normal file
@ -0,0 +1,139 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
version="1.1"
|
||||||
|
width="64"
|
||||||
|
height="64"
|
||||||
|
id="svg2">
|
||||||
|
<metadata
|
||||||
|
id="metadata8">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title></dc:title>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<defs
|
||||||
|
id="defs6" />
|
||||||
|
<image
|
||||||
|
xlink:href="data:image/png;base64,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
|
||||||
|
"
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
width="64"
|
||||||
|
height="64"
|
||||||
|
id="image10" />
|
||||||
|
</svg>
|
After Width: | Height: | Size: 8.6 KiB |
BIN
plugins/RetroChess/gui/images/retrochess.png
Normal file
After Width: | Height: | Size: 3.8 KiB |
73
plugins/RetroChess/gui/images/rook_black.svg
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
version="1.1"
|
||||||
|
width="64"
|
||||||
|
height="64"
|
||||||
|
id="svg2">
|
||||||
|
<metadata
|
||||||
|
id="metadata8">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title></dc:title>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<defs
|
||||||
|
id="defs6" />
|
||||||
|
<image
|
||||||
|
xlink:href="data:image/png;base64,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
|
||||||
|
"
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
width="64"
|
||||||
|
height="64"
|
||||||
|
id="image10" />
|
||||||
|
</svg>
|
After Width: | Height: | Size: 3.6 KiB |
83
plugins/RetroChess/gui/images/rook_white.svg
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
version="1.1"
|
||||||
|
width="64"
|
||||||
|
height="64"
|
||||||
|
id="svg2">
|
||||||
|
<metadata
|
||||||
|
id="metadata8">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title></dc:title>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<defs
|
||||||
|
id="defs6" />
|
||||||
|
<image
|
||||||
|
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABHNCSVQICAgIfAhkiAAACihJREFU
|
||||||
|
eJztWn1sG+UZ/53v7Nhn49R20iQiLU0TksZCFAooajRpLaqo1NKogym0XQkaGt0AiSHYHxSBMiSE
|
||||||
|
+GcTVZGqaZoQixpRNRpTCahFy5qsFTFrmiqlUT5cOyZxHAcnDokd2+e79979we5mOwn1+aNlIj/p
|
||||||
|
lIvv/Xie3/s8z/vxvMA61rGOdazjxwtGa4VXXnnlJxcuXKjxeDxIJpPq70ajESaTCY2NjWhra4vu
|
||||||
|
2rXrs/r6egEA/H6/45NPPnns/fff55R6LMuCEAKWZcGyLPR6PRwOB3bv3k137tzZe+zYMb/S9smT
|
||||||
|
Jx0ul+uxnp4e7ttvv0UikYBOp4PRaITZbIbZbEZTUxP279/f39bWdlOLPpxWAr788stfBIPBo6Io
|
||||||
|
pv2eTCZBCIHb7cbAwIA7Go26AMwAwODgYOP169ffCwaDvCRJAABCCCilkCQJsixDlmWEQiFcvXpV
|
||||||
|
XlhY+CUAlYCenp5Gn8/33tLSEk8IAcMwkGUZgiCAUopYLIaxsTHY7faXARSXALfbbVxeXrZUVlai
|
||||||
|
rKwMDMOoAn3zzTeYn5+H1+s1p9bx+XyMx+OxRKNRvqqqCg6HY0W7kiRhamoKwWBQNhqNbOq3yclJ
|
||||||
|
ZmZmxsKyLL9lyxYYDAb1myiK+PrrrzE3N4dgMKhZH80VYrEY9Ho9Wltb8dRTT8FoNIJSing8jg8+
|
||||||
|
+ACdnZ1YWlpCKBRS68TjcQiCAL1ej0OHDqG1tRV6vT6t3ampKbz77rsYHx9Pcy2lPiEE9957L15/
|
||||||
|
/XXU1taCYRhQSuH1etHe3o5wOIxMqywKAZRSMAyDiooKOJ1OmEwmUEqRSCRQXl4OAFhYWKiwWq2/
|
||||||
|
f/zxx2MA0NfXVxkIBAwAUFVVhW3btsFoNKZZj9FoBM/zEASBIYQ8vW/fvmadTgdZlhEIBCpFUTSY
|
||||||
|
zWY0NDSgoaEBOp3uOwU4DhzHqW5UdAJkWYZOpwPDMOpfhZS77roLLMtiYmKiNBgMHlMUBL6zHJPJ
|
||||||
|
hJKSErUtpT7DMGpAEwSB8Xq9ByYnJ1XCCSEQBAEGgwEGgwE6nQ46nU7tl1IKWZZBCCk+AWs2xHFo
|
||||||
|
amrCk08+iWAwqI5GqpLl5eW4//77wXEru7XZbNizZw8YhkEsFgOlVK2vRPxHHnkEpaWlafWUcgoJ
|
||||||
|
muXWWkExvdTOAYBhGDz88MOoq6uDIAjqd0V5hmHAcRwcDgc4jlNHTilnMpnQ2tqKvXv3ghCSRpxi
|
||||||
|
bUajEaWlpaqylNI0GXKBZgJY9rsAnUgkEI1G1elMMXWr1aq+K8qlvkuSBEmS0soo35S1gKJwZhtK
|
||||||
|
rAGQ5loKbosLsCyLRCKB3t5eRCKRVc1ZwVqjk6n8rZBJqNIuwzCYn5/H7OysupjSCs0EVFRUwOfz
|
||||||
|
4YsvvkB/f/8KAW8HUoMfwzAQRRGbN2+G3W7X3JZmAmpray9KkvRTv99fk0wmYbFYcN9996GsrGyF
|
||||||
|
3+aLVNNPfQRBgMfjweTkJAgh2LhxI7Zu3Xq5vr7+itY+NBPw6aef/vW5556z+Hy+d1wuVynHcair
|
||||||
|
q8ORI0dQV1cHvV6fRkQ+QSpTcVmWsbi4iIsXL6KjowMcx6G6ulp44IEHzu7atavzpZdeGtTaB3vr
|
||||||
|
IitRW1s7uHPnzkWTyeScnZ21jY6OIhaL4Z577oHdblcDZao15PIoUP6PRCL4/PPPcfr0aXi9XlRV
|
||||||
|
VY06nc6TFRUVb7z99tsjueiSl512dnY+Ozo6+sczZ85Yp6enmYaGBlRWVqZF8ELGh+XlZbjdbiwt
|
||||||
|
LZGSkpI/1dTU/MXlcmke9VTkJR2lVDc0NLTv9OnTz/b09PxsaGgIlFLVAv5bJp8uVCjutGHDBjQ2
|
||||||
|
Nn4miuLTLpcrnG+7ea0EGYaRAXRfvny5ZGlpaffIyMiGmpoaNDc3p+3YMuqo79mSQymFz+dDb28v
|
||||||
|
Kisrcfjw4ckXXnghb+WBAi2Fr169+i9CSIDjuA0PPvggXnvtNdjtdjUY5oLMdf65c+cwMDAAg8GQ
|
||||||
|
03S3Fgq2F1DAsix4nofFYsmLgFQQQtRtN5C+HM8XBScA+N8GJt/1QOqKL/X/QqIoBGQqnQsJmcoW
|
||||||
|
i4TC2dL/KQpKQDFMtNhYt4BCNna7d4WFwLoF3GkB7jTWCbjTAtxpFIWA1JOcQrdZaBSNgEIInLqU
|
||||||
|
LtYM84N1gduhPFCEvYCyfVWyNKk5g1xBCMkp65MNCkaAoujc3ByuXLmiprAKMXqyLGN0dFRNfOSS
|
||||||
|
AFkLBSFgaGiIn5qaAqUULpcLHo9n1T37Wju8bBCNRrG8vKycC+rb29t1b731Vt5mkTcB7e3tuu7u
|
||||||
|
7t/MzMw4dTodLBYL4vE4AKip73yhnC/YbDYEAgFcunSpZe/evaMA/gAgr2ibl32++OKLjq+++uq3
|
||||||
|
Ho/n1eXlZf7gwYNoaWmBxWJRyxRq+pJlGcPDw+jo6MDU1BSam5tnmpqajr/55psfFqQDrThx4kTJ
|
||||||
|
4cOHTzidTmqz2WhbWxsdGBiggiBQSZKoKIpUFEUqSZL6KL+t9u37nmQySQVBoKFQiJ46dYo2NjZS
|
||||||
|
h8NBn3jiicmzZ8/+rr29PefZLKfESEdHh7Wvr+/l4eHhV30+H7dnzx48//zz2LZtm5oszczqZKa0
|
||||||
|
tTzKrMKyLDZt2gRCCG7cuIGbN2+W6vX6ph07dsx+/PHH13LRRXMMOHfuHH/9+vV3vF7vr8fHxzmb
|
||||||
|
zYbq6mpMTExgYmICLMuueWi5mjvcKhBm5gcZhgHP87j77rtx7do1dHd3l/I8/8bAwIDxoYceOsUw
|
||||||
|
jCaf00xAX19fxcjIyIHBwUFOkiTMz8/jo48+wpkzZ1YIXSisdsYYi8UgSRIWFhbQ09NT43Q69wP4
|
||||||
|
MwBNN6U0EzA+Pg6/3w9ZlrF582b1QsPtPA5T+pMkCV6vF9PT03C73TmtOXKaBgkhMJvNeOaZZ3Dw
|
||||||
|
4EH1youCYpKRus/w+/04fvw4vF5v2k0RLciJACWYlZeXo76+PqebGbkiNZgaDAZwHIdkMhkJhULn
|
||||||
|
A4GA5iWiZgISiYR6ITESiWB2dnYFAdmaohZLSc0LKM/c3BxkWYYkSfGurq5/dHV1aV51ZSXp0aNH
|
||||||
|
a8bGxn41MzNjF0WRTyaTP4/FYvz27duxZcuWNYX9PuTiJpluFovF0N/fj8XFRcFkMnVZLJaI1WqV
|
||||||
|
N27c+OGlS5f+nVWb2RQqKyvbIYri3wVB2JR6xW01RXMZ1Vsh8zpe6ruy1GYYBpIkQa/XyyUlJYdC
|
||||||
|
odDZbNrOygVisRhEUYTVakVLSwvq6+tXzftpHdV8XSV19onH4zh//jyGh4dX3DX+PmRNAMuysFgs
|
||||||
|
OHDgAB599NE1L0HciRtjlFKEw2H4fD7cuHFD03Y56yCoRN9gMKiu+H4okGUZ4XAYkUgEADTJltVw
|
||||||
|
8Ty/gxDyN47jNlVXV4Pn+dwkLSIIIZienkY0GpXNZvORcDhcuBiwffv2mMfj+Wc4HK4YGxvLT9Ii
|
||||||
|
Q6/XU0LIfLbltTisUWP5O4kE8jwoWcc61rGOHwX+A63hjwF2FRYxAAAAAElFTkSuQmCC
|
||||||
|
"
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
width="64"
|
||||||
|
height="64"
|
||||||
|
id="image10" />
|
||||||
|
</svg>
|
After Width: | Height: | Size: 4.4 KiB |
157
plugins/RetroChess/gui/tile.cpp
Normal file
@ -0,0 +1,157 @@
|
|||||||
|
#include "tile.h"
|
||||||
|
#include "validation.h"
|
||||||
|
#include "chess.h"
|
||||||
|
#include "../interface/rsRetroChess.h"
|
||||||
|
|
||||||
|
validation *valid = new validation();
|
||||||
|
|
||||||
|
/*extern int count,turn;
|
||||||
|
extern QWidget *myWidget;
|
||||||
|
extern Tile *click1;
|
||||||
|
extern Tile *tile[8][8];
|
||||||
|
*/
|
||||||
|
void validate(Tile *temp,int c);
|
||||||
|
void disOrange();
|
||||||
|
|
||||||
|
|
||||||
|
void Tile::mousePressEvent(QMouseEvent *event)
|
||||||
|
{
|
||||||
|
validate(++((RetroChessWindow*)parentWidget())->count);
|
||||||
|
std::string peer_id = ((RetroChessWindow*)parentWidget())->mPeerId;
|
||||||
|
rsRetroChess->chess_click(peer_id, this->row,this->col,((RetroChessWindow*)parentWidget())->count);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Tile::display(char elem)
|
||||||
|
{
|
||||||
|
this->pieceName=elem;
|
||||||
|
|
||||||
|
if(this->pieceColor && this->piece)
|
||||||
|
{
|
||||||
|
switch(elem)
|
||||||
|
{
|
||||||
|
case 'P': this->setPixmap(QPixmap(":/images/pawn_white.svg"));
|
||||||
|
break;
|
||||||
|
case 'R': this->setPixmap(QPixmap(":/images/rook_white.svg"));
|
||||||
|
break;
|
||||||
|
case 'H': this->setPixmap(QPixmap(":/images/knight_white.svg"));
|
||||||
|
break;
|
||||||
|
case 'K': this->setPixmap(QPixmap(":/images/king_white.svg"));
|
||||||
|
break;
|
||||||
|
case 'Q': this->setPixmap(QPixmap(":/images/queen_white.svg"));
|
||||||
|
break;
|
||||||
|
case 'B': this->setPixmap(QPixmap(":/images/bishop_white.svg"));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
else if(this->piece)
|
||||||
|
{
|
||||||
|
switch(elem)
|
||||||
|
{
|
||||||
|
case 'P': this->setPixmap(QPixmap(":/images/pawn_black.svg"));
|
||||||
|
break;
|
||||||
|
case 'R': this->setPixmap(QPixmap(":/images/rook_black.svg"));
|
||||||
|
break;
|
||||||
|
case 'H': this->setPixmap(QPixmap(":/images/knight_black.svg"));
|
||||||
|
break;
|
||||||
|
case 'K': this->setPixmap(QPixmap(":/images/king_black.svg"));
|
||||||
|
break;
|
||||||
|
case 'Q': this->setPixmap(QPixmap(":/images/queen_black.svg"));
|
||||||
|
break;
|
||||||
|
case 'B': this->setPixmap(QPixmap(":/images/bishop_black.svg"));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
this->clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Tile::validate(int c)
|
||||||
|
{
|
||||||
|
Tile *temp = this;
|
||||||
|
int retValue,i;
|
||||||
|
|
||||||
|
if(c==1)
|
||||||
|
{
|
||||||
|
if(temp->piece && (temp->pieceColor==((RetroChessWindow*)parentWidget())->turn))
|
||||||
|
{
|
||||||
|
//texp[max++]=temp->tileNum;
|
||||||
|
retValue=((RetroChessWindow*)parentWidget())->chooser(temp);
|
||||||
|
|
||||||
|
if(retValue)
|
||||||
|
{
|
||||||
|
((RetroChessWindow*)parentWidget())->click1= new Tile();
|
||||||
|
temp->setStyleSheet("QLabel {background-color: green;}");
|
||||||
|
((RetroChessWindow*)parentWidget())->click1=temp;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//temp->setStyleSheet("QLabel {background-color: red;}");
|
||||||
|
((RetroChessWindow*)parentWidget())->count=0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//qDebug()<<"Rascel, clicking anywhere";
|
||||||
|
((RetroChessWindow*)parentWidget())->count=0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
else
|
||||||
|
{
|
||||||
|
|
||||||
|
if(temp->tileNum==((RetroChessWindow*)parentWidget())->click1->tileNum)
|
||||||
|
{
|
||||||
|
((RetroChessWindow*)parentWidget())->click1->tileDisplay();
|
||||||
|
((RetroChessWindow*)parentWidget())->disOrange();
|
||||||
|
((RetroChessWindow*)parentWidget())->max=0;
|
||||||
|
((RetroChessWindow*)parentWidget())->count=0;
|
||||||
|
}
|
||||||
|
|
||||||
|
for(i=0;i<((RetroChessWindow*)parentWidget())->max;i++)
|
||||||
|
{
|
||||||
|
if(temp->tileNum==((RetroChessWindow*)parentWidget())->texp[i])
|
||||||
|
{
|
||||||
|
((RetroChessWindow*)parentWidget())->click1->piece=0;
|
||||||
|
temp->piece=1;
|
||||||
|
|
||||||
|
temp->pieceColor=((RetroChessWindow*)parentWidget())->click1->pieceColor;
|
||||||
|
temp->pieceName=((RetroChessWindow*)parentWidget())->click1->pieceName;
|
||||||
|
|
||||||
|
((RetroChessWindow*)parentWidget())->click1->display(((RetroChessWindow*)parentWidget())->click1->pieceName);
|
||||||
|
temp->display(((RetroChessWindow*)parentWidget())->click1->pieceName);
|
||||||
|
|
||||||
|
((RetroChessWindow*)parentWidget())->click1->tileDisplay();
|
||||||
|
temp->tileDisplay();
|
||||||
|
|
||||||
|
retValue=((RetroChessWindow*)parentWidget())->check(((RetroChessWindow*)parentWidget())->click1);
|
||||||
|
/*
|
||||||
|
if(retValue)
|
||||||
|
{
|
||||||
|
tile[wR][wC]->setStyleSheet("QLabel {background-color: red;}");
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
((RetroChessWindow*)parentWidget())->disOrange();
|
||||||
|
|
||||||
|
((RetroChessWindow*)parentWidget())->max=0;
|
||||||
|
|
||||||
|
((RetroChessWindow*)parentWidget())->turn=(((RetroChessWindow*)parentWidget())->turn+1)%2;
|
||||||
|
((RetroChessWindow*)parentWidget())->count=0;
|
||||||
|
}
|
||||||
|
|
||||||
|
else
|
||||||
|
((RetroChessWindow*)parentWidget())->count=1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Tile::tileDisplay()
|
||||||
|
{
|
||||||
|
|
||||||
|
if(this->tileColor)
|
||||||
|
this->setStyleSheet("QLabel {background-color: rgb(120, 120, 90);}:hover{background-color: rgb(170,85,127);}");
|
||||||
|
else
|
||||||
|
this->setStyleSheet("QLabel {background-color: rgb(211, 211, 158);}:hover{background-color: rgb(170,95,127);}");
|
||||||
|
}
|
||||||
|
|
27
plugins/RetroChess/gui/tile.h
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
#ifndef TILE_H
|
||||||
|
#define TILE_H
|
||||||
|
#include <QLabel>
|
||||||
|
#include <QDebug>
|
||||||
|
|
||||||
|
class Tile: public QLabel
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
//Fields
|
||||||
|
int tileColor,piece,pieceColor,row,col,tileNum;
|
||||||
|
char pieceName;
|
||||||
|
|
||||||
|
//Constructors
|
||||||
|
Tile(QWidget* pParent=0, Qt::WindowFlags f=0) : QLabel(pParent, f) {};
|
||||||
|
Tile(const QString& text, QWidget* pParent = 0, Qt::WindowFlags f = 0) : QLabel(text, pParent, f){};
|
||||||
|
|
||||||
|
//Methods
|
||||||
|
void mousePressEvent(QMouseEvent *event);
|
||||||
|
void display(char elem);
|
||||||
|
void tileDisplay();
|
||||||
|
void validate(int c);
|
||||||
|
};
|
||||||
|
|
||||||
|
void validate_tile(int row, int col, int c);
|
||||||
|
|
||||||
|
#endif // TILE_H
|
14
plugins/RetroChess/gui/validation.cpp
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
#include "validation.h"
|
||||||
|
#include <iostream>
|
||||||
|
#include "string"
|
||||||
|
#include "chess.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
validation::validation()
|
||||||
|
{
|
||||||
|
//Nothing here
|
||||||
|
// tile = ((RetroChessWindow*)parentWidget())->tile;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
15
plugins/RetroChess/gui/validation.h
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#ifndef VALIDATION_H
|
||||||
|
#define VALIDATION_H
|
||||||
|
#include "tile.h"
|
||||||
|
|
||||||
|
|
||||||
|
class validation
|
||||||
|
{
|
||||||
|
|
||||||
|
int *tile;
|
||||||
|
|
||||||
|
public:
|
||||||
|
validation();
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // VALIDATION_H
|
57
plugins/RetroChess/interface/rsRetroChess.h
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
/* this is a simple class to make it easy for any part of the plugin to call its services */
|
||||||
|
/****************************************************************
|
||||||
|
* RetroShare is distributed under the following license:
|
||||||
|
*
|
||||||
|
* Copyright (C) 2015
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation; either version 2
|
||||||
|
* of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||||
|
* Boston, MA 02110-1301, USA.
|
||||||
|
****************************************************************/
|
||||||
|
|
||||||
|
// interface class for p3RetroChess service
|
||||||
|
//
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <string>
|
||||||
|
#include <list>
|
||||||
|
#include <vector>
|
||||||
|
#include <retroshare/rstypes.h>
|
||||||
|
|
||||||
|
class RsRetroChess ;
|
||||||
|
extern RsRetroChess *rsRetroChess;
|
||||||
|
|
||||||
|
static const uint32_t CONFIG_TYPE_RetroChess_PLUGIN = 0xe001 ;
|
||||||
|
|
||||||
|
class RsRetroChess
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
virtual void ping_all() = 0;
|
||||||
|
virtual void broadcast_paint(int x, int y) = 0;
|
||||||
|
virtual void msg_all(std::string msg) = 0;
|
||||||
|
virtual void chess_click(std::string peer_id, int col, int row, int count) = 0;
|
||||||
|
virtual void qvm_msg_peer(RsPeerId peerID, QVariantMap data) = 0;
|
||||||
|
virtual void str_msg_peer(RsPeerId peerID, QString strdata) = 0;
|
||||||
|
virtual void raw_msg_peer(RsPeerId peerID, std::string msg) = 0;
|
||||||
|
virtual bool hasInviteFrom(RsPeerId peerID) = 0;
|
||||||
|
virtual bool hasInviteTo(RsPeerId peerID) = 0;
|
||||||
|
virtual void acceptedInvite(RsPeerId peerID) = 0;
|
||||||
|
virtual void gotInvite(RsPeerId peerID) = 0;
|
||||||
|
virtual void sendInvite(RsPeerId peerID) = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
10
plugins/RetroChess/rename_plugin.sh
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
newname=$1
|
||||||
|
oldname="RetroChess"
|
||||||
|
echo "$newname"
|
||||||
|
echo "$oldname"
|
||||||
|
find . -not -path '*/\.*' -type f -print0 | xargs -0 sed -i "s/$oldname/$newname/g"
|
||||||
|
#find . -type f -exec rename "s/$oldname/$newname/' '{}" \;
|
||||||
|
find . | sed -e "p;s/$oldname/$newname/" | xargs -n2 git mv
|
||||||
|
|
||||||
|
echo "now change 0xb00b5 in services/*items.h to a unique value of your choice to identify your plugin!"
|
411
plugins/RetroChess/services/p3RetroChess.cc
Normal file
@ -0,0 +1,411 @@
|
|||||||
|
/****************************************************************
|
||||||
|
* RetroShare is distributed under the following license:
|
||||||
|
*
|
||||||
|
* Copyright (C) 2015
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation; either version 2
|
||||||
|
* of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||||
|
* Boston, MA 02110-1301, USA.
|
||||||
|
****************************************************************/
|
||||||
|
|
||||||
|
#include "util/rsdir.h"
|
||||||
|
#include "retroshare/rsiface.h"
|
||||||
|
#include "pqi/pqibin.h"
|
||||||
|
#include "pqi/pqistore.h"
|
||||||
|
#include "pqi/p3linkmgr.h"
|
||||||
|
#include <serialiser/rsserial.h>
|
||||||
|
#include <rsitems/rsconfigitems.h>
|
||||||
|
|
||||||
|
#include <sstream> // for std::istringstream
|
||||||
|
|
||||||
|
#include "services/p3RetroChess.h"
|
||||||
|
#include "services/rsRetroChessItems.h"
|
||||||
|
|
||||||
|
#include <sys/time.h>
|
||||||
|
|
||||||
|
#include "gui/RetroChessNotify.h"
|
||||||
|
|
||||||
|
|
||||||
|
//#define DEBUG_RetroChess 1
|
||||||
|
|
||||||
|
|
||||||
|
/* DEFINE INTERFACE POINTER! */
|
||||||
|
RsRetroChess *rsRetroChess = NULL;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef WINDOWS_SYS
|
||||||
|
#include <time.h>
|
||||||
|
#include <sys/timeb.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static double getCurrentTS()
|
||||||
|
{
|
||||||
|
|
||||||
|
#ifndef WINDOWS_SYS
|
||||||
|
struct timeval cts_tmp;
|
||||||
|
gettimeofday(&cts_tmp, NULL);
|
||||||
|
double cts = (cts_tmp.tv_sec) + ((double) cts_tmp.tv_usec) / 1000000.0;
|
||||||
|
#else
|
||||||
|
struct _timeb timebuf;
|
||||||
|
_ftime( &timebuf);
|
||||||
|
double cts = (timebuf.time) + ((double) timebuf.millitm) / 1000.0;
|
||||||
|
#endif
|
||||||
|
return cts;
|
||||||
|
}
|
||||||
|
|
||||||
|
static uint64_t convertTsTo64bits(double ts)
|
||||||
|
{
|
||||||
|
uint32_t secs = (uint32_t) ts;
|
||||||
|
uint32_t usecs = (uint32_t) ((ts - (double) secs) * 1000000);
|
||||||
|
uint64_t bits = (((uint64_t) secs) << 32) + usecs;
|
||||||
|
return bits;
|
||||||
|
}
|
||||||
|
|
||||||
|
static double convert64bitsToTs(uint64_t bits)
|
||||||
|
{
|
||||||
|
uint32_t usecs = (uint32_t) (bits & 0xffffffff);
|
||||||
|
uint32_t secs = (uint32_t) ((bits >> 32) & 0xffffffff);
|
||||||
|
double ts = (secs) + ((double) usecs) / 1000000.0;
|
||||||
|
|
||||||
|
return ts;
|
||||||
|
}
|
||||||
|
|
||||||
|
p3RetroChess::p3RetroChess(RsPluginHandler *handler,RetroChessNotify *notifier)
|
||||||
|
: RsPQIService(RS_SERVICE_TYPE_RetroChess_PLUGIN,0,handler), mRetroChessMtx("p3RetroChess"), mServiceControl(handler->getServiceControl()) , mNotify(notifier)
|
||||||
|
{
|
||||||
|
addSerialType(new RsRetroChessSerialiser());
|
||||||
|
|
||||||
|
|
||||||
|
//plugin default configuration
|
||||||
|
|
||||||
|
}
|
||||||
|
RsServiceInfo p3RetroChess::getServiceInfo()
|
||||||
|
{
|
||||||
|
const std::string TURTLE_APP_NAME = "RetroChess";
|
||||||
|
const uint16_t TURTLE_APP_MAJOR_VERSION = 1;
|
||||||
|
const uint16_t TURTLE_APP_MINOR_VERSION = 0;
|
||||||
|
const uint16_t TURTLE_MIN_MAJOR_VERSION = 1;
|
||||||
|
const uint16_t TURTLE_MIN_MINOR_VERSION = 0;
|
||||||
|
|
||||||
|
return RsServiceInfo(RS_SERVICE_TYPE_RetroChess_PLUGIN,
|
||||||
|
TURTLE_APP_NAME,
|
||||||
|
TURTLE_APP_MAJOR_VERSION,
|
||||||
|
TURTLE_APP_MINOR_VERSION,
|
||||||
|
TURTLE_MIN_MAJOR_VERSION,
|
||||||
|
TURTLE_MIN_MINOR_VERSION);
|
||||||
|
}
|
||||||
|
|
||||||
|
int p3RetroChess::tick()
|
||||||
|
{
|
||||||
|
#ifdef DEBUG_RetroChess
|
||||||
|
std::cerr << "ticking p3RetroChess" << std::endl;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//processIncoming();
|
||||||
|
//sendPackets();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int p3RetroChess::status()
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
#include<qjsondocument.h>
|
||||||
|
void p3RetroChess::str_msg_peer(RsPeerId peerID, QString strdata){
|
||||||
|
QVariantMap map;
|
||||||
|
map.insert("type", "chat");
|
||||||
|
map.insert("message", strdata);
|
||||||
|
|
||||||
|
qvm_msg_peer(peerID,map);
|
||||||
|
}
|
||||||
|
|
||||||
|
void p3RetroChess::qvm_msg_peer(RsPeerId peerID, QVariantMap data){
|
||||||
|
QJsonDocument jsondoc = QJsonDocument::fromVariant(data);
|
||||||
|
std::string msg = jsondoc.toJson().toStdString();
|
||||||
|
raw_msg_peer(peerID, msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
void p3RetroChess::chess_click(std::string peer_id, int col, int row, int count)
|
||||||
|
{
|
||||||
|
QVariantMap map;
|
||||||
|
map.insert("type", "chessclick");
|
||||||
|
map.insert("col", col);
|
||||||
|
map.insert("row", row);
|
||||||
|
map.insert("count", count);
|
||||||
|
|
||||||
|
RsPeerId peerID = RsPeerId(peer_id);
|
||||||
|
qvm_msg_peer(peerID,map);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
bool p3RetroChess::hasInviteFrom(RsPeerId peerID)
|
||||||
|
{
|
||||||
|
return invitesFrom.find(peerID)!=invitesFrom.end();
|
||||||
|
}
|
||||||
|
bool p3RetroChess::hasInviteTo(RsPeerId peerID)
|
||||||
|
{
|
||||||
|
return invitesTo.find(peerID)!=invitesTo.end();
|
||||||
|
}
|
||||||
|
|
||||||
|
void p3RetroChess::acceptedInvite(RsPeerId peerID)
|
||||||
|
{
|
||||||
|
std::set<RsPeerId>::iterator it =invitesTo.find(peerID);
|
||||||
|
if (it != invitesTo.end()){
|
||||||
|
invitesTo.erase(it);
|
||||||
|
}
|
||||||
|
|
||||||
|
it =invitesFrom.find(peerID);
|
||||||
|
if (it != invitesFrom.end()){
|
||||||
|
invitesFrom.erase(it);
|
||||||
|
}
|
||||||
|
raw_msg_peer(peerID, "{\"type\":\"chess_accept\"}");
|
||||||
|
}
|
||||||
|
|
||||||
|
void p3RetroChess::gotInvite(RsPeerId peerID)
|
||||||
|
{
|
||||||
|
|
||||||
|
std::set<RsPeerId>::iterator it =invitesFrom.find(peerID);
|
||||||
|
if (it == invitesFrom.end()){
|
||||||
|
invitesFrom.insert(peerID);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void p3RetroChess::sendInvite(RsPeerId peerID)
|
||||||
|
{
|
||||||
|
|
||||||
|
std::set<RsPeerId>::iterator it =invitesTo.find(peerID);
|
||||||
|
if (it == invitesTo.end()){
|
||||||
|
invitesTo.insert(peerID);
|
||||||
|
}
|
||||||
|
raw_msg_peer(peerID, "{\"type\":\"chess_invite\"}");
|
||||||
|
}
|
||||||
|
|
||||||
|
/*void p3RetroChess::set_peer(RsPeerId peer)
|
||||||
|
{
|
||||||
|
mPeerID = peer;
|
||||||
|
}*/
|
||||||
|
void p3RetroChess::raw_msg_peer(RsPeerId peerID, std::string msg){
|
||||||
|
std::cout << "MSging: " << peerID.toStdString() << "\n";
|
||||||
|
std::cout << "MSging: " << msg << "\n";
|
||||||
|
/* create the packet */
|
||||||
|
RsRetroChessDataItem *pingPkt = new RsRetroChessDataItem();
|
||||||
|
pingPkt->PeerId(peerID);
|
||||||
|
pingPkt->m_msg = msg;
|
||||||
|
pingPkt->data_size = msg.size();
|
||||||
|
//pingPkt->mSeqNo = mCounter;
|
||||||
|
//pingPkt->mPingTS = convertTsTo64bits(ts);
|
||||||
|
|
||||||
|
//storePingAttempt(*it, ts, mCounter);
|
||||||
|
|
||||||
|
#ifdef DEBUG_RetroChess
|
||||||
|
std::cerr << "p3RetroChess::msg_all() With Packet:";
|
||||||
|
std::cerr << std::endl;
|
||||||
|
pingPkt->print(std::cerr, 10);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
sendItem(pingPkt);
|
||||||
|
}
|
||||||
|
|
||||||
|
void p3RetroChess::msg_all(std::string msg){
|
||||||
|
/* we ping our peers */
|
||||||
|
//if(!mServiceControl)
|
||||||
|
// return ;
|
||||||
|
|
||||||
|
//std::set<RsPeerId> onlineIds;
|
||||||
|
std::list< RsPeerId > onlineIds;
|
||||||
|
// mServiceControl->getPeersConnected(getServiceInfo().mServiceType, onlineIds);
|
||||||
|
rsPeers->getOnlineList(onlineIds);
|
||||||
|
|
||||||
|
double ts = getCurrentTS();
|
||||||
|
|
||||||
|
#ifdef DEBUG_RetroChess
|
||||||
|
std::cerr << "p3RetroChess::msg_all() @ts: " << ts;
|
||||||
|
std::cerr << std::endl;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
std::cout << "READY TO BCast: " << onlineIds.size() << "\n";
|
||||||
|
/* prepare packets */
|
||||||
|
std::list<RsPeerId>::iterator it;
|
||||||
|
for(it = onlineIds.begin(); it != onlineIds.end(); it++)
|
||||||
|
{
|
||||||
|
str_msg_peer(RsPeerId(*it),QString::fromStdString(msg));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void p3RetroChess::ping_all(){
|
||||||
|
//TODO ping all!
|
||||||
|
}
|
||||||
|
|
||||||
|
void p3RetroChess::broadcast_paint(int x, int y)
|
||||||
|
{
|
||||||
|
std::list< RsPeerId > onlineIds;
|
||||||
|
// mServiceControl->getPeersConnected(getServiceInfo().mServiceType, onlineIds);
|
||||||
|
rsPeers->getOnlineList(onlineIds);
|
||||||
|
|
||||||
|
double ts = getCurrentTS();
|
||||||
|
|
||||||
|
|
||||||
|
std::cout << "READY TO PAINT: " << onlineIds.size() << "\n";
|
||||||
|
/* prepare packets */
|
||||||
|
std::list<RsPeerId>::iterator it;
|
||||||
|
for(it = onlineIds.begin(); it != onlineIds.end(); it++)
|
||||||
|
{
|
||||||
|
|
||||||
|
std::cout << "painting to: " << (*it).toStdString() << "\n";
|
||||||
|
QVariantMap map;
|
||||||
|
map.insert("type", "paint");
|
||||||
|
map.insert("x", x);
|
||||||
|
map.insert("y", y);
|
||||||
|
|
||||||
|
qvm_msg_peer(RsPeerId(*it),map);
|
||||||
|
/* create the packet */
|
||||||
|
//TODO send paint packets
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//TODO mNotify->notifyReceivedPaint(item->PeerId(), item->x,item->y);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void p3RetroChess::handleData(RsRetroChessDataItem *item)
|
||||||
|
{
|
||||||
|
RsStackMutex stack(mRetroChessMtx); /****** LOCKED MUTEX *******/
|
||||||
|
|
||||||
|
// store the data in a queue.
|
||||||
|
|
||||||
|
|
||||||
|
mNotify->notifyReceivedMsg(item->PeerId(), QString::fromStdString(item->m_msg));
|
||||||
|
}
|
||||||
|
|
||||||
|
bool p3RetroChess::recvItem(RsItem *item)
|
||||||
|
{
|
||||||
|
std::cout << "recvItem type: " << item->PacketSubType() << "\n";
|
||||||
|
/* pass to specific handler */
|
||||||
|
bool keep = false ;
|
||||||
|
|
||||||
|
switch(item->PacketSubType())
|
||||||
|
{
|
||||||
|
case RS_PKT_SUBTYPE_RetroChess_DATA:
|
||||||
|
handleData(dynamic_cast<RsRetroChessDataItem*>(item));
|
||||||
|
keep = true ;
|
||||||
|
break;
|
||||||
|
/*case RS_PKT_SUBTYPE_RetroChess_INVITE:
|
||||||
|
if (invites.find(item->PeerId()!=invites.end())){
|
||||||
|
invites.insert(item->PeerId());
|
||||||
|
}
|
||||||
|
mNotify->
|
||||||
|
|
||||||
|
//keep = true ;
|
||||||
|
break;*/
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* clean up */
|
||||||
|
if(!keep)
|
||||||
|
delete item;
|
||||||
|
return true ;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
RsTlvKeyValue p3RetroChess::push_int_value(const std::string& key,int value)
|
||||||
|
{
|
||||||
|
RsTlvKeyValue kv ;
|
||||||
|
kv.key = key ;
|
||||||
|
rs_sprintf(kv.value, "%d", value);
|
||||||
|
|
||||||
|
return kv ;
|
||||||
|
}
|
||||||
|
int p3RetroChess::pop_int_value(const std::string& s)
|
||||||
|
{
|
||||||
|
std::istringstream is(s) ;
|
||||||
|
|
||||||
|
int val ;
|
||||||
|
is >> val ;
|
||||||
|
|
||||||
|
return val ;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool p3RetroChess::saveList(bool& cleanup, std::list<RsItem*>& lst)
|
||||||
|
{
|
||||||
|
cleanup = true ;
|
||||||
|
|
||||||
|
RsConfigKeyValueSet *vitem = new RsConfigKeyValueSet ;
|
||||||
|
|
||||||
|
/*vitem->tlvkvs.pairs.push_back(push_int_value("P3RetroChess_CONFIG_ATRANSMIT",_atransmit)) ;
|
||||||
|
vitem->tlvkvs.pairs.push_back(push_int_value("P3RetroChess_CONFIG_VOICEHOLD",_voice_hold)) ;
|
||||||
|
vitem->tlvkvs.pairs.push_back(push_int_value("P3RetroChess_CONFIG_VADMIN" ,_vadmin)) ;
|
||||||
|
vitem->tlvkvs.pairs.push_back(push_int_value("P3RetroChess_CONFIG_VADMAX" ,_vadmax)) ;
|
||||||
|
vitem->tlvkvs.pairs.push_back(push_int_value("P3RetroChess_CONFIG_NOISE_SUP",_noise_suppress)) ;
|
||||||
|
vitem->tlvkvs.pairs.push_back(push_int_value("P3RetroChess_CONFIG_MIN_LOUDN",_min_loudness)) ;
|
||||||
|
vitem->tlvkvs.pairs.push_back(push_int_value("P3RetroChess_CONFIG_ECHO_CNCL",_echo_cancel)) ;*/
|
||||||
|
|
||||||
|
lst.push_back(vitem) ;
|
||||||
|
|
||||||
|
return true ;
|
||||||
|
}
|
||||||
|
bool p3RetroChess::loadList(std::list<RsItem*>& load)
|
||||||
|
{
|
||||||
|
for(std::list<RsItem*>::const_iterator it(load.begin());it!=load.end();++it)
|
||||||
|
{
|
||||||
|
#ifdef P3TURTLE_DEBUG
|
||||||
|
assert(item!=NULL) ;
|
||||||
|
#endif
|
||||||
|
RsConfigKeyValueSet *vitem = dynamic_cast<RsConfigKeyValueSet*>(*it) ;
|
||||||
|
/*
|
||||||
|
if(vitem != NULL)
|
||||||
|
for(std::list<RsTlvKeyValue>::const_iterator kit = vitem->tlvkvs.pairs.begin(); kit != vitem->tlvkvs.pairs.end(); ++kit)
|
||||||
|
if(kit->key == "P3RetroChess_CONFIG_ATRANSMIT")
|
||||||
|
_atransmit = pop_int_value(kit->value) ;
|
||||||
|
else if(kit->key == "P3RetroChess_CONFIG_VOICEHOLD")
|
||||||
|
_voice_hold = pop_int_value(kit->value) ;
|
||||||
|
else if(kit->key == "P3RetroChess_CONFIG_VADMIN")
|
||||||
|
_vadmin = pop_int_value(kit->value) ;
|
||||||
|
else if(kit->key == "P3RetroChess_CONFIG_VADMAX")
|
||||||
|
_vadmax = pop_int_value(kit->value) ;
|
||||||
|
else if(kit->key == "P3RetroChess_CONFIG_NOISE_SUP")
|
||||||
|
_noise_suppress = pop_int_value(kit->value) ;
|
||||||
|
else if(kit->key == "P3RetroChess_CONFIG_MIN_LOUDN")
|
||||||
|
_min_loudness = pop_int_value(kit->value) ;
|
||||||
|
else if(kit->key == "P3RetroChess_CONFIG_ECHO_CNCL")
|
||||||
|
_echo_cancel = pop_int_value(kit->value) ;
|
||||||
|
|
||||||
|
delete vitem ;
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
|
return true ;
|
||||||
|
}
|
||||||
|
|
||||||
|
RsSerialiser *p3RetroChess::setupSerialiser()
|
||||||
|
{
|
||||||
|
RsSerialiser *rsSerialiser = new RsSerialiser();
|
||||||
|
rsSerialiser->addSerialType(new RsRetroChessSerialiser());
|
||||||
|
rsSerialiser->addSerialType(new RsGeneralConfigSerialiser());
|
||||||
|
|
||||||
|
return rsSerialiser ;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
120
plugins/RetroChess/services/p3RetroChess.h
Normal file
@ -0,0 +1,120 @@
|
|||||||
|
/* this handles the networking service of this plugin */
|
||||||
|
/****************************************************************
|
||||||
|
* RetroShare is distributed under the following license:
|
||||||
|
*
|
||||||
|
* Copyright (C) 2015
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation; either version 2
|
||||||
|
* of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||||
|
* Boston, MA 02110-1301, USA.
|
||||||
|
****************************************************************/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <list>
|
||||||
|
#include <string>
|
||||||
|
#include <QVariantMap>
|
||||||
|
|
||||||
|
#include "services/rsRetroChessItems.h"
|
||||||
|
#include "services/p3service.h"
|
||||||
|
#include "serialiser/rstlvbase.h"
|
||||||
|
#include "rsitems/rsconfigitems.h"
|
||||||
|
#include "plugins/rspqiservice.h"
|
||||||
|
#include <interface/rsRetroChess.h>
|
||||||
|
|
||||||
|
class p3LinkMgr;
|
||||||
|
class RetroChessNotify ;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//!The RS VoIP Test service.
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* This is only used to test Latency for the moment.
|
||||||
|
*/
|
||||||
|
|
||||||
|
class p3RetroChess: public RsPQIService, public RsRetroChess
|
||||||
|
// Maybe we inherit from these later - but not needed for now.
|
||||||
|
//, public p3Config, public pqiMonitor
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
p3RetroChess(RsPluginHandler *cm,RetroChessNotify *);
|
||||||
|
|
||||||
|
/***** overloaded from rsRetroChess *****/
|
||||||
|
|
||||||
|
|
||||||
|
/***** overloaded from p3Service *****/
|
||||||
|
/*!
|
||||||
|
* This retrieves all chat msg items and also (important!)
|
||||||
|
* processes chat-status items that are in service item queue. chat msg item requests are also processed and not returned
|
||||||
|
* (important! also) notifications sent to notify base on receipt avatar, immediate status and custom status
|
||||||
|
* : notifyCustomState, notifyChatStatus, notifyPeerHasNewAvatar
|
||||||
|
* @see NotifyBase
|
||||||
|
*/
|
||||||
|
virtual int tick();
|
||||||
|
virtual int status();
|
||||||
|
virtual bool recvItem(RsItem *item);
|
||||||
|
|
||||||
|
/*************** pqiMonitor callback ***********************/
|
||||||
|
//virtual void statusChange(const std::list<pqipeer> &plist);
|
||||||
|
|
||||||
|
|
||||||
|
/************* from p3Config *******************/
|
||||||
|
virtual RsSerialiser *setupSerialiser() ;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* chat msg items and custom status are saved
|
||||||
|
*/
|
||||||
|
virtual bool saveList(bool& cleanup, std::list<RsItem*>&) ;
|
||||||
|
virtual bool loadList(std::list<RsItem*>& load) ;
|
||||||
|
virtual std::string configurationFileName() const { return "RetroChess.cfg" ; }
|
||||||
|
|
||||||
|
virtual RsServiceInfo getServiceInfo() ;
|
||||||
|
|
||||||
|
void ping_all();
|
||||||
|
|
||||||
|
void broadcast_paint(int x, int y);
|
||||||
|
void msg_all(std::string msg);
|
||||||
|
void str_msg_peer(RsPeerId peerID, QString strdata);
|
||||||
|
void raw_msg_peer(RsPeerId peerID, std::string msg);
|
||||||
|
void qvm_msg_peer(RsPeerId peerID, QVariantMap data);
|
||||||
|
|
||||||
|
void chess_click(std::string peer_id, int col, int row, int count);
|
||||||
|
//void set_peer(RsPeerId peer);
|
||||||
|
|
||||||
|
bool hasInviteFrom(RsPeerId peerID);
|
||||||
|
bool hasInviteTo(RsPeerId peerID);
|
||||||
|
void gotInvite(RsPeerId peerID);
|
||||||
|
void acceptedInvite(RsPeerId peerID);
|
||||||
|
void sendInvite(RsPeerId peerID);
|
||||||
|
private:
|
||||||
|
|
||||||
|
|
||||||
|
std::set<RsPeerId> invitesTo;
|
||||||
|
std::set<RsPeerId> invitesFrom;
|
||||||
|
void handleData(RsRetroChessDataItem*) ;
|
||||||
|
|
||||||
|
RsMutex mRetroChessMtx;
|
||||||
|
|
||||||
|
//RsPeerId mPeerID;
|
||||||
|
|
||||||
|
|
||||||
|
static RsTlvKeyValue push_int_value(const std::string& key,int value) ;
|
||||||
|
static int pop_int_value(const std::string& s) ;
|
||||||
|
|
||||||
|
|
||||||
|
RsServiceControl *mServiceControl;
|
||||||
|
RetroChessNotify *mNotify ;
|
||||||
|
|
||||||
|
};
|
175
plugins/RetroChess/services/rsRetroChessItems.cc
Normal file
@ -0,0 +1,175 @@
|
|||||||
|
/****************************************************************
|
||||||
|
* RetroShare is distributed under the following license:
|
||||||
|
*
|
||||||
|
* Copyright (C) 2015
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation; either version 2
|
||||||
|
* of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||||
|
* Boston, MA 02110-1301, USA.
|
||||||
|
****************************************************************/
|
||||||
|
|
||||||
|
#include <stdexcept>
|
||||||
|
#include "serialiser/rsbaseserial.h"
|
||||||
|
#include "serialiser/rstlvbase.h"
|
||||||
|
|
||||||
|
#include "services/rsRetroChessItems.h"
|
||||||
|
|
||||||
|
/***
|
||||||
|
#define RSSERIAL_DEBUG 1
|
||||||
|
***/
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
#define HOLLERITH_LEN_SPEC 4
|
||||||
|
/*************************************************************************/
|
||||||
|
|
||||||
|
std::ostream& RsRetroChessDataItem::print(std::ostream &out, uint16_t indent)
|
||||||
|
{
|
||||||
|
printRsItemBase(out, "RsRetroChessDataItem", indent);
|
||||||
|
uint16_t int_Indent = indent + 2;
|
||||||
|
printIndent(out, int_Indent);
|
||||||
|
out << "flags: " << flags << std::endl;
|
||||||
|
|
||||||
|
printIndent(out, int_Indent);
|
||||||
|
out << "data size: " << std::hex << data_size << std::dec << std::endl;
|
||||||
|
|
||||||
|
printRsItemEnd(out, "RsRetroChessDataItem", indent);
|
||||||
|
return out;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*************************************************************************/
|
||||||
|
uint32_t RsRetroChessDataItem::serial_size() const
|
||||||
|
{
|
||||||
|
uint32_t s = 8; /* header */
|
||||||
|
s += 4; /* flags */
|
||||||
|
s += 4; /* data_size */
|
||||||
|
//s += m_msg.length()+HOLLERITH_LEN_SPEC; /* data */
|
||||||
|
s += getRawStringSize(m_msg);
|
||||||
|
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* serialise the data to the buffer */
|
||||||
|
bool RsRetroChessDataItem::serialise(void *data, uint32_t& pktsize)
|
||||||
|
{
|
||||||
|
uint32_t tlvsize = serial_size() ;
|
||||||
|
uint32_t offset = 0;
|
||||||
|
|
||||||
|
if (pktsize < tlvsize)
|
||||||
|
return false; /* not enough space */
|
||||||
|
|
||||||
|
pktsize = tlvsize;
|
||||||
|
|
||||||
|
bool ok = true;
|
||||||
|
|
||||||
|
ok &= setRsItemHeader(data, tlvsize, PacketId(), tlvsize);
|
||||||
|
|
||||||
|
#ifdef RSSERIAL_DEBUG
|
||||||
|
std::cerr << "RsRetroChessSerialiser::serialiseRetroChessDataItem() Header: " << ok << std::endl;
|
||||||
|
std::cerr << "RsRetroChessSerialiser::serialiseRetroChessDataItem() Size: " << tlvsize << std::endl;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* skip the header */
|
||||||
|
offset += 8;
|
||||||
|
|
||||||
|
/* add mandatory parts first */
|
||||||
|
ok &= setRawUInt32(data, tlvsize, &offset, flags);
|
||||||
|
ok &= setRawUInt32(data, tlvsize, &offset, data_size);
|
||||||
|
|
||||||
|
|
||||||
|
ok &= setRawString(data, tlvsize, &offset, m_msg );
|
||||||
|
std::cout << "string sizes: " << getRawStringSize(m_msg) << " OR " << m_msg.size() << "\n";
|
||||||
|
|
||||||
|
if (offset != tlvsize)
|
||||||
|
{
|
||||||
|
ok = false;
|
||||||
|
std::cerr << "RsRetroChessSerialiser::serialiseRetroChessPingItem() Size Error! " << std::endl;
|
||||||
|
std::cerr << "expected " << tlvsize << " got " << offset << std::endl;
|
||||||
|
std::cerr << "m_msg looks like " << m_msg << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ok;
|
||||||
|
}
|
||||||
|
/* serialise the data to the buffer */
|
||||||
|
|
||||||
|
/*************************************************************************/
|
||||||
|
/*************************************************************************/
|
||||||
|
|
||||||
|
RsRetroChessDataItem::RsRetroChessDataItem(void *data, uint32_t pktsize)
|
||||||
|
: RsRetroChessItem(RS_PKT_SUBTYPE_RetroChess_DATA)
|
||||||
|
{
|
||||||
|
/* get the type and size */
|
||||||
|
uint32_t rstype = getRsItemId(data);
|
||||||
|
uint32_t rssize = getRsItemSize(data);
|
||||||
|
|
||||||
|
uint32_t offset = 0;
|
||||||
|
|
||||||
|
if ((RS_PKT_VERSION_SERVICE != getRsItemVersion(rstype)) || (RS_SERVICE_TYPE_RetroChess_PLUGIN != getRsItemService(rstype)) || (RS_PKT_SUBTYPE_RetroChess_DATA != getRsItemSubType(rstype)))
|
||||||
|
throw std::runtime_error("Wrong packet subtype") ;
|
||||||
|
|
||||||
|
if (pktsize < rssize) /* check size */
|
||||||
|
throw std::runtime_error("Not enough space") ;
|
||||||
|
|
||||||
|
bool ok = true;
|
||||||
|
|
||||||
|
/* skip the header */
|
||||||
|
offset += 8;
|
||||||
|
|
||||||
|
/* get mandatory parts first */
|
||||||
|
ok &= getRawUInt32(data, rssize, &offset, &flags);
|
||||||
|
ok &= getRawUInt32(data, rssize, &offset, &data_size);
|
||||||
|
|
||||||
|
|
||||||
|
ok &= getRawString(data, rssize, &offset, m_msg );
|
||||||
|
|
||||||
|
if (offset != rssize)
|
||||||
|
throw std::runtime_error("Serialization error.") ;
|
||||||
|
|
||||||
|
if (!ok)
|
||||||
|
throw std::runtime_error("Serialization error.") ;
|
||||||
|
}
|
||||||
|
/*************************************************************************/
|
||||||
|
|
||||||
|
RsItem* RsRetroChessSerialiser::deserialise(void *data, uint32_t *pktsize)
|
||||||
|
{
|
||||||
|
#ifdef RSSERIAL_DEBUG
|
||||||
|
std::cerr << "RsRetroChessSerialiser::deserialise()" << std::endl;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* get the type and size */
|
||||||
|
uint32_t rstype = getRsItemId(data);
|
||||||
|
|
||||||
|
if ((RS_PKT_VERSION_SERVICE != getRsItemVersion(rstype)) || (RS_SERVICE_TYPE_RetroChess_PLUGIN != getRsItemService(rstype)))
|
||||||
|
return NULL ;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
switch(getRsItemSubType(rstype))
|
||||||
|
{
|
||||||
|
case RS_PKT_SUBTYPE_RetroChess_DATA: return new RsRetroChessDataItem(data, *pktsize);
|
||||||
|
|
||||||
|
default:
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch(std::exception& e)
|
||||||
|
{
|
||||||
|
std::cerr << "RsRetroChessSerialiser: deserialization error: " << e.what() << std::endl;
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*************************************************************************/
|
||||||
|
|
125
plugins/RetroChess/services/rsRetroChessItems.h
Normal file
@ -0,0 +1,125 @@
|
|||||||
|
/* this describes the datatypes sent over the network, and how to (de)serialise them */
|
||||||
|
/****************************************************************
|
||||||
|
* RetroShare is distributed under the following license:
|
||||||
|
*
|
||||||
|
* Copyright (C) 2015
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation; either version 2
|
||||||
|
* of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||||
|
* Boston, MA 02110-1301, USA.
|
||||||
|
****************************************************************/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
/*
|
||||||
|
* libretroshare/src/serialiser: rsRetroChessItems.h
|
||||||
|
*
|
||||||
|
* RetroShare Serialiser.
|
||||||
|
*
|
||||||
|
* Copyright 2011 by Robert Fernie.
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Library General Public
|
||||||
|
* License Version 2 as published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This library is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Library General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Library General Public
|
||||||
|
* License along with this library; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
||||||
|
* USA.
|
||||||
|
*
|
||||||
|
* Please report all bugs and problems to "retroshare@lunamutt.com".
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <map>
|
||||||
|
|
||||||
|
#include "rsitems/rsserviceids.h"
|
||||||
|
#include "serialiser/rsserial.h"
|
||||||
|
#include "rsitems/rsitem.h"
|
||||||
|
|
||||||
|
|
||||||
|
/**************************************************************************/
|
||||||
|
|
||||||
|
const uint16_t RS_SERVICE_TYPE_RetroChess_PLUGIN = 0xc4e55;
|
||||||
|
|
||||||
|
const uint8_t RS_PKT_SUBTYPE_RetroChess_DATA = 0x01;
|
||||||
|
|
||||||
|
const uint8_t QOS_PRIORITY_RS_RetroChess = 9 ;
|
||||||
|
|
||||||
|
|
||||||
|
class RsRetroChessItem: public RsItem
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
RsRetroChessItem(uint8_t RetroChess_subtype)
|
||||||
|
: RsItem(RS_PKT_VERSION_SERVICE,RS_SERVICE_TYPE_RetroChess_PLUGIN,RetroChess_subtype)
|
||||||
|
{
|
||||||
|
setPriorityLevel(QOS_PRIORITY_RS_RetroChess) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual ~RsRetroChessItem() {};
|
||||||
|
virtual void clear() {};
|
||||||
|
virtual std::ostream& print(std::ostream &out, uint16_t indent = 0) = 0 ;
|
||||||
|
|
||||||
|
virtual bool serialise(void *data,uint32_t& size) = 0 ; // Isn't it better that items can serialise themselves ?
|
||||||
|
virtual uint32_t serial_size() const = 0 ; // deserialise is handled using a constructor
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
class RsRetroChessDataItem: public RsRetroChessItem
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
RsRetroChessDataItem() :RsRetroChessItem(RS_PKT_SUBTYPE_RetroChess_DATA) {}
|
||||||
|
RsRetroChessDataItem(void *data,uint32_t size) ; // de-serialization
|
||||||
|
|
||||||
|
virtual bool serialise(void *data,uint32_t& size) ;
|
||||||
|
virtual uint32_t serial_size() const ;
|
||||||
|
|
||||||
|
virtual ~RsRetroChessDataItem()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
virtual std::ostream& print(std::ostream &out, uint16_t indent = 0);
|
||||||
|
|
||||||
|
uint32_t flags ;
|
||||||
|
uint32_t data_size ;
|
||||||
|
std::string m_msg;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
class RsRetroChessSerialiser: public RsSerialType
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
RsRetroChessSerialiser()
|
||||||
|
:RsSerialType(RS_PKT_VERSION_SERVICE, RS_SERVICE_TYPE_RetroChess_PLUGIN)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
virtual ~RsRetroChessSerialiser() {}
|
||||||
|
|
||||||
|
virtual uint32_t size (RsItem *item)
|
||||||
|
{
|
||||||
|
return dynamic_cast<RsRetroChessItem *>(item)->serial_size() ;
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual bool serialise (RsItem *item, void *data, uint32_t *size)
|
||||||
|
{
|
||||||
|
return dynamic_cast<RsRetroChessItem *>(item)->serialise(data,*size) ;
|
||||||
|
}
|
||||||
|
virtual RsItem *deserialise(void *data, uint32_t *size);
|
||||||
|
};
|
||||||
|
|
||||||
|
/**************************************************************************/
|