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,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
|
||||
"
|
||||
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,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
|
||||
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,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
|
||||
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,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
|
||||
"
|
||||
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);
|
||||
};
|
||||
|
||||
/**************************************************************************/
|