Skip to content

Commit 84c2591

Browse files
committed
Added initial framework for netplay on Qt GUI. Still much TODO here.
1 parent 2f2279f commit 84c2591

15 files changed

+1587
-18
lines changed

src/CMakeLists.txt

+22-4
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,12 @@ if ( ${QT} EQUAL 6 )
4040
set( Qt Qt6 )
4141
find_package( Qt6 REQUIRED COMPONENTS Widgets OpenGL OpenGLWidgets)
4242
find_package( Qt6 COMPONENTS Help QUIET)
43+
find_package( Qt6 COMPONENTS Network)
4344
find_package( Qt6 COMPONENTS Qml)
4445
find_package( Qt6 COMPONENTS UiTools)
45-
add_definitions( ${Qt6Widgets_DEFINITIONS} ${Qt6Qml_DEFINITIONS} ${Qt6Help_DEFINITIONS} ${Qt6OpenGLWidgets_DEFINITIONS} )
46+
add_definitions( ${Qt6Widgets_DEFINITIONS} ${Qt6Qml_DEFINITIONS} ${Qt6Network_DEFINITIONS} ${Qt6Help_DEFINITIONS} ${Qt6OpenGLWidgets_DEFINITIONS} )
4647
# add_definitions(${Qt6UiTools_DEFINITIONS}) # Leave ${Qt6UiTools_DEFINITIONS} out as this is causing a build error
47-
include_directories( ${Qt6Widgets_INCLUDE_DIRS} ${Qt6Qml_INCLUDE_DIRS} ${Qt6UiTools_INCLUDE_DIRS} ${Qt6Help_INCLUDE_DIRS} ${Qt6OpenGLWidgets_INCLUDE_DIRS} )
48+
include_directories( ${Qt6Widgets_INCLUDE_DIRS} ${Qt6Qml_INCLUDE_DIRS} ${Qt6UiTools_INCLUDE_DIRS} ${Qt6Network_INCLUDE_DIRS} ${Qt6Help_INCLUDE_DIRS} ${Qt6OpenGLWidgets_INCLUDE_DIRS} )
4849

4950
if (${Qt6Help_FOUND})
5051
message( STATUS "Qt6 Help Module Found")
@@ -55,6 +56,13 @@ if ( ${QT} EQUAL 6 )
5556
message( STATUS "Qt6 Help Module Not Found")
5657
endif()
5758

59+
if (${Qt6Network_FOUND})
60+
message( STATUS "Qt6 Network Module Found")
61+
add_definitions( -D__FCEU_QNETWORK_ENABLE__ )
62+
else()
63+
message( STATUS "Qt6 Network Module Not Found")
64+
endif()
65+
5866
if (${Qt6Qml_FOUND})
5967
message( STATUS "Qt6 Qml Module Found")
6068
add_definitions( -D__FCEU_QSCRIPT_ENABLE__ )
@@ -73,10 +81,11 @@ else()
7381
set( Qt Qt5 )
7482
find_package( Qt5 REQUIRED COMPONENTS Widgets OpenGL)
7583
find_package( Qt5 COMPONENTS Help QUIET)
84+
find_package( Qt5 COMPONENTS Network)
7685
find_package( Qt5 COMPONENTS Qml)
7786
find_package( Qt5 COMPONENTS UiTools)
78-
add_definitions( ${Qt5Widgets_DEFINITIONS} ${Qt5Qml_DEFINITIONS} ${Qt5UiTools_DEFINITIONS} ${Qt5Help_DEFINITIONS} )
79-
include_directories( ${Qt5Widgets_INCLUDE_DIRS} ${Qt5Qml_INCLUDE_DIRS} ${Qt5UiTools_INCLUDE_DIRS} ${Qt5Help_INCLUDE_DIRS} )
87+
add_definitions( ${Qt5Widgets_DEFINITIONS} ${Qt5Qml_DEFINITIONS} ${Qt5UiTools_DEFINITIONS} ${Qt5Network_DEFINITIONS} ${Qt5Help_DEFINITIONS} )
88+
include_directories( ${Qt5Widgets_INCLUDE_DIRS} ${Qt5Qml_INCLUDE_DIRS} ${Qt5UiTools_INCLUDE_DIRS} ${Qt5Network_INCLUDE_DIRS} ${Qt5Help_INCLUDE_DIRS} )
8089

8190
if (${Qt5Help_FOUND})
8291
message( STATUS "Qt5 Help Module Found")
@@ -87,6 +96,13 @@ else()
8796
message( STATUS "Qt5 Help Module Not Found")
8897
endif()
8998

99+
if (${Qt5Network_FOUND})
100+
message( STATUS "Qt5 Network Module Found")
101+
add_definitions( -D__FCEU_NETWORK_ENABLE__ )
102+
else()
103+
message( STATUS "Qt5 Network Module Not Found")
104+
endif()
105+
90106
if (${Qt5Qml_FOUND})
91107
message( STATUS "Qt5 Qml Module Found")
92108
add_definitions( -D__FCEU_QSCRIPT_ENABLE__ )
@@ -661,6 +677,7 @@ set(SRC_DRIVERS_SDL
661677
${CMAKE_CURRENT_SOURCE_DIR}/drivers/Qt/sdl-joystick.cpp
662678
${CMAKE_CURRENT_SOURCE_DIR}/drivers/Qt/sdl-throttle.cpp
663679
${CMAKE_CURRENT_SOURCE_DIR}/drivers/Qt/unix-netplay.cpp
680+
${CMAKE_CURRENT_SOURCE_DIR}/drivers/Qt/NetPlay.cpp
664681
${CMAKE_CURRENT_SOURCE_DIR}/drivers/Qt/AviRecord.cpp
665682
${CMAKE_CURRENT_SOURCE_DIR}/drivers/Qt/AviRiffViewer.cpp
666683
${CMAKE_CURRENT_SOURCE_DIR}/drivers/Qt/avi/avi-utils.cpp
@@ -733,6 +750,7 @@ target_link_libraries( ${APP_NAME}
733750
${${Qt}Help_LIBRARIES}
734751
${${Qt}Qml_LIBRARIES}
735752
${${Qt}UiTools_LIBRARIES}
753+
${${Qt}Network_LIBRARIES}
736754
${${Qt}OpenGL_LIBRARIES}
737755
${${Qt}OpenGLWidgets_LIBRARIES}
738756
${OPENGL_LDFLAGS}

src/driver.h

+2
Original file line numberDiff line numberDiff line change
@@ -275,6 +275,8 @@ void FCEUI_SetEmulationPaused(int val);
275275
void FCEUI_ToggleEmulationPause();
276276
void FCEUI_PauseForDuration(int secs);
277277
int FCEUI_PauseFramesRemaining();
278+
void FCEUI_SetNetPlayPause(bool value);
279+
bool FCEUI_GetNetPlayPause();
278280

279281
//indicates whether input aids should be drawn (such as crosshairs, etc; usually in fullscreen mode)
280282
bool FCEUD_ShouldDrawInputAids();

src/drivers/Qt/ConsoleWindow.cpp

+56-7
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@
107107
#include "Qt/RamSearch.h"
108108
#include "Qt/keyscan.h"
109109
#include "Qt/nes_shm.h"
110+
#include "Qt/NetPlay.h"
110111
#include "Qt/TasEditor/TasEditorWindow.h"
111112

112113
#ifdef __APPLE__
@@ -926,13 +927,14 @@ void consoleWin_t::createMainMenu(void)
926927
menubar->setNativeMenuBar( useNativeMenuBar ? true : false );
927928

928929
// Top Level Menu Iterms
929-
fileMenu = menubar->addMenu(tr("&File"));
930-
movieMenu = menubar->addMenu(tr("&Movie"));
931-
optMenu = menubar->addMenu(tr("&Options"));
932-
emuMenu = menubar->addMenu(tr("&Emulation"));
933-
toolsMenu = menubar->addMenu(tr("&Tools"));
934-
debugMenu = menubar->addMenu(tr("&Debug"));
935-
helpMenu = menubar->addMenu(tr("&Help"));
930+
fileMenu = menubar->addMenu(tr("&File"));
931+
movieMenu = menubar->addMenu(tr("&Movie"));
932+
optMenu = menubar->addMenu(tr("&Options"));
933+
emuMenu = menubar->addMenu(tr("&Emulation"));
934+
netPlayMenu = menubar->addMenu(tr("&NetPlay"));
935+
toolsMenu = menubar->addMenu(tr("&Tools"));
936+
debugMenu = menubar->addMenu(tr("&Debug"));
937+
helpMenu = menubar->addMenu(tr("&Help"));
936938

937939
//-----------------------------------------------------------------------
938940
// File
@@ -1657,6 +1659,29 @@ void consoleWin_t::createMainMenu(void)
16571659

16581660
subMenu->addAction(act);
16591661

1662+
//-----------------------------------------------------------------------
1663+
// NetPlay
1664+
1665+
connect( netPlayMenu, SIGNAL(aboutToShow(void)), this, SLOT(mainMenuOpen(void)) );
1666+
connect( netPlayMenu, SIGNAL(aboutToHide(void)), this, SLOT(mainMenuClose(void)) );
1667+
1668+
// NetPlay -> Host
1669+
act = new QAction(tr("&Host"), this);
1670+
//act->setShortcut( QKeySequence(tr("Shift+F7")));
1671+
act->setStatusTip(tr("Host Game Window"));
1672+
connect(act, SIGNAL(triggered()), this, SLOT(openNetPlayHostWindow(void)) );
1673+
1674+
netPlayMenu->addAction(act);
1675+
1676+
// NetPlay -> Join
1677+
act = new QAction(tr("&Join"), this);
1678+
//act->setShortcut( QKeySequence(tr("Shift+F7")));
1679+
act->setStatusTip(tr("Join Game Window"));
1680+
connect(act, SIGNAL(triggered()), this, SLOT(openNetPlayJoinWindow(void)) );
1681+
1682+
netPlayMenu->addAction(act);
1683+
1684+
netPlayMenu->setEnabled(false);
16601685
//-----------------------------------------------------------------------
16611686
// Tools
16621687

@@ -3112,6 +3137,28 @@ void consoleWin_t::openPaletteEditorWin(void)
31123137
win->show();
31133138
}
31143139

3140+
void consoleWin_t::openNetPlayHostWindow(void)
3141+
{
3142+
NetPlayHostDialog *win;
3143+
3144+
//printf("Open NetPlay Host Window\n");
3145+
3146+
win = new NetPlayHostDialog(this);
3147+
3148+
win->show();
3149+
}
3150+
3151+
void consoleWin_t::openNetPlayJoinWindow(void)
3152+
{
3153+
NetPlayJoinDialog *win;
3154+
3155+
//printf("Open NetPlay Join Window\n");
3156+
3157+
win = new NetPlayJoinDialog(this);
3158+
3159+
win->show();
3160+
}
3161+
31153162
void consoleWin_t::openAviRiffViewer(void)
31163163
{
31173164
AviRiffViewerDialog *win;
@@ -4692,6 +4739,8 @@ void consoleWin_t::updatePeriodic(void)
46924739
closeRequested = false;
46934740
}
46944741

4742+
NetPlayPeriodicUpdate();
4743+
46954744
updateCounter++;
46964745

46974746
#ifdef __FCEU_PROFILER_ENABLE__

src/drivers/Qt/ConsoleWindow.h

+3
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,7 @@ class consoleWin_t : public QMainWindow
193193
QMenu *toolsMenu;
194194
QMenu *debugMenu;
195195
QMenu *movieMenu;
196+
QMenu *netPlayMenu;
196197
QMenu *helpMenu;
197198
QMenu *recentRomMenu;
198199

@@ -351,6 +352,8 @@ class consoleWin_t : public QMainWindow
351352
void openTimingConfWin(void);
352353
void openStateRecorderConfWin(void);
353354
void openPaletteEditorWin(void);
355+
void openNetPlayHostWindow(void);
356+
void openNetPlayJoinWindow(void);
354357
void openAviRiffViewer(void);
355358
void openTimingStatWin(void);
356359
void openMovieOptWin(void);

0 commit comments

Comments
 (0)